SuperModelingFactory 0.6.8__tar.gz → 0.6.9__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.
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/credit_model.py +11 -1
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Monotone_Binner.py +84 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/__init__.py +1 -1
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/PKG-INFO +2 -2
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/README.md +1 -1
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/PKG-INFO +2 -2
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/pyproject.toml +1 -1
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/setup.py +1 -1
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/ExcelMaster/ExcelFormatTool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/ExcelMaster/ExcelMaster.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/ExcelMaster/Template.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/ExcelMaster/Utility.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/ExcelMaster/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/LICENSE +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/MANIFEST.in +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Binning_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Binning_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Check_DuckDB_Compatibility.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Json_Data_Converter.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Model_Registry_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/ODPS_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Parallel_Engine.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Parallel_ODPS_Manager.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Proc_Compare.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Slope_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Slope_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/XOR_Encryptor.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/XOR_Encryptor.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/kDataFrame.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/kDataFrame.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/sample_weight_utils.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/utils.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Evaluation_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Evaluation_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Model_Eval_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Model_Eval_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/evaluate_model.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/evaluate_model.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/weighted_eval_utils.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Explainability/Coalition_Structure.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Explainability/Model_Explainer.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Explainability/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Distribution_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Distribution_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Feature_Insights.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Feature_Insights.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Feature_Screen.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/ODPS_Distribution_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/ODPS_Distribution_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/PSI_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/PSI_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Screen_Gates.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/WOE_Engine_Feature_Patch.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Weighted_Screen.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/Backward_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/Backward_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/GBM_Search_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/GBM_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/GBM_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/LRM_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/LRM_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/_common.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/feature_validation.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/field_meta.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/mock_sample.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/orchestrator.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/reject_inference.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/sample_analysis.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/score_comparison.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/score_consistency_uat.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/screening_artifact.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Distribution_Adaptation.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Distribution_Adaptation.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Reject_Infer.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Reject_Infer.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Sample_Split.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Sample_Split.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/UAT/UAT_Consistency_Checker.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/UAT/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Adapter.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Adapter.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Master.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Master.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Monotone_Binner.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Plot_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Plot_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Report_Builder.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Report_Builder.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/plot_woe_tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/plot_woe_tool.pyi +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/_utils/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/_utils/nan_guard.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/_utils/robust.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/_utils/sentinels.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/ref_font/KaiTi.ttf +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/ref_font/WeiRuanYaHei.ttf +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/ref_font/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/ref_font/simsun.ttc +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Report/Report_Tool.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Report/__init__.py +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/SOURCES.txt +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/dependency_links.txt +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/not-zip-safe +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/requires.txt +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/top_level.txt +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/requirements.txt +0 -0
- {supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/setup.cfg +0 -0
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/credit_model.py
RENAMED
|
@@ -892,8 +892,18 @@ class CreditModelPipeline:
|
|
|
892
892
|
},
|
|
893
893
|
cfg.monotone_woe_params,
|
|
894
894
|
)
|
|
895
|
+
# fit()-only kwargs must not reach MonotoneWOEBinner.__init__ —
|
|
896
|
+
# n_jobs / chi2_p / chi2_init_size in monotone_woe_params used to
|
|
897
|
+
# raise TypeError on this self-fit path (the screening-side
|
|
898
|
+
# fit_screening_woe_engine already splits init vs fit keys).
|
|
899
|
+
fit_kwargs = {
|
|
900
|
+
key: params.pop(key)
|
|
901
|
+
for key in ("chi2_binning", "chi2_p", "chi2_init_size", "n_jobs")
|
|
902
|
+
if key in params
|
|
903
|
+
}
|
|
904
|
+
fit_kwargs["chi2_binning"] = bool(fit_kwargs.get("chi2_binning", False))
|
|
895
905
|
binner = MonotoneWOEBinner(**params)
|
|
896
|
-
binner.fit(fit_ins,
|
|
906
|
+
binner.fit(fit_ins, **fit_kwargs)
|
|
897
907
|
if cfg.write_outputs and cfg.plot_outputs:
|
|
898
908
|
binner.plot_woe_graph(graph_path=str(Path(cfg.output_dir) / "figs" / "mono_woe"))
|
|
899
909
|
adapter = as_woe_engine(binner, woe_suffix=woe_suffix)
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Monotone_Binner.py
RENAMED
|
@@ -391,6 +391,11 @@ class MonotoneWOEBinner:
|
|
|
391
391
|
# dict with unseen_values/affected_rows/affected_frac/total_rows.
|
|
392
392
|
# Reset at the start of every apply_woe call.
|
|
393
393
|
self._unseen_category_stats: Dict[str, dict] = {}
|
|
394
|
+
# G18: per-feature categorical transform coverage from the most recent
|
|
395
|
+
# apply_woe call — transform missing rate vs fit-time missing rate,
|
|
396
|
+
# exact / str()-fallback match counts, unmatched (missing_woe-filled)
|
|
397
|
+
# rows. Purely observational; reset at every apply_woe call.
|
|
398
|
+
self._categorical_transform_stats: Dict[str, dict] = {}
|
|
394
399
|
# G08: populated when small_bin_policy is active; {feat: {bin_label,
|
|
395
400
|
# bad, good, thresholds, action}}.
|
|
396
401
|
self._small_bin_stats: Dict[str, dict] = {}
|
|
@@ -2522,6 +2527,17 @@ class MonotoneWOEBinner:
|
|
|
2522
2527
|
``{"unseen_values": set, "affected_rows": int,
|
|
2523
2528
|
"affected_frac": float, "total_rows": int}``. Reset at the
|
|
2524
2529
|
start of every ``apply_woe`` call.
|
|
2530
|
+
_categorical_transform_stats : Dict[str, dict]
|
|
2531
|
+
G18: per-categorical-feature transform coverage from the most
|
|
2532
|
+
recent ``apply_woe`` call: ``{"total_rows", "missing_rows",
|
|
2533
|
+
"missing_rate", "fit_missing_rate", "exact_match_rows",
|
|
2534
|
+
"fallback_match_rows", "unmatched_rows"}``. Purely observational
|
|
2535
|
+
(mapped WOE values are unchanged). Two RuntimeWarnings fire
|
|
2536
|
+
unless ``unseen_category_policy="silent"``: rows matched only
|
|
2537
|
+
via the ``str()`` fallback (fit/transform dtype drift), and a
|
|
2538
|
+
transform missing rate ≥ 50% that exceeds the fit-time missing
|
|
2539
|
+
rate by ≥ 30pp (upstream column likely broken/renamed/re-typed).
|
|
2540
|
+
Reset at the start of every ``apply_woe`` call.
|
|
2525
2541
|
|
|
2526
2542
|
Returns
|
|
2527
2543
|
-------
|
|
@@ -2551,6 +2567,7 @@ class MonotoneWOEBinner:
|
|
|
2551
2567
|
woe_outputs: Dict[str, np.ndarray] = {}
|
|
2552
2568
|
# Reset per-call so callers can inspect stats from the *latest* run only.
|
|
2553
2569
|
self._unseen_category_stats = {}
|
|
2570
|
+
self._categorical_transform_stats = {}
|
|
2554
2571
|
|
|
2555
2572
|
selected_features = (
|
|
2556
2573
|
list(self._results)
|
|
@@ -2669,6 +2686,7 @@ class MonotoneWOEBinner:
|
|
|
2669
2686
|
mapped = pd.Series(np.nan, index=series.index, dtype=float)
|
|
2670
2687
|
|
|
2671
2688
|
fallback_mask = mapped.isna() & ~missing_mask
|
|
2689
|
+
exact_arr = mapped.notna().to_numpy() # G18: hits before the str() fallback
|
|
2672
2690
|
if cat_woe_map_str and fallback_mask.any():
|
|
2673
2691
|
mapped.loc[fallback_mask] = (
|
|
2674
2692
|
series.loc[fallback_mask].astype(str).map(cat_woe_map_str)
|
|
@@ -2683,6 +2701,72 @@ class MonotoneWOEBinner:
|
|
|
2683
2701
|
out[hit_arr] = mapped.to_numpy(dtype=float)[hit_arr]
|
|
2684
2702
|
|
|
2685
2703
|
woe_outputs[woe_col] = out.astype(float, copy=False)
|
|
2704
|
+
|
|
2705
|
+
# ── G18: transform-coverage stats + loud guards ──
|
|
2706
|
+
# Observational only: the WOE values written above are
|
|
2707
|
+
# byte-identical to pre-G18 behavior. Two silent failure
|
|
2708
|
+
# modes get a voice here:
|
|
2709
|
+
# 1) rows matched only via the str() fallback — the
|
|
2710
|
+
# transform column's dtype differs from fit time;
|
|
2711
|
+
# 2) a mostly-missing transform column whose missing rate
|
|
2712
|
+
# exploded vs fit time — upstream column broken/renamed
|
|
2713
|
+
# (every such row silently gets the [Missing]-bin WOE).
|
|
2714
|
+
n_rows = int(len(series))
|
|
2715
|
+
n_missing = int(missing_arr.sum())
|
|
2716
|
+
n_hit = int(hit_arr.sum())
|
|
2717
|
+
n_exact = int((exact_arr & ~missing_arr).sum())
|
|
2718
|
+
n_fallback = n_hit - n_exact
|
|
2719
|
+
n_unmatched = n_rows - n_missing - n_hit
|
|
2720
|
+
fit_missing_rate = None
|
|
2721
|
+
fit_n_normal = float(wt["n"].sum()) if "n" in wt.columns and len(wt) else None
|
|
2722
|
+
if (
|
|
2723
|
+
fit_n_normal is not None
|
|
2724
|
+
and len(sv_table) > 0
|
|
2725
|
+
and "n" in sv_table.columns
|
|
2726
|
+
and "bin_label" in sv_table.columns
|
|
2727
|
+
):
|
|
2728
|
+
fit_n_missing = float(sv_table.loc[sv_table["bin_label"] == "[Missing]", "n"].sum())
|
|
2729
|
+
denom = fit_n_normal + float(sv_table["n"].sum())
|
|
2730
|
+
if denom > 0:
|
|
2731
|
+
fit_missing_rate = fit_n_missing / denom
|
|
2732
|
+
elif fit_n_normal:
|
|
2733
|
+
fit_missing_rate = 0.0
|
|
2734
|
+
missing_rate = n_missing / max(n_rows, 1)
|
|
2735
|
+
self._categorical_transform_stats[feat] = {
|
|
2736
|
+
"total_rows": n_rows,
|
|
2737
|
+
"missing_rows": n_missing,
|
|
2738
|
+
"missing_rate": missing_rate,
|
|
2739
|
+
"fit_missing_rate": fit_missing_rate,
|
|
2740
|
+
"exact_match_rows": n_exact,
|
|
2741
|
+
"fallback_match_rows": n_fallback,
|
|
2742
|
+
"unmatched_rows": n_unmatched,
|
|
2743
|
+
}
|
|
2744
|
+
if unseen_category_policy != "silent":
|
|
2745
|
+
if n_fallback > 0:
|
|
2746
|
+
warnings.warn(
|
|
2747
|
+
f"apply_woe: feature {feat!r} matched {n_fallback} row(s) "
|
|
2748
|
+
f"only through the str() fallback — the transform column's "
|
|
2749
|
+
f"dtype likely differs from fit time (e.g. int codes vs "
|
|
2750
|
+
f"zero-padded strings). The mapping resolved, but the same "
|
|
2751
|
+
f"drift can silently mis-map when value renderings collide; "
|
|
2752
|
+
f"align the upstream column dtype with fit time.",
|
|
2753
|
+
RuntimeWarning,
|
|
2754
|
+
stacklevel=2,
|
|
2755
|
+
)
|
|
2756
|
+
if missing_rate >= 0.5 and (
|
|
2757
|
+
fit_missing_rate is None or missing_rate - fit_missing_rate >= 0.3
|
|
2758
|
+
):
|
|
2759
|
+
fit_desc = "unknown" if fit_missing_rate is None else f"{fit_missing_rate:.1%}"
|
|
2760
|
+
warnings.warn(
|
|
2761
|
+
f"apply_woe: categorical feature {feat!r} is "
|
|
2762
|
+
f"{missing_rate:.1%} missing in the transform data vs "
|
|
2763
|
+
f"{fit_desc} at fit time — all those rows receive the "
|
|
2764
|
+
f"[Missing]-bin WOE. The upstream column is likely broken, "
|
|
2765
|
+
f"renamed or re-typed; the feature column is near-constant "
|
|
2766
|
+
f"after transform.",
|
|
2767
|
+
RuntimeWarning,
|
|
2768
|
+
stacklevel=2,
|
|
2769
|
+
)
|
|
2686
2770
|
continue
|
|
2687
2771
|
|
|
2688
2772
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: SuperModelingFactory
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.9
|
|
4
4
|
Summary: Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting.
|
|
5
5
|
Home-page: https://github.com/Kyle-J-Sun/SuperModelingFactory
|
|
6
6
|
Author: Kyle Sun
|
|
@@ -265,7 +265,7 @@ em.close_workbook()
|
|
|
265
265
|
|
|
266
266
|
## 版本
|
|
267
267
|
|
|
268
|
-
- **Version**: 0.6.
|
|
268
|
+
- **Version**: 0.6.9
|
|
269
269
|
- **Author**: Jingkai Sun
|
|
270
270
|
|
|
271
271
|
## 许可证
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: SuperModelingFactory
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.9
|
|
4
4
|
Summary: Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting.
|
|
5
5
|
Home-page: https://github.com/Kyle-J-Sun/SuperModelingFactory
|
|
6
6
|
Author: Kyle Sun
|
|
@@ -265,7 +265,7 @@ em.close_workbook()
|
|
|
265
265
|
|
|
266
266
|
## 版本
|
|
267
267
|
|
|
268
|
-
- **Version**: 0.6.
|
|
268
|
+
- **Version**: 0.6.9
|
|
269
269
|
- **Author**: Jingkai Sun
|
|
270
270
|
|
|
271
271
|
## 许可证
|
|
@@ -12,7 +12,7 @@ build-backend = "setuptools.build_meta"
|
|
|
12
12
|
|
|
13
13
|
[project]
|
|
14
14
|
name = "SuperModelingFactory"
|
|
15
|
-
version = "0.6.
|
|
15
|
+
version = "0.6.9"
|
|
16
16
|
description = "Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting."
|
|
17
17
|
readme = "README.md"
|
|
18
18
|
requires-python = ">=3.10"
|
|
@@ -15,7 +15,7 @@ def _read(path: str) -> str:
|
|
|
15
15
|
|
|
16
16
|
setup(
|
|
17
17
|
name="SuperModelingFactory",
|
|
18
|
-
version=os.environ.get("SMF_VERSION", "0.6.
|
|
18
|
+
version=os.environ.get("SMF_VERSION", "0.6.9"),
|
|
19
19
|
description="Credit risk modeling factory: WOE binning, scorecards, LightGBM, Excel reporting.",
|
|
20
20
|
long_description=_read("README.md"),
|
|
21
21
|
long_description_content_type="text/markdown",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Binning_Tool.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Binning_Tool.pyi
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Json_Data_Converter.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Model_Registry_Tool.py
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Parallel_Engine.py
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/Proc_Compare.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/XOR_Encryptor.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/XOR_Encryptor.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Core/sample_weight_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Evaluation_Tool.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Evaluation_Tool.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Model_Eval_Tool.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/Model_Eval_Tool.pyi
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/evaluate_model.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/evaluate_model.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Eval/weighted_eval_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Explainability/__init__.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Distribution_Tool.py
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Feature_Insights.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Feature_Insights.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Feature_Screen.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/PSI_Tool.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Screen_Gates.py
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Feature/Weighted_Screen.py
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/Backward_Tool.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/Backward_Tool.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Model/GBM_Search_Tool.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/field_meta.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/mock_sample.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/orchestrator.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/reject_inference.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/sample_analysis.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Pipeline/score_comparison.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Reject_Infer.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Reject_Infer.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Sample_Split.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/Sample/Sample_Split.pyi
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
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Monotone_Binner.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Plot_Tool.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Plot_Tool.pyi
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Report_Builder.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/WOE_Report_Builder.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/plot_woe_tool.py
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/WOE/plot_woe_tool.pyi
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/ref_font/WeiRuanYaHei.ttf
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/Modeling_Tool/ref_font/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/not-zip-safe
RENAMED
|
File without changes
|
{supermodelingfactory-0.6.8 → supermodelingfactory-0.6.9}/SuperModelingFactory.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|