upgini 1.2.16__py3-none-any.whl → 1.2.16a1__py3-none-any.whl
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/__about__.py +1 -1
- upgini/features_enricher.py +22 -63
- upgini/metrics.py +10 -17
- upgini/normalizer/normalize_utils.py +4 -1
- upgini/utils/display_utils.py +2 -8
- upgini/utils/features_validator.py +4 -0
- {upgini-1.2.16.dist-info → upgini-1.2.16a1.dist-info}/METADATA +2 -2
- {upgini-1.2.16.dist-info → upgini-1.2.16a1.dist-info}/RECORD +10 -10
- {upgini-1.2.16.dist-info → upgini-1.2.16a1.dist-info}/WHEEL +0 -0
- {upgini-1.2.16.dist-info → upgini-1.2.16a1.dist-info}/licenses/LICENSE +0 -0
upgini/__about__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = "1.2.
|
|
1
|
+
__version__ = "1.2.16a1"
|
upgini/features_enricher.py
CHANGED
|
@@ -336,7 +336,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
336
336
|
self.exclude_columns = exclude_columns
|
|
337
337
|
self.baseline_score_column = baseline_score_column
|
|
338
338
|
self.add_date_if_missing = add_date_if_missing
|
|
339
|
-
self.features_info_display_handle = None
|
|
340
339
|
|
|
341
340
|
def _get_api_key(self):
|
|
342
341
|
return self._api_key
|
|
@@ -1035,9 +1034,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1035
1034
|
fitting_enriched_X, enriched_y_sorted
|
|
1036
1035
|
)
|
|
1037
1036
|
|
|
1038
|
-
|
|
1039
|
-
self._update_shap_values(enriched_shaps)
|
|
1040
|
-
|
|
1037
|
+
print(f"Calculated enriched shaps: {enriched_shaps}")
|
|
1041
1038
|
if enriched_metric is None:
|
|
1042
1039
|
self.logger.warning(
|
|
1043
1040
|
f"Enriched {metric} on train combined features is None (maybe all features was removed)"
|
|
@@ -1195,17 +1192,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1195
1192
|
self.logger.info(f"Calculating metrics elapsed time: {time.time() - start_time}")
|
|
1196
1193
|
|
|
1197
1194
|
def _update_shap_values(self, new_shaps: Dict[str, float]):
|
|
1198
|
-
new_shaps = {
|
|
1199
|
-
feature: self._round_shap_value(shap)
|
|
1200
|
-
for feature, shap in new_shaps.items()
|
|
1201
|
-
if feature in self.feature_names_
|
|
1202
|
-
}
|
|
1203
|
-
features_importances = list(new_shaps.items())
|
|
1204
|
-
features_importances.sort(key=lambda m: (-m[1], m[0]))
|
|
1205
|
-
self.feature_names_, self.feature_importances_ = zip(*features_importances)
|
|
1206
|
-
self.feature_names_ = list(self.feature_names_)
|
|
1207
|
-
self.feature_importances_ = list(self.feature_importances_)
|
|
1208
|
-
|
|
1209
1195
|
feature_name_header = self.bundle.get("features_info_name")
|
|
1210
1196
|
shap_value_header = self.bundle.get("features_info_shap")
|
|
1211
1197
|
|
|
@@ -1213,28 +1199,9 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1213
1199
|
return new_shaps.get(row[feature_name_header], row[shap_value_header])
|
|
1214
1200
|
|
|
1215
1201
|
self.features_info[shap_value_header] = self.features_info.apply(update_shap, axis=1)
|
|
1216
|
-
self._internal_features_info[shap_value_header] = self._internal_features_info.apply(update_shap, axis=1)
|
|
1217
|
-
self._features_info_without_links[shap_value_header] = self._features_info_without_links.apply(
|
|
1218
|
-
update_shap, axis=1
|
|
1219
|
-
)
|
|
1220
|
-
self.logger.info(f"Recalculated SHAP values:\n{self._features_info_without_links}")
|
|
1221
|
-
|
|
1222
1202
|
self.features_info.sort_values(by=shap_value_header, ascending=False, inplace=True)
|
|
1223
|
-
self._internal_features_info.sort_values(by=shap_value_header, ascending=False, inplace=True)
|
|
1224
|
-
self._features_info_without_links.sort_values(by=shap_value_header, ascending=False, inplace=True)
|
|
1225
1203
|
|
|
1226
|
-
|
|
1227
|
-
try:
|
|
1228
|
-
_ = get_ipython() # type: ignore
|
|
1229
|
-
|
|
1230
|
-
display_html_dataframe(
|
|
1231
|
-
self.features_info,
|
|
1232
|
-
self._features_info_without_links,
|
|
1233
|
-
self.bundle.get("relevant_features_header"),
|
|
1234
|
-
display_handle=self.features_info_display_handle,
|
|
1235
|
-
)
|
|
1236
|
-
except (ImportError, NameError):
|
|
1237
|
-
print(self._internal_features_info)
|
|
1204
|
+
# TODO redraw
|
|
1238
1205
|
|
|
1239
1206
|
def _check_train_and_eval_target_distribution(self, y, eval_set_dict):
|
|
1240
1207
|
uneven_distribution = False
|
|
@@ -1564,19 +1531,11 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1564
1531
|
self.logger.info("No external features selected. So use only input datasets for metrics calculation")
|
|
1565
1532
|
return self.__sample_only_input(validated_X, validated_y, eval_set, is_demo_dataset)
|
|
1566
1533
|
# TODO save and check if dataset was deduplicated - use imbalance branch for such case
|
|
1567
|
-
elif
|
|
1568
|
-
not self.imbalanced
|
|
1569
|
-
and not exclude_features_sources
|
|
1570
|
-
and is_input_same_as_fit
|
|
1571
|
-
and self.df_with_original_index is not None
|
|
1572
|
-
):
|
|
1534
|
+
elif not self.imbalanced and not exclude_features_sources and is_input_same_as_fit:
|
|
1573
1535
|
self.logger.info("Dataset is not imbalanced, so use enriched_X from fit")
|
|
1574
1536
|
return self.__sample_balanced(eval_set, trace_id, remove_outliers_calc_metrics)
|
|
1575
1537
|
else:
|
|
1576
|
-
self.logger.info(
|
|
1577
|
-
"Dataset is imbalanced or exclude_features_sources or X was passed or this is saved search."
|
|
1578
|
-
" Run transform"
|
|
1579
|
-
)
|
|
1538
|
+
self.logger.info("Dataset is imbalanced or exclude_features_sources or X was passed. Run transform")
|
|
1580
1539
|
print(self.bundle.get("prepare_data_for_metrics"))
|
|
1581
1540
|
return self.__sample_imbalanced(
|
|
1582
1541
|
validated_X,
|
|
@@ -1635,7 +1594,9 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1635
1594
|
generated_features.extend(generator.generated_features)
|
|
1636
1595
|
|
|
1637
1596
|
normalizer = Normalizer(self.bundle, self.logger, self.warning_counter)
|
|
1638
|
-
df, search_keys, generated_features = normalizer.normalize(
|
|
1597
|
+
df, search_keys, generated_features = normalizer.normalize(
|
|
1598
|
+
df, search_keys, generated_features
|
|
1599
|
+
)
|
|
1639
1600
|
columns_renaming = normalizer.columns_renaming
|
|
1640
1601
|
|
|
1641
1602
|
df = clean_full_duplicates(df, logger=self.logger, silent=True, bundle=self.bundle)
|
|
@@ -2075,7 +2036,9 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
2075
2036
|
generated_features.extend(generator.generated_features)
|
|
2076
2037
|
|
|
2077
2038
|
normalizer = Normalizer(self.bundle, self.logger, self.warning_counter, silent_mode)
|
|
2078
|
-
df, search_keys, generated_features = normalizer.normalize(
|
|
2039
|
+
df, search_keys, generated_features = normalizer.normalize(
|
|
2040
|
+
df, search_keys, generated_features
|
|
2041
|
+
)
|
|
2079
2042
|
columns_renaming = normalizer.columns_renaming
|
|
2080
2043
|
|
|
2081
2044
|
# Don't pass all features in backend on transform
|
|
@@ -3431,13 +3394,6 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3431
3394
|
|
|
3432
3395
|
return result_train, result_eval_sets
|
|
3433
3396
|
|
|
3434
|
-
@staticmethod
|
|
3435
|
-
def _round_shap_value(shap: float) -> float:
|
|
3436
|
-
if shap > 0.0 and shap < 0.0001:
|
|
3437
|
-
return 0.0001
|
|
3438
|
-
else:
|
|
3439
|
-
return round(shap, 4)
|
|
3440
|
-
|
|
3441
3397
|
def __prepare_feature_importances(self, trace_id: str, x_columns: List[str], silent=False):
|
|
3442
3398
|
llm_source = "LLM with external data augmentation"
|
|
3443
3399
|
if self._search_task is None:
|
|
@@ -3455,6 +3411,12 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3455
3411
|
features_info_without_links = []
|
|
3456
3412
|
internal_features_info = []
|
|
3457
3413
|
|
|
3414
|
+
def round_shap_value(shap: float) -> float:
|
|
3415
|
+
if shap > 0.0 and shap < 0.0001:
|
|
3416
|
+
return 0.0001
|
|
3417
|
+
else:
|
|
3418
|
+
return round(shap, 4)
|
|
3419
|
+
|
|
3458
3420
|
def list_or_single(lst: List[str], single: str):
|
|
3459
3421
|
return lst or ([single] if single else [])
|
|
3460
3422
|
|
|
@@ -3487,7 +3449,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3487
3449
|
|
|
3488
3450
|
feature_sample = []
|
|
3489
3451
|
self.feature_names_.append(feature_meta.name)
|
|
3490
|
-
self.feature_importances_.append(
|
|
3452
|
+
self.feature_importances_.append(round_shap_value(feature_meta.shap_value))
|
|
3491
3453
|
if feature_meta.name in features_df.columns:
|
|
3492
3454
|
feature_sample = np.random.choice(features_df[feature_meta.name].dropna().unique(), 3).tolist()
|
|
3493
3455
|
if len(feature_sample) > 0 and isinstance(feature_sample[0], float):
|
|
@@ -3526,7 +3488,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3526
3488
|
features_info.append(
|
|
3527
3489
|
{
|
|
3528
3490
|
self.bundle.get("features_info_name"): feature_name,
|
|
3529
|
-
self.bundle.get("features_info_shap"):
|
|
3491
|
+
self.bundle.get("features_info_shap"): round_shap_value(feature_meta.shap_value),
|
|
3530
3492
|
self.bundle.get("features_info_hitrate"): feature_meta.hit_rate,
|
|
3531
3493
|
self.bundle.get("features_info_value_preview"): feature_sample,
|
|
3532
3494
|
self.bundle.get("features_info_provider"): provider,
|
|
@@ -3537,7 +3499,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3537
3499
|
features_info_without_links.append(
|
|
3538
3500
|
{
|
|
3539
3501
|
self.bundle.get("features_info_name"): internal_feature_name,
|
|
3540
|
-
self.bundle.get("features_info_shap"):
|
|
3502
|
+
self.bundle.get("features_info_shap"): round_shap_value(feature_meta.shap_value),
|
|
3541
3503
|
self.bundle.get("features_info_hitrate"): feature_meta.hit_rate,
|
|
3542
3504
|
self.bundle.get("features_info_value_preview"): feature_sample,
|
|
3543
3505
|
self.bundle.get("features_info_provider"): internal_provider,
|
|
@@ -3549,7 +3511,7 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3549
3511
|
{
|
|
3550
3512
|
self.bundle.get("features_info_name"): internal_feature_name,
|
|
3551
3513
|
"feature_link": feature_meta.doc_link,
|
|
3552
|
-
self.bundle.get("features_info_shap"):
|
|
3514
|
+
self.bundle.get("features_info_shap"): round_shap_value(feature_meta.shap_value),
|
|
3553
3515
|
self.bundle.get("features_info_hitrate"): feature_meta.hit_rate,
|
|
3554
3516
|
self.bundle.get("features_info_value_preview"): feature_sample,
|
|
3555
3517
|
self.bundle.get("features_info_provider"): internal_provider,
|
|
@@ -3829,11 +3791,8 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
3829
3791
|
print(Format.GREEN + Format.BOLD + msg + Format.END)
|
|
3830
3792
|
self.logger.info(msg)
|
|
3831
3793
|
if len(self.feature_names_) > 0:
|
|
3832
|
-
|
|
3833
|
-
self.features_info,
|
|
3834
|
-
self._features_info_without_links,
|
|
3835
|
-
self.bundle.get("relevant_features_header"),
|
|
3836
|
-
display_id="features_info",
|
|
3794
|
+
display_html_dataframe(
|
|
3795
|
+
self.features_info, self._features_info_without_links, self.bundle.get("relevant_features_header")
|
|
3837
3796
|
)
|
|
3838
3797
|
|
|
3839
3798
|
display_html_dataframe(
|
upgini/metrics.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
from collections import defaultdict
|
|
3
4
|
import inspect
|
|
4
5
|
import logging
|
|
5
6
|
import re
|
|
6
|
-
from collections import defaultdict
|
|
7
7
|
from copy import deepcopy
|
|
8
8
|
from typing import Any, Callable, Dict, List, Optional, Tuple, Union
|
|
9
9
|
|
|
@@ -339,10 +339,10 @@ class EstimatorWrapper:
|
|
|
339
339
|
|
|
340
340
|
if shap_values_all_folds:
|
|
341
341
|
average_shap_values = {
|
|
342
|
-
feature: np.mean(
|
|
342
|
+
feature: np.mean(shaps)
|
|
343
|
+
for feature, shaps
|
|
344
|
+
in shap_values_all_folds.items()
|
|
343
345
|
}
|
|
344
|
-
if len(average_shap_values) == 0:
|
|
345
|
-
average_shap_values = None
|
|
346
346
|
else:
|
|
347
347
|
average_shap_values = None
|
|
348
348
|
|
|
@@ -480,7 +480,6 @@ class CatBoostWrapper(EstimatorWrapper):
|
|
|
480
480
|
)
|
|
481
481
|
self.cat_features = None
|
|
482
482
|
self.emb_features = None
|
|
483
|
-
self.grouped_embedding_features = None
|
|
484
483
|
self.exclude_features = []
|
|
485
484
|
|
|
486
485
|
def _prepare_to_fit(self, x: pd.DataFrame, y: pd.Series) -> Tuple[pd.DataFrame, np.ndarray, np.ndarray, dict]:
|
|
@@ -490,16 +489,17 @@ class CatBoostWrapper(EstimatorWrapper):
|
|
|
490
489
|
if hasattr(CatBoostClassifier, "get_embedding_feature_indices"):
|
|
491
490
|
emb_pattern = r"(.+)_emb\d+"
|
|
492
491
|
self.emb_features = [c for c in x.columns if re.match(emb_pattern, c) and is_numeric_dtype(x[c])]
|
|
492
|
+
embedding_features = []
|
|
493
493
|
if len(self.emb_features) > 3: # There is no reason to reduce embeddings dimension with less than 4
|
|
494
494
|
self.logger.info(
|
|
495
495
|
"Embedding features count more than 3, so group them into one vector for CatBoost: "
|
|
496
496
|
f"{self.emb_features}"
|
|
497
497
|
)
|
|
498
|
-
x,
|
|
499
|
-
params["embedding_features"] =
|
|
498
|
+
x, embedding_features = self.group_embeddings(x)
|
|
499
|
+
params["embedding_features"] = embedding_features
|
|
500
500
|
else:
|
|
501
501
|
self.logger.info(f"Embedding features count less than 3, so use them separately: {self.emb_features}")
|
|
502
|
-
self.
|
|
502
|
+
self.emb_features = []
|
|
503
503
|
else:
|
|
504
504
|
self.logger.warning(f"Embedding features are not supported by Catboost version {catboost.__version__}")
|
|
505
505
|
|
|
@@ -515,7 +515,7 @@ class CatBoostWrapper(EstimatorWrapper):
|
|
|
515
515
|
self.logger.warning(f"Text features are not supported by this Catboost version {catboost.__version__}")
|
|
516
516
|
|
|
517
517
|
# Find rest categorical features
|
|
518
|
-
self.cat_features = _get_cat_features(x, self.text_features,
|
|
518
|
+
self.cat_features = _get_cat_features(x, self.text_features, embedding_features)
|
|
519
519
|
# x = fill_na_cat_features(x, self.cat_features)
|
|
520
520
|
unique_cat_features = []
|
|
521
521
|
for name in self.cat_features:
|
|
@@ -603,13 +603,7 @@ class CatBoostWrapper(EstimatorWrapper):
|
|
|
603
603
|
def calculate_shap(self, x: pd.DataFrame, y: pd.Series, estimator: CatBoost) -> Optional[Dict[str, float]]:
|
|
604
604
|
try:
|
|
605
605
|
# Create Pool for fold data, if need (for example, when categorical features are present)
|
|
606
|
-
fold_pool = Pool(
|
|
607
|
-
x,
|
|
608
|
-
y,
|
|
609
|
-
cat_features=self.cat_features,
|
|
610
|
-
text_features=self.text_features,
|
|
611
|
-
embedding_features=self.grouped_embedding_features,
|
|
612
|
-
)
|
|
606
|
+
fold_pool = Pool(x, y, cat_features=self.cat_features)
|
|
613
607
|
|
|
614
608
|
# Get SHAP values of current estimator
|
|
615
609
|
shap_values_fold = estimator.get_feature_importance(data=fold_pool, type="ShapValues")
|
|
@@ -627,7 +621,6 @@ class CatBoostWrapper(EstimatorWrapper):
|
|
|
627
621
|
return dict(zip(estimator.feature_names_, all_shaps))
|
|
628
622
|
|
|
629
623
|
except Exception:
|
|
630
|
-
self.logger.exception("Failed to recalculate new SHAP values")
|
|
631
624
|
return None
|
|
632
625
|
|
|
633
626
|
|
|
@@ -49,7 +49,10 @@ class Normalizer:
|
|
|
49
49
|
self.generated_features = []
|
|
50
50
|
|
|
51
51
|
def normalize(
|
|
52
|
-
self,
|
|
52
|
+
self,
|
|
53
|
+
df: pd.DataFrame,
|
|
54
|
+
search_keys: Dict[str, SearchKey],
|
|
55
|
+
generated_features: List[str],
|
|
53
56
|
) -> Tuple[pd.DataFrame, Dict[str, SearchKey], List[str]]:
|
|
54
57
|
self.search_keys = search_keys.copy()
|
|
55
58
|
self.generated_features = generated_features.copy()
|
upgini/utils/display_utils.py
CHANGED
|
@@ -9,7 +9,6 @@ from typing import Callable, List, Optional
|
|
|
9
9
|
|
|
10
10
|
import pandas as pd
|
|
11
11
|
from xhtml2pdf import pisa
|
|
12
|
-
|
|
13
12
|
from upgini.__about__ import __version__
|
|
14
13
|
|
|
15
14
|
|
|
@@ -73,9 +72,7 @@ def make_table(df: pd.DataFrame, wrap_long_string=None) -> str:
|
|
|
73
72
|
)
|
|
74
73
|
|
|
75
74
|
|
|
76
|
-
def display_html_dataframe(
|
|
77
|
-
df: pd.DataFrame, internal_df: pd.DataFrame, header: str, display_id: Optional[str] = None, display_handle=None
|
|
78
|
-
):
|
|
75
|
+
def display_html_dataframe(df: pd.DataFrame, internal_df: pd.DataFrame, header: str, display_id: str):
|
|
79
76
|
if not ipython_available():
|
|
80
77
|
print(header)
|
|
81
78
|
print(internal_df)
|
|
@@ -136,10 +133,7 @@ def display_html_dataframe(
|
|
|
136
133
|
{table_html}
|
|
137
134
|
</div>
|
|
138
135
|
"""
|
|
139
|
-
|
|
140
|
-
return display_handle.update(HTML(result_html))
|
|
141
|
-
else:
|
|
142
|
-
return display(HTML(result_html), display_id=display_id)
|
|
136
|
+
return display(HTML(result_html))
|
|
143
137
|
|
|
144
138
|
|
|
145
139
|
def make_html_report(
|
|
@@ -58,6 +58,10 @@ class FeaturesValidator:
|
|
|
58
58
|
|
|
59
59
|
columns_renaming = columns_renaming or {}
|
|
60
60
|
|
|
61
|
+
if features_for_generate:
|
|
62
|
+
empty_or_constant_features = [
|
|
63
|
+
f for f in empty_or_constant_features if columns_renaming.get(f, f) not in features_for_generate
|
|
64
|
+
]
|
|
61
65
|
if empty_or_constant_features:
|
|
62
66
|
msg = bundle.get("empty_or_contant_features").format(
|
|
63
67
|
[columns_renaming.get(f, f) for f in empty_or_constant_features]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: upgini
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.16a1
|
|
4
4
|
Summary: Intelligent data search & enrichment for Machine Learning
|
|
5
5
|
Project-URL: Bug Reports, https://github.com/upgini/upgini/issues
|
|
6
6
|
Project-URL: Homepage, https://upgini.com/
|
|
@@ -145,7 +145,7 @@ Description-Content-Type: text/markdown
|
|
|
145
145
|
|
|
146
146
|
## 💼 Tutorials
|
|
147
147
|
|
|
148
|
-
### [Search of relevant external features & Automated feature generation for Salary
|
|
148
|
+
### [Search of relevant external features & Automated feature generation for Salary predicton task (use as a template)](https://github.com/upgini/upgini/blob/main/notebooks/Upgini_Features_search%26generation.ipynb)
|
|
149
149
|
|
|
150
150
|
* The goal is to predict salary for data science job postning based on information about employer and job description.
|
|
151
151
|
* Following this guide, you'll learn how to **search & auto generate new relevant features with Upgini library**
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
upgini/__about__.py,sha256=
|
|
1
|
+
upgini/__about__.py,sha256=vMDC8s3UWLhN6avUSjtfizIVhxWIHW-WKTw04ha19HE,25
|
|
2
2
|
upgini/__init__.py,sha256=M64LwQTBa-5Jz24Zm2h8rWwlKQQ1J8nP7gGgIciS0WU,589
|
|
3
3
|
upgini/ads.py,sha256=nvuRxRx5MHDMgPr9SiU-fsqRdFaBv8p4_v1oqiysKpc,2714
|
|
4
4
|
upgini/dataset.py,sha256=iPFiMJtk4HF1ytw9wCQr8H9RfoOKj_TIo8XYZKWgcMc,31331
|
|
5
5
|
upgini/errors.py,sha256=2b_Wbo0OYhLUbrZqdLIx5jBnAsiD1Mcenh-VjR4HCTw,950
|
|
6
|
-
upgini/features_enricher.py,sha256=
|
|
6
|
+
upgini/features_enricher.py,sha256=oEWJjD3v4v_0fZr8ZWSzqFCs08yJrjVTDMNPEFsFL_E,188978
|
|
7
7
|
upgini/http.py,sha256=21asexflvavydzCOONJDGQBtQanCElrbnqLXakJ9Cu8,42880
|
|
8
8
|
upgini/lazy_import.py,sha256=74gQ8JuA48BGRLxAo7lNHNKY2D2emMxrUxKGdxVGhuY,1012
|
|
9
9
|
upgini/metadata.py,sha256=osmzdNESeh7yP3BZday6N9Q3eaIHfzhhRM1d6NSgcf0,11223
|
|
10
|
-
upgini/metrics.py,sha256=
|
|
10
|
+
upgini/metrics.py,sha256=zs_gnjZCdk8AUYOj-mD7V1k-8Gn2EfHcXvK7J6RWOxA,33492
|
|
11
11
|
upgini/search_task.py,sha256=qxUxAD-bed-FpZYmTB_4orW7YJsW_O6a1TcgnZIRFr4,17307
|
|
12
12
|
upgini/spinner.py,sha256=4iMd-eIe_BnkqFEMIliULTbj6rNI2HkN_VJ4qYe0cUc,1118
|
|
13
13
|
upgini/version_validator.py,sha256=ddSKUK_-eGJB3NgrqOMoWJU-OxQ253WsNLp8aqJkaIM,1389
|
|
@@ -27,7 +27,7 @@ upgini/data_source/data_source_publisher.py,sha256=X-8aGtVgzGmxyXkMVBoBLIGDMb4lY
|
|
|
27
27
|
upgini/mdc/__init__.py,sha256=aM08nIWFc2gWdWUa3_IuEnNND0cQPkBGnYpRMnfFN8k,1019
|
|
28
28
|
upgini/mdc/context.py,sha256=3u1B-jXt7tXEvNcV3qmR9SDCseudnY7KYsLclBdwVLk,1405
|
|
29
29
|
upgini/normalizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
upgini/normalizer/normalize_utils.py,sha256=
|
|
30
|
+
upgini/normalizer/normalize_utils.py,sha256=w7S4yQZkdlBptC7peqmrn8zqs-Z0RPq2rp78IZuoE7M,7734
|
|
31
31
|
upgini/resource_bundle/__init__.py,sha256=S5F2G47pnJd2LDpmFsjDqEwiKkP8Hm-hcseDbMka6Ko,8345
|
|
32
32
|
upgini/resource_bundle/exceptions.py,sha256=5fRvx0_vWdE1-7HcSgF0tckB4A9AKyf5RiinZkInTsI,621
|
|
33
33
|
upgini/resource_bundle/strings.properties,sha256=eqJP6bGu12zFuQJqMY03QbMhppcdwIfL2bsJWaqmuZ4,27221
|
|
@@ -44,10 +44,10 @@ upgini/utils/custom_loss_utils.py,sha256=kieNZYBYZm5ZGBltF1F_jOSF4ea6C29rYuCyiDc
|
|
|
44
44
|
upgini/utils/cv_utils.py,sha256=w6FQb9nO8BWDx88EF83NpjPLarK4eR4ia0Wg0kLBJC4,3525
|
|
45
45
|
upgini/utils/datetime_utils.py,sha256=4tsGeehU0KS6wqNsc9gEEWZ9s6T9E0UReUIO3rSuXNU,12174
|
|
46
46
|
upgini/utils/deduplicate_utils.py,sha256=NpaPtBYXwUtfKTRHWrtz2uUq6tZN6C_Nd719ydPRF2Q,8484
|
|
47
|
-
upgini/utils/display_utils.py,sha256=
|
|
47
|
+
upgini/utils/display_utils.py,sha256=kOY3lKKbJDIb424TFAF0wQiFUhcARTy2Flz0bQ2M8NY,11014
|
|
48
48
|
upgini/utils/email_utils.py,sha256=j0Ug1R_0AnCg1Y92zIZ4XMwvKo3G5_pcOlBN1OH_gZs,5191
|
|
49
49
|
upgini/utils/fallback_progress_bar.py,sha256=PDaKb8dYpVZaWMroNcOHsTc3pSjgi9mOm0--cOFTwJ0,1074
|
|
50
|
-
upgini/utils/features_validator.py,sha256=
|
|
50
|
+
upgini/utils/features_validator.py,sha256=URNywJnfPVpRKGAK9drJIdyHarGczB298y9QGQwOVGE,3818
|
|
51
51
|
upgini/utils/format.py,sha256=Yv5cvvSs2bOLUzzNu96Pu33VMDNbabio92QepUj41jU,243
|
|
52
52
|
upgini/utils/ip_utils.py,sha256=Q6vb7Sr5Khx3Sq3eENjW2qCXKej_S5jZbneH6zEOkzQ,5171
|
|
53
53
|
upgini/utils/phone_utils.py,sha256=IrbztLuOJBiePqqxllfABWfYlfAjYevPhXKipl95wUI,10432
|
|
@@ -57,7 +57,7 @@ upgini/utils/sklearn_ext.py,sha256=13jQS_k7v0aUtudXV6nGUEWjttPQzAW9AFYL5wgEz9k,4
|
|
|
57
57
|
upgini/utils/target_utils.py,sha256=qHzZRmICFbLNCrmVqGkaBcjm91L2ERRZMppci36acV4,10085
|
|
58
58
|
upgini/utils/track_info.py,sha256=G5Lu1xxakg2_TQjKZk4b5SvrHsATTXNVV3NbvWtT8k8,5663
|
|
59
59
|
upgini/utils/warning_counter.py,sha256=dIWBB4dI5XRRJZudvIlqlIYKEiwLLPcXarsZuYRt338,227
|
|
60
|
-
upgini-1.2.
|
|
61
|
-
upgini-1.2.
|
|
62
|
-
upgini-1.2.
|
|
63
|
-
upgini-1.2.
|
|
60
|
+
upgini-1.2.16a1.dist-info/METADATA,sha256=0w4SeT93Uz51cWP6Y0uHw0Eh2iMVqkUIOjlaaD_Jduw,48579
|
|
61
|
+
upgini-1.2.16a1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
|
62
|
+
upgini-1.2.16a1.dist-info/licenses/LICENSE,sha256=5RRzgvdJUu3BUDfv4bzVU6FqKgwHlIay63pPCSmSgzw,1514
|
|
63
|
+
upgini-1.2.16a1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|