upgini 1.2.167a4220.dev4__tar.gz → 1.2.167a4220.dev5__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.167a4220.dev4 → upgini-1.2.167a4220.dev5}/PKG-INFO +1 -1
- upgini-1.2.167a4220.dev5/src/upgini/__about__.py +1 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/features_enricher.py +3 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/report/html.py +1 -1
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/report/stats.py +10 -3
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/report/template.html +2 -2
- upgini-1.2.167a4220.dev4/src/upgini/__about__.py +0 -1
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/.gitignore +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/LICENSE +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/README.md +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/pyproject.toml +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/ads.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/ads_management/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/ads_management/ads_manager.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/all_operators.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/binary.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/date.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/feature.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/groupby.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/operand.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/operator.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/base.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/cross.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/delta.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/lag.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/numpy_kernels.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/roll.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/trend.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/volatility.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/unary.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/vector.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/data_source/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/data_source/data_source_publisher.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/dataset.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/errors.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/http.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/mdc/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/mdc/context.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/metadata.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/metrics.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/normalizer/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/normalizer/normalize_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/report/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/report/assemble.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/report/data.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/resource_bundle/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/resource_bundle/exceptions.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/resource_bundle/strings.properties +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/resource_bundle/strings_widget.properties +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/sampler/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/sampler/base.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/sampler/random_under_sampler.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/sampler/utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/search_task.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/spinner.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/Roboto-Regular.ttf +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/__init__.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/base_search_key_detector.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/blocked_time_series.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/config.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/country_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/cpu_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/custom_loss_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/cv_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/datetime_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/deduplicate_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/display_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/email_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/fallback_progress_bar.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/feature_info.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/features_validator.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/format.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/hash_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/ip_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/mstats.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/one_hot_encoder.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/phone_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/postal_code_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/progress_bar.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/psi.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/pyarrow_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/sample_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/search_key_derivations.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/sklearn_ext.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/sort.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/target_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/track_info.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/ts_utils.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/warning_counter.py +0 -0
- {upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/version_validator.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: upgini
|
|
3
|
-
Version: 1.2.167a4220.
|
|
3
|
+
Version: 1.2.167a4220.dev5
|
|
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/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.2.167.a4220.dev5"
|
|
@@ -1462,6 +1462,9 @@ class FeaturesEnricher(TransformerMixin):
|
|
|
1462
1462
|
progress_bar: bool = True,
|
|
1463
1463
|
progress_callback: Callable | None = None,
|
|
1464
1464
|
):
|
|
1465
|
+
if self._has_single_ensemble_score():
|
|
1466
|
+
self.logger.info("Skip OOT PSI stability check for single ensemble score")
|
|
1467
|
+
return
|
|
1465
1468
|
search_keys = self.search_keys.copy()
|
|
1466
1469
|
search_keys.update(self._get_autodetected_search_keys())
|
|
1467
1470
|
validated_X, _, validated_eval_set = self._validate_train_eval(X, y, eval_set)
|
|
@@ -79,7 +79,7 @@ def _samples(data: ReportData) -> list[dict]:
|
|
|
79
79
|
{
|
|
80
80
|
"id": _slug(name),
|
|
81
81
|
"label": name,
|
|
82
|
-
"caption": "",
|
|
82
|
+
"caption": "OOF validation" if index == 0 else "",
|
|
83
83
|
"color": _SAMPLE_COLORS[index % len(_SAMPLE_COLORS)],
|
|
84
84
|
}
|
|
85
85
|
for index, name in enumerate(names)
|
|
@@ -344,10 +344,17 @@ def _score_psi(names: list[str], scored_samples: dict[str, pd.DataFrame], timeli
|
|
|
344
344
|
if not timeline or not scored_samples:
|
|
345
345
|
return []
|
|
346
346
|
train = scored_samples.get(names[0]) if names else None
|
|
347
|
-
if train is None or SCORE not in train.columns:
|
|
347
|
+
if train is None or SCORE not in train.columns or DATE not in train.columns:
|
|
348
348
|
return []
|
|
349
|
-
|
|
350
|
-
|
|
349
|
+
train_scores = pd.to_numeric(train[SCORE], errors="coerce")
|
|
350
|
+
train_months = _month_keys(train[DATE])
|
|
351
|
+
reference = None
|
|
352
|
+
for month in timeline:
|
|
353
|
+
month_scores = train_scores[train_months == month].dropna()
|
|
354
|
+
if not month_scores.empty:
|
|
355
|
+
reference = month_scores
|
|
356
|
+
break
|
|
357
|
+
if reference is None:
|
|
351
358
|
return []
|
|
352
359
|
bins = _get_bin_edges(reference, HISTOGRAM_BINS)
|
|
353
360
|
rows = []
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
</section>
|
|
72
72
|
|
|
73
73
|
<section id="score-stability" class="section">
|
|
74
|
-
<div class="section-head"><div><h2>Score stability (PSI)</h2><p>Monthly PSI of scores · reference:
|
|
74
|
+
<div class="section-head"><div><h2>Score stability (PSI)</h2><p>Monthly PSI of scores · reference: first period (baseline month) · fixed reference bins.</p></div><div class="toolbar"><select id="psiSample" class="control" aria-label="Score stability sample"></select><button class="button ghost chart-export" data-chart="scorePsiChart">Save PNG</button></div></div>
|
|
75
75
|
<div class="panel chart-panel"><div class="threshold-legend" id="psiThresholdLegend"></div><div class="canvas-wrap"><canvas id="scorePsiChart" aria-label="Monthly score PSI" width="1596" height="560"></canvas><div class="chart-tooltip" id="psiTooltip"></div></div></div>
|
|
76
76
|
</section>
|
|
77
77
|
|
|
@@ -628,7 +628,7 @@ const REPORT_DATA = __REPORT_DATA__;
|
|
|
628
628
|
bindTooltip('scorePsiChart', 'psiTooltip', 'psi', i => {
|
|
629
629
|
const cfg = D.scoreStability, s = cfg.bySample[document.getElementById('psiSample').value];
|
|
630
630
|
return `<b>${MONTHS[i]} · ${selectedLabel('psiSample')}</b><br>PSI: ${fmt3(s.psi[i])}` +
|
|
631
|
-
`<br>Rows: ${num(s.rows[i])}<br>Score coverage: ${s.scoreCoverage[i].toFixed(1)}%<br>Reference:
|
|
631
|
+
`<br>Rows: ${num(s.rows[i])}<br>Score coverage: ${s.scoreCoverage[i].toFixed(1)}%<br>Reference: first period (baseline month)`;
|
|
632
632
|
});
|
|
633
633
|
bindTooltip('featureStabilityChart', 'featureTooltip', 'feature', i => {
|
|
634
634
|
const cfg = D.featureStability, f = currentStabilityFeature(), s = cfg.bySample[f.name];
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "1.2.167.a4220.dev4"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/ads_management/ads_manager.py
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
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/numpy_kernels.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/autofe/timeseries/volatility.py
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
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/normalizer/normalize_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/resource_bundle/__init__.py
RENAMED
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/resource_bundle/exceptions.py
RENAMED
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/resource_bundle/strings.properties
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/sampler/random_under_sampler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/base_search_key_detector.py
RENAMED
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/blocked_time_series.py
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
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/fallback_progress_bar.py
RENAMED
|
File without changes
|
|
File without changes
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/features_validator.py
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
|
{upgini-1.2.167a4220.dev4 → upgini-1.2.167a4220.dev5}/src/upgini/utils/search_key_derivations.py
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
|