upgini 1.2.56a3675.dev1__tar.gz → 1.2.57a1__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.
Potentially problematic release.
This version of upgini might be problematic. Click here for more details.
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/PKG-INFO +1 -1
- upgini-1.2.57a1/src/upgini/__about__.py +1 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/date.py +0 -8
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/feature.py +1 -1
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/dataset.py +16 -8
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/features_enricher.py +12 -7
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/resource_bundle/strings.properties +1 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/email_utils.py +6 -6
- upgini-1.2.56a3675.dev1/src/upgini/__about__.py +0 -1
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/.gitignore +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/LICENSE +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/README.md +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/pyproject.toml +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/ads.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/ads_management/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/ads_management/ads_manager.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/all_operands.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/binary.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/groupby.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/operand.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/unary.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/autofe/vector.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/data_source/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/data_source/data_source_publisher.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/errors.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/http.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/lazy_import.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/mdc/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/mdc/context.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/metadata.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/metrics.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/normalizer/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/normalizer/normalize_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/resource_bundle/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/resource_bundle/exceptions.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/resource_bundle/strings_widget.properties +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/sampler/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/sampler/base.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/sampler/random_under_sampler.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/sampler/utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/search_task.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/spinner.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/Roboto-Regular.ttf +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/__init__.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/base_search_key_detector.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/blocked_time_series.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/country_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/custom_loss_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/cv_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/datetime_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/deduplicate_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/display_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/fallback_progress_bar.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/feature_info.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/features_validator.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/format.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/ip_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/phone_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/postal_code_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/progress_bar.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/sklearn_ext.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/target_utils.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/track_info.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/utils/warning_counter.py +0 -0
- {upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/version_validator.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.2.57a1"
|
|
@@ -64,9 +64,6 @@ class DateDiff(PandasOperand, DateDiffMixin):
|
|
|
64
64
|
return res
|
|
65
65
|
|
|
66
66
|
def calculate_binary(self, left: pd.Series, right: pd.Series) -> pd.Series:
|
|
67
|
-
if left.isna().all() or right.isna().all():
|
|
68
|
-
return pd.Series([None] * len(left))
|
|
69
|
-
|
|
70
67
|
left = self._convert_to_date(left, self.left_unit)
|
|
71
68
|
right = self._convert_to_date(right, self.right_unit)
|
|
72
69
|
diff = self._convert_diff_to_unit(left.dt.date - right.dt.date)
|
|
@@ -145,9 +142,6 @@ class DateListDiff(PandasOperand, DateDiffMixin, ParametrizedOperand):
|
|
|
145
142
|
return cls(aggregation=aggregation)
|
|
146
143
|
|
|
147
144
|
def calculate_binary(self, left: pd.Series, right: pd.Series) -> pd.Series:
|
|
148
|
-
if left.isna().all() or right.isna().all():
|
|
149
|
-
return pd.Series([None] * len(left), dtype=np.float64)
|
|
150
|
-
|
|
151
145
|
left = self._convert_to_date(left, self.left_unit)
|
|
152
146
|
right_mask = right.apply(lambda x: len(x) > 0)
|
|
153
147
|
mask = left.notna() & right.notna() & right_mask
|
|
@@ -236,8 +230,6 @@ class DatePercentileBase(PandasOperand, abc.ABC):
|
|
|
236
230
|
pass
|
|
237
231
|
|
|
238
232
|
def _perc(self, f, bounds):
|
|
239
|
-
if f is None or np.isnan(f):
|
|
240
|
-
return np.nan
|
|
241
233
|
hit = np.where(f >= np.array(bounds))[0]
|
|
242
234
|
if hit.size > 0:
|
|
243
235
|
return np.max(hit) + 1
|
|
@@ -26,7 +26,7 @@ class Column:
|
|
|
26
26
|
return dict()
|
|
27
27
|
|
|
28
28
|
def rename_columns(self, mapping: Dict[str, str]) -> "Column":
|
|
29
|
-
self.name = mapping.get(self.name) or self.name
|
|
29
|
+
self.name = self._unhash(mapping.get(self.name) or self.name)
|
|
30
30
|
return self
|
|
31
31
|
|
|
32
32
|
def _unhash(self, feature_name: str) -> str:
|
|
@@ -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,
|
|
@@ -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)
|
|
@@ -2620,17 +2624,18 @@ if response.status_code == 200:
|
|
|
2620
2624
|
checked_generate_features = []
|
|
2621
2625
|
for gen_feature in self.generate_features:
|
|
2622
2626
|
if gen_feature not in x_columns:
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
self.bundle.get("missing_generate_feature").format(gen_feature, x_columns)
|
|
2626
|
-
)
|
|
2627
|
-
else:
|
|
2628
|
-
self.__log_warning(self.bundle.get("missing_generate_feature").format(gen_feature, x_columns))
|
|
2627
|
+
msg = self.bundle.get("missing_generate_feature").format(gen_feature, x_columns)
|
|
2628
|
+
self.__log_warning(msg)
|
|
2629
2629
|
else:
|
|
2630
2630
|
checked_generate_features.append(gen_feature)
|
|
2631
2631
|
self.generate_features = checked_generate_features
|
|
2632
2632
|
self.runtime_parameters.properties["generate_features"] = ",".join(self.generate_features)
|
|
2633
2633
|
|
|
2634
|
+
if self.columns_for_online_api is not None and len(self.columns_for_online_api) > 0:
|
|
2635
|
+
for column in self.columns_for_online_api:
|
|
2636
|
+
if column not in validated_X.columns:
|
|
2637
|
+
raise ValidationError(self.bundle.get("missing_column_for_online_api").format(column))
|
|
2638
|
+
|
|
2634
2639
|
if self.id_columns is not None:
|
|
2635
2640
|
for id_column in self.id_columns:
|
|
2636
2641
|
if id_column not in validated_X.columns:
|
|
@@ -3733,7 +3738,7 @@ if response.status_code == 200:
|
|
|
3733
3738
|
features_info_without_links = []
|
|
3734
3739
|
internal_features_info = []
|
|
3735
3740
|
|
|
3736
|
-
original_shaps = {fm.name: fm.shap_value for fm in features_meta}
|
|
3741
|
+
original_shaps = {original_names_dict.get(fm.name, fm.name): fm.shap_value for fm in features_meta}
|
|
3737
3742
|
|
|
3738
3743
|
if updated_shaps is not None:
|
|
3739
3744
|
for fm in features_meta:
|
|
@@ -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.56a3675.dev1"
|
|
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
|
{upgini-1.2.56a3675.dev1 → upgini-1.2.57a1}/src/upgini/resource_bundle/strings_widget.properties
RENAMED
|
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
|