upgini 1.2.53__tar.gz → 1.2.55a1__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.
- {upgini-1.2.53 → upgini-1.2.55a1}/PKG-INFO +1 -1
- upgini-1.2.55a1/src/upgini/__about__.py +1 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/dataset.py +16 -8
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/features_enricher.py +12 -7
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/resource_bundle/strings.properties +1 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/email_utils.py +6 -6
- upgini-1.2.53/src/upgini/__about__.py +0 -1
- {upgini-1.2.53 → upgini-1.2.55a1}/.gitignore +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/LICENSE +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/README.md +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/pyproject.toml +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/ads.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/ads_management/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/ads_management/ads_manager.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/all_operands.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/binary.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/date.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/feature.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/groupby.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/operand.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/unary.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/autofe/vector.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/data_source/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/data_source/data_source_publisher.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/errors.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/http.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/lazy_import.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/mdc/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/mdc/context.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/metadata.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/metrics.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/normalizer/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/normalizer/normalize_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/resource_bundle/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/resource_bundle/exceptions.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/resource_bundle/strings_widget.properties +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/sampler/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/sampler/base.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/sampler/random_under_sampler.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/sampler/utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/search_task.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/spinner.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/Roboto-Regular.ttf +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/__init__.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/base_search_key_detector.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/blocked_time_series.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/country_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/custom_loss_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/cv_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/datetime_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/deduplicate_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/display_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/fallback_progress_bar.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/feature_info.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/features_validator.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/format.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/ip_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/phone_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/postal_code_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/progress_bar.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/sklearn_ext.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/target_utils.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/track_info.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/utils/warning_counter.py +0 -0
- {upgini-1.2.53 → upgini-1.2.55a1}/src/upgini/version_validator.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.2.55a1"
|
|
@@ -587,15 +587,23 @@ class Dataset: # (pd.DataFrame):
|
|
|
587
587
|
if (
|
|
588
588
|
runtime_parameters is not None
|
|
589
589
|
and runtime_parameters.properties is not None
|
|
590
|
-
and "generate_features" in runtime_parameters.properties
|
|
591
590
|
):
|
|
592
|
-
generate_features
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
for
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
591
|
+
if "generate_features" in runtime_parameters.properties:
|
|
592
|
+
generate_features = runtime_parameters.properties["generate_features"].split(",")
|
|
593
|
+
renamed_generate_features = []
|
|
594
|
+
for f in generate_features:
|
|
595
|
+
for new_column, orig_column in self.columns_renaming.items():
|
|
596
|
+
if f == orig_column:
|
|
597
|
+
renamed_generate_features.append(new_column)
|
|
598
|
+
runtime_parameters.properties["generate_features"] = ",".join(renamed_generate_features)
|
|
599
|
+
if "columns_for_online_api" in runtime_parameters.properties:
|
|
600
|
+
columns_for_online_api = runtime_parameters.properties["columns_for_online_api"].split(",")
|
|
601
|
+
renamed_columns_for_online_api = []
|
|
602
|
+
for f in columns_for_online_api:
|
|
603
|
+
for new_column, orig_column in self.columns_renaming.items():
|
|
604
|
+
if f == orig_column:
|
|
605
|
+
renamed_columns_for_online_api.append(new_column)
|
|
606
|
+
runtime_parameters.properties["columns_for_online_api"] = ",".join(renamed_columns_for_online_api)
|
|
599
607
|
|
|
600
608
|
return runtime_parameters
|
|
601
609
|
|
|
@@ -222,6 +222,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
222
222
|
loss: Optional[str] = None,
|
|
223
223
|
detect_missing_search_keys: bool = True,
|
|
224
224
|
generate_features: Optional[List[str]] = None,
|
|
225
|
+
columns_for_online_api: Optional[List[str]] = None,
|
|
225
226
|
round_embeddings: Optional[int] = None,
|
|
226
227
|
logs_enabled: bool = True,
|
|
227
228
|
raise_validation_error: bool = True,
|
|
@@ -268,7 +269,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
268
269
|
self.eval_set: Optional[List[Tuple]] = None
|
|
269
270
|
self.autodetected_search_keys: Dict[str, SearchKey] = {}
|
|
270
271
|
self.imbalanced = False
|
|
271
|
-
self.fit_select_features =
|
|
272
|
+
self.fit_select_features = True
|
|
272
273
|
self.__cached_sampled_datasets: Dict[str, Tuple[pd.DataFrame, pd.DataFrame, pd.Series, Dict, Dict, Dict]] = (
|
|
273
274
|
dict()
|
|
274
275
|
)
|
|
@@ -345,6 +346,9 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
345
346
|
self.logger.error(msg)
|
|
346
347
|
raise ValidationError(msg)
|
|
347
348
|
self.runtime_parameters.properties["round_embeddings"] = round_embeddings
|
|
349
|
+
self.columns_for_online_api = columns_for_online_api
|
|
350
|
+
if columns_for_online_api is not None:
|
|
351
|
+
self.runtime_parameters.properties["columns_for_online_api"] = ",".join(columns_for_online_api)
|
|
348
352
|
maybe_downsampling_limit = self.runtime_parameters.properties.get("downsampling_limit")
|
|
349
353
|
if maybe_downsampling_limit is not None:
|
|
350
354
|
Dataset.FIT_SAMPLE_THRESHOLD = int(maybe_downsampling_limit)
|
|
@@ -2608,17 +2612,18 @@ if response.status_code == 200:
|
|
|
2608
2612
|
checked_generate_features = []
|
|
2609
2613
|
for gen_feature in self.generate_features:
|
|
2610
2614
|
if gen_feature not in x_columns:
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
self.bundle.get("missing_generate_feature").format(gen_feature, x_columns)
|
|
2614
|
-
)
|
|
2615
|
-
else:
|
|
2616
|
-
self.__log_warning(self.bundle.get("missing_generate_feature").format(gen_feature, x_columns))
|
|
2615
|
+
msg = self.bundle.get("missing_generate_feature").format(gen_feature, x_columns)
|
|
2616
|
+
self.__log_warning(msg)
|
|
2617
2617
|
else:
|
|
2618
2618
|
checked_generate_features.append(gen_feature)
|
|
2619
2619
|
self.generate_features = checked_generate_features
|
|
2620
2620
|
self.runtime_parameters.properties["generate_features"] = ",".join(self.generate_features)
|
|
2621
2621
|
|
|
2622
|
+
if self.columns_for_online_api is not None and len(self.columns_for_online_api) > 0:
|
|
2623
|
+
for column in self.columns_for_online_api:
|
|
2624
|
+
if column not in validated_X.columns:
|
|
2625
|
+
raise ValidationError(self.bundle.get("missing_column_for_online_api").format(column))
|
|
2626
|
+
|
|
2622
2627
|
if self.id_columns is not None:
|
|
2623
2628
|
for id_column in self.id_columns:
|
|
2624
2629
|
if id_column not in validated_X.columns:
|
|
@@ -111,6 +111,7 @@ x_is_empty=X is empty
|
|
|
111
111
|
y_is_empty=y is empty
|
|
112
112
|
x_contains_reserved_column_name=Column name {} is reserved. Please rename column and try again
|
|
113
113
|
missing_generate_feature=Feature {} specified in `generate_features` is not present in input columns: {}
|
|
114
|
+
missing_column_for_online_api=Column {} specified in `columns_for_online_api` is not present in input columns: {}
|
|
114
115
|
x_unstable_by_date=Your training sample is unstable in number of rows per date. It is recommended to redesign the training sample
|
|
115
116
|
train_unstable_target=Your training sample contains an unstable target event, PSI = {}. This will lead to unstable scoring on deferred samples. It is recommended to redesign the training sample
|
|
116
117
|
eval_unstable_target=Your training and evaluation samples have a difference in target distribution. PSI = {}. The results will be unstable. It is recommended to redesign the training and evaluation samples
|
|
@@ -116,17 +116,17 @@ class EmailSearchKeyConverter:
|
|
|
116
116
|
else:
|
|
117
117
|
df[self.hem_column] = df[self.hem_column].astype("string").str.lower()
|
|
118
118
|
|
|
119
|
-
del self.search_keys[self.email_column]
|
|
120
|
-
if self.email_column in self.unnest_search_keys:
|
|
121
|
-
|
|
119
|
+
# del self.search_keys[self.email_column]
|
|
120
|
+
# if self.email_column in self.unnest_search_keys:
|
|
121
|
+
# self.unnest_search_keys.remove(self.email_column)
|
|
122
122
|
|
|
123
123
|
one_domain_name = self.email_column + self.ONE_DOMAIN_SUFFIX
|
|
124
124
|
df[one_domain_name] = df[self.email_column].apply(self._email_to_one_domain)
|
|
125
125
|
self.columns_renaming[one_domain_name] = original_email_column
|
|
126
126
|
self.search_keys[one_domain_name] = SearchKey.EMAIL_ONE_DOMAIN
|
|
127
127
|
|
|
128
|
-
if self.email_converted_to_hem:
|
|
129
|
-
|
|
130
|
-
|
|
128
|
+
# if self.email_converted_to_hem:
|
|
129
|
+
# df = df.drop(columns=self.email_column)
|
|
130
|
+
# del self.columns_renaming[self.email_column]
|
|
131
131
|
|
|
132
132
|
return df
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.2.53"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|