classifier-toolkit 0.1.3__tar.gz → 0.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/PKG-INFO +1 -1
  2. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/eda_toolkit.py +12 -4
  3. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/feature_engineering.py +9 -48
  4. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/first_glance.py +1 -1
  5. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/pyproject.toml +1 -1
  6. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/README.md +0 -0
  7. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/__init__.py +0 -0
  8. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/bivariate_analysis.py +0 -0
  9. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/univariate_analysis.py +0 -0
  10. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/visualizations.py +0 -0
  11. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/warnings/__init__.py +0 -0
  12. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/warnings/automated_warnings.py +0 -0
  13. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/eda/warnings/default_warnings.py +0 -0
  14. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/__init__.py +0 -0
  15. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/base.py +0 -0
  16. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/embedded_methods/__init__.py +0 -0
  17. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/embedded_methods/elastic_net.py +0 -0
  18. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/meta_selector.py +0 -0
  19. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/utils/__init__.py +0 -0
  20. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/utils/plottings.py +0 -0
  21. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/utils/scoring.py +0 -0
  22. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/wrapper_methods/__init__.py +0 -0
  23. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/wrapper_methods/rfe.py +0 -0
  24. {classifier_toolkit-0.1.3 → classifier_toolkit-0.1.4}/classifier_toolkit/feature_selection/wrapper_methods/sequential_selection.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: classifier-toolkit
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary:
5
5
  Author: gauthier.marquand
6
6
  Author-email: gauthier.marquand@qonto.com
@@ -206,12 +206,20 @@ class EDAToolkit:
206
206
  self.first_glance.super_vision()
207
207
  self.first_glance.check_duplicates()
208
208
 
209
- def plot_target_evolution(self):
209
+ def plot_target_evolution(self, time_column: str, evolving_numeric: str):
210
210
  """
211
211
  Plot the target balance and evolution over time.
212
+
213
+ Parameters
214
+ ----------
215
+ time_column : str
216
+ The name of the time column.
217
+ evolving_numeric : str
218
+ The name of the numerical column to plot that we want to see the evolution of
219
+ which helps us understanding the behavior of the target column.
212
220
  """
213
221
  self.visualizations.plot_target_balance()
214
- self.visualizations.plot_target_evolution("scheduled_at", "min_balance_3m")
222
+ self.visualizations.plot_target_evolution(time_column, evolving_numeric)
215
223
 
216
224
  def plot_numerical_distributions(self, sub_plots: bool = False):
217
225
  """
@@ -232,7 +240,7 @@ class EDAToolkit:
232
240
  """
233
241
  self.visualizations.plot_categorical_value_counts()
234
242
  self.visualizations.visualize_high_cardinality(
235
- excluded_vars=self.exclusion, id_column=self.id_column
243
+ excluded_columns=self.exclusion, id_column=self.id_column
236
244
  )
237
245
  self.visualizations.visualize_low_cardinality()
238
246
 
@@ -377,7 +385,7 @@ class EDAToolkit:
377
385
  """
378
386
  _, filtered_cramers = self.univariate_analysis.plot_cramers_v(
379
387
  self.numerical_columns,
380
- excluded_vars=self.exclusion,
388
+ excluded_columns=self.exclusion,
381
389
  filter_threshold=threshold_c,
382
390
  )
383
391
 
@@ -364,9 +364,11 @@ class FeatureEngineering:
364
364
  raise ValueError(f"Column {column} not found in transformed data")
365
365
 
366
366
  self.data = updated_data
367
- self._log_transformation(
368
- "apply_transformations", {"columns_to_keep": columns_to_keep}
369
- )
367
+
368
+ for transform in self.transformations:
369
+ if transform["method"] == "normality_transform":
370
+ transform["selected_columns"] = columns_to_keep
371
+
370
372
  return self.data
371
373
 
372
374
  def handle_high_cardinality(
@@ -990,7 +992,10 @@ class FeatureEngineering:
990
992
 
991
993
  self.data = data
992
994
  self.data.info()
993
- self._log_transformation("encoding_categorical", {"method": method})
995
+ self._log_transformation(
996
+ "encoding_categorical",
997
+ {"method": method, "selected_columns": self.encode_list},
998
+ )
994
999
  return self.data
995
1000
 
996
1001
  ####### FEATURE ENGINEERING: OPTIONAL FUNCTIONS #######
@@ -1264,47 +1269,3 @@ class FeatureEngineering:
1264
1269
  return self.data
1265
1270
 
1266
1271
  percentile_capping = apply_winsorization
1267
-
1268
-
1269
- '''
1270
- def apply_winsorization(
1271
- self, selected_columns: List[str], percentile: float = 0.05
1272
- ) -> pd.DataFrame:
1273
- """
1274
- Apply winsorization to numerical columns to limit extreme values.
1275
-
1276
- Parameters
1277
- ----------
1278
- selected_columns : List[str]
1279
- List of columns to apply winsorization to.
1280
- percentile : float, optional
1281
- The percentage of data to be considered as extreme values on each side, by default 0.05.
1282
-
1283
- Returns
1284
- -------
1285
- pd.DataFrame
1286
- DataFrame with winsorized columns.
1287
- """
1288
- if len(selected_columns) == 0:
1289
- selected_columns = self.numerical_columns
1290
-
1291
- for column in selected_columns:
1292
- if column == self.target_column:
1293
- print(f"{column} is the target column. Skipping winsorization.")
1294
- continue
1295
-
1296
- lower_bound = np.percentile(self.data[column], percentile * 100)
1297
- upper_bound = np.percentile(self.data[column], (1 - percentile) * 100)
1298
- self.data[column] = np.clip(self.data[column], lower_bound, upper_bound)
1299
-
1300
- print(f"\nWinsorization applied with {percentile * 100}% capping on each side.")
1301
- print(self.data[selected_columns].describe())
1302
-
1303
- self._log_transformation(
1304
- "winsorization",
1305
- {"selected_columns": selected_columns, "percentile": percentile},
1306
- )
1307
- return self.data
1308
-
1309
- percentile_capping = apply_winsorization
1310
- '''
@@ -112,7 +112,7 @@ values in more detail, please call the see_duplicates method
112
112
  top_n : int, optional
113
113
  Number of top values to display, by default 10.
114
114
  """
115
- for col in self.columns:
115
+ for col in self.categorical_columns:
116
116
  print(Fore.GREEN + f"\nColumn: {col}")
117
117
  value_counts = self.data[col].value_counts().head(top_n)
118
118
  for value, count in value_counts.items():
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "classifier-toolkit"
3
- version = "0.1.3"
3
+ version = "0.1.4"
4
4
  description = ""
5
5
  authors = [
6
6
  "gauthier.marquand <gauthier.marquand@qonto.com>",