SuperModelingFactory 0.7.0__tar.gz → 0.7.1__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.
Files changed (116) hide show
  1. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/Feature_Insights.py +27 -3
  2. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/WOE_Engine_Feature_Patch.py +70 -3
  3. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/__init__.py +1 -1
  4. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/PKG-INFO +2 -2
  5. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/README.md +1 -1
  6. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/SuperModelingFactory.egg-info/PKG-INFO +2 -2
  7. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/pyproject.toml +1 -1
  8. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/setup.py +1 -1
  9. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/ExcelMaster/ExcelFormatTool.py +0 -0
  10. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/ExcelMaster/ExcelMaster.py +0 -0
  11. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/ExcelMaster/Template.py +0 -0
  12. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/ExcelMaster/Utility.py +0 -0
  13. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/ExcelMaster/__init__.py +0 -0
  14. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/LICENSE +0 -0
  15. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/MANIFEST.in +0 -0
  16. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Binning_Tool.py +0 -0
  17. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Binning_Tool.pyi +0 -0
  18. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Check_DuckDB_Compatibility.py +0 -0
  19. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Json_Data_Converter.py +0 -0
  20. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Model_Registry_Tool.py +0 -0
  21. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/ODPS_Tool.py +0 -0
  22. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Parallel_Engine.py +0 -0
  23. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Parallel_ODPS_Manager.py +0 -0
  24. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Proc_Compare.py +0 -0
  25. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Slope_Tool.py +0 -0
  26. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/Slope_Tool.pyi +0 -0
  27. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/XOR_Encryptor.py +0 -0
  28. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/XOR_Encryptor.pyi +0 -0
  29. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/__init__.py +0 -0
  30. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/kDataFrame.py +0 -0
  31. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/kDataFrame.pyi +0 -0
  32. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/sample_weight_utils.py +0 -0
  33. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Core/utils.py +0 -0
  34. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/Evaluation_Tool.py +0 -0
  35. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/Evaluation_Tool.pyi +0 -0
  36. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/Model_Eval_Tool.py +0 -0
  37. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/Model_Eval_Tool.pyi +0 -0
  38. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/__init__.py +0 -0
  39. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/evaluate_model.py +0 -0
  40. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/evaluate_model.pyi +0 -0
  41. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Eval/weighted_eval_utils.py +0 -0
  42. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Explainability/Coalition_Structure.py +0 -0
  43. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Explainability/Model_Explainer.py +0 -0
  44. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Explainability/__init__.py +0 -0
  45. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/Distribution_Tool.py +0 -0
  46. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/Distribution_Tool.pyi +0 -0
  47. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/Feature_Insights.pyi +0 -0
  48. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/Feature_Screen.py +0 -0
  49. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/ODPS_Distribution_Tool.py +0 -0
  50. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/ODPS_Distribution_Tool.pyi +0 -0
  51. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/PSI_Tool.py +0 -0
  52. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/PSI_Tool.pyi +0 -0
  53. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/Screen_Gates.py +0 -0
  54. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/Weighted_Screen.py +0 -0
  55. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Feature/__init__.py +0 -0
  56. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/Backward_Tool.py +0 -0
  57. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/Backward_Tool.pyi +0 -0
  58. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/GBM_Search_Tool.py +0 -0
  59. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/GBM_Tool.py +0 -0
  60. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/GBM_Tool.pyi +0 -0
  61. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/LRM_Tool.py +0 -0
  62. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/LRM_Tool.pyi +0 -0
  63. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Model/__init__.py +0 -0
  64. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/__init__.py +0 -0
  65. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/_common.py +0 -0
  66. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/credit_model.py +0 -0
  67. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/feature_validation.py +0 -0
  68. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/field_meta.py +0 -0
  69. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/mock_sample.py +0 -0
  70. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/orchestrator.py +0 -0
  71. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/reject_inference.py +0 -0
  72. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/sample_analysis.py +0 -0
  73. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/score_comparison.py +0 -0
  74. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/score_consistency_uat.py +0 -0
  75. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Pipeline/screening_artifact.py +0 -0
  76. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Sample/Distribution_Adaptation.py +0 -0
  77. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Sample/Distribution_Adaptation.pyi +0 -0
  78. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Sample/Reject_Infer.py +0 -0
  79. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Sample/Reject_Infer.pyi +0 -0
  80. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Sample/Sample_Split.py +0 -0
  81. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Sample/Sample_Split.pyi +0 -0
  82. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/Sample/__init__.py +0 -0
  83. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/UAT/UAT_Consistency_Checker.py +0 -0
  84. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/UAT/__init__.py +0 -0
  85. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Adapter.py +0 -0
  86. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Adapter.pyi +0 -0
  87. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Master.py +0 -0
  88. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Master.pyi +0 -0
  89. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Monotone_Binner.py +0 -0
  90. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Monotone_Binner.pyi +0 -0
  91. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Plot_Tool.py +0 -0
  92. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Plot_Tool.pyi +0 -0
  93. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Report_Builder.py +0 -0
  94. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Report_Builder.pyi +0 -0
  95. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Tool.py +0 -0
  96. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/WOE_Tool.pyi +0 -0
  97. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/__init__.py +0 -0
  98. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/plot_woe_tool.py +0 -0
  99. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/WOE/plot_woe_tool.pyi +0 -0
  100. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/_utils/__init__.py +0 -0
  101. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/_utils/nan_guard.py +0 -0
  102. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/_utils/robust.py +0 -0
  103. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/_utils/sentinels.py +0 -0
  104. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/ref_font/KaiTi.ttf +0 -0
  105. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/ref_font/WeiRuanYaHei.ttf +0 -0
  106. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/ref_font/__init__.py +0 -0
  107. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Modeling_Tool/ref_font/simsun.ttc +0 -0
  108. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Report/Report_Tool.py +0 -0
  109. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/Report/__init__.py +0 -0
  110. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/SuperModelingFactory.egg-info/SOURCES.txt +0 -0
  111. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/SuperModelingFactory.egg-info/dependency_links.txt +0 -0
  112. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/SuperModelingFactory.egg-info/not-zip-safe +0 -0
  113. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/SuperModelingFactory.egg-info/requires.txt +0 -0
  114. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/SuperModelingFactory.egg-info/top_level.txt +0 -0
  115. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/requirements.txt +0 -0
  116. {supermodelingfactory-0.7.0 → supermodelingfactory-0.7.1}/setup.cfg +0 -0
@@ -417,14 +417,38 @@ class CorrelationFilter:
417
417
  self.correlated_dict = {}
418
418
  self.filtered_varlist = []
419
419
  self._corr_matrix_cache = None
420
+ self._corr_matrix_excluded = set()
420
421
  self._metric_summary_cache = None
421
422
 
423
+ def _corr_matrix_frame(self, varlist):
424
+ # 0.7.0-R1: numeric-subset correlation base. A pure-numeric varlist is
425
+ # byte-identical to the legacy self.data[varlist].corr() path. Non-numeric
426
+ # cols (raw Pearson is undefined) are excluded and tracked in
427
+ # self._corr_matrix_excluded; _high_corr_pairs reindexes them back as NaN
428
+ # rows/cols so they survive the corr stage instead of crashing the float
429
+ # cast. At most one raw-value UserWarning per matrix build (no WOE binner).
430
+ non_numeric = [c for c in varlist if not pd.api.types.is_numeric_dtype(self.data[c])]
431
+ if not non_numeric:
432
+ self._corr_matrix_excluded = set()
433
+ return self.data[varlist]
434
+ self._corr_matrix_excluded = set(non_numeric)
435
+ warnings.warn(
436
+ f"raw-value correlation skips {len(non_numeric)} non-numeric "
437
+ f"feature(s) {non_numeric[:5]}; they are kept through the corr "
438
+ f"stage. Set corr_use_woe_bins=True to correlate categorical "
439
+ f"features via their WOE encoding.",
440
+ UserWarning,
441
+ stacklevel=2,
442
+ )
443
+ selected = [c for c in varlist if c not in self._corr_matrix_excluded]
444
+ return self.data[selected]
445
+
422
446
  def _high_corr_pairs(self, varlist):
423
447
  if (
424
448
  self._corr_matrix_cache is None
425
- or not set(varlist).issubset(self._corr_matrix_cache.columns)
449
+ or not (set(varlist) <= set(self._corr_matrix_cache.columns) | self._corr_matrix_excluded)
426
450
  ):
427
- self._corr_matrix_cache = self.data[varlist].corr(method=self.method)
451
+ self._corr_matrix_cache = self._corr_matrix_frame(varlist).corr(method=self.method)
428
452
  matrix = self._corr_matrix_cache.reindex(index=varlist, columns=varlist)
429
453
  values = matrix.to_numpy(dtype=float)
430
454
  row_idx, col_idx = np.triu_indices(len(varlist), k=1)
@@ -561,7 +585,7 @@ class CorrelationFilter:
561
585
  >>> filter_analyzer = CorrelationFilter(df, 'target')
562
586
  >>> keep_vars = filter_analyzer.remove_highly_correlated(['var1', 'var2', 'var3'])
563
587
  """
564
- self._corr_matrix_cache = self.data[varlist].corr(method=self.method)
588
+ self._corr_matrix_cache = self._corr_matrix_frame(varlist).corr(method=self.method)
565
589
  self._metric_summary_cache = None
566
590
  self._metric_summary(varlist)
567
591
  last_keep_list = self.filter_single_iteration(varlist)
@@ -467,14 +467,81 @@ class CorrelationFilter:
467
467
  self.correlated_dict = {}
468
468
  self.filtered_varlist = []
469
469
  self._corr_matrix_cache = None
470
+ self._corr_matrix_excluded = set()
470
471
  self._metric_summary_cache = None
471
472
 
473
+ def _corr_matrix_frame(self, varlist):
474
+ # 0.7.0-R1: mixed correlation base. Numeric cols stay raw so a
475
+ # pure-numeric varlist is byte-identical to the legacy .corr() path;
476
+ # non-numeric cols are WOE-encoded via the screening binner
477
+ # (corr_use_woe_bins semantics) and renamed back to raw names. Cols that
478
+ # cannot be encoded go to self._corr_matrix_excluded: they leave the
479
+ # matrix and survive the corr stage as NaN rows/cols once _high_corr_pairs
480
+ # reindexes them back in (same as the weighted raw precedent). At most one
481
+ # UserWarning per matrix build.
482
+ non_numeric = [c for c in varlist if not pd.api.types.is_numeric_dtype(self.data[c])]
483
+ if not non_numeric:
484
+ self._corr_matrix_excluded = set()
485
+ return self.data[varlist]
486
+
487
+ encoded = {}
488
+ excluded = set()
489
+ if self.woe_binner is not None:
490
+ suffix = str(getattr(self.woe_binner, "woe_suffix", "_woe"))
491
+ try:
492
+ adapter = as_woe_engine(self.woe_binner, woe_suffix=suffix)
493
+ except TypeError as exc:
494
+ raise TypeError(
495
+ "corr_use_woe_bins=True routed categorical feature(s) through "
496
+ "the screening WOE engine at the corr stage, but the supplied "
497
+ "woe_binner is an Unsupported WOE engine. Expected WOE_Master, "
498
+ "MonotoneWOEBinner, or WOEEngineAdapter."
499
+ ) from exc
500
+ suffix = adapter.woe_suffix
501
+ try:
502
+ tx = adapter.transform(self.data.copy(), varlist=non_numeric, suffix=suffix)
503
+ except (TypeError, ValueError, KeyError, AttributeError, np.linalg.LinAlgError):
504
+ tx = None
505
+ for name in non_numeric:
506
+ column = f"{name}{suffix}"
507
+ if tx is not None and column in tx.columns and pd.api.types.is_numeric_dtype(tx[column]):
508
+ encoded[name] = tx[column].to_numpy()
509
+ else:
510
+ excluded.add(name)
511
+ if excluded:
512
+ excluded_list = [c for c in non_numeric if c in excluded]
513
+ warnings.warn(
514
+ f"corr_use_woe_bins=True could not WOE-encode {len(excluded)} "
515
+ f"feature(s) {excluded_list[:5]}; they are excluded from the "
516
+ f"correlation matrix and kept through the corr stage. Refit the "
517
+ f"screening WOE engine to cover them.",
518
+ UserWarning,
519
+ stacklevel=2,
520
+ )
521
+ else:
522
+ excluded = set(non_numeric)
523
+ warnings.warn(
524
+ f"raw-value correlation skips {len(non_numeric)} non-numeric "
525
+ f"feature(s) {non_numeric[:5]}; they are kept through the corr "
526
+ f"stage. Set corr_use_woe_bins=True to correlate categorical "
527
+ f"features via their WOE encoding.",
528
+ UserWarning,
529
+ stacklevel=2,
530
+ )
531
+
532
+ self._corr_matrix_excluded = excluded
533
+ selected = [c for c in varlist if c not in excluded]
534
+ frame = self.data[selected].copy()
535
+ for name, values in encoded.items():
536
+ frame[name] = values
537
+ return frame
538
+
472
539
  def _high_corr_pairs(self, varlist):
473
540
  if (
474
541
  self._corr_matrix_cache is None
475
- or not set(varlist).issubset(self._corr_matrix_cache.columns)
542
+ or not (set(varlist) <= set(self._corr_matrix_cache.columns) | self._corr_matrix_excluded)
476
543
  ):
477
- self._corr_matrix_cache = self.data[varlist].corr(method=self.method)
544
+ self._corr_matrix_cache = self._corr_matrix_frame(varlist).corr(method=self.method)
478
545
  matrix = self._corr_matrix_cache.reindex(index=varlist, columns=varlist)
479
546
  values = matrix.to_numpy(dtype=float)
480
547
  row_idx, col_idx = np.triu_indices(len(varlist), k=1)
@@ -562,7 +629,7 @@ class CorrelationFilter:
562
629
  self.filtered_varlist = getattr(self._base, "filtered_varlist", [])
563
630
  return result
564
631
 
565
- self._corr_matrix_cache = self.data[varlist].corr(method=self.method)
632
+ self._corr_matrix_cache = self._corr_matrix_frame(varlist).corr(method=self.method)
566
633
  self._metric_summary_cache = None
567
634
  self._metric_summary(varlist)
568
635
  last_keep_list = self.filter_single_iteration(varlist)
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  __author__ = "Jingkai Sun"
4
- __version__ = "0.7.0"
4
+ __version__ = "0.7.1"
5
5
 
6
6
  from ._utils import SMF_MISSING_BIN
7
7
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SuperModelingFactory
3
- Version: 0.7.0
3
+ Version: 0.7.1
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.7.0
268
+ - **Version**: 0.7.1
269
269
  - **Author**: Jingkai Sun
270
270
 
271
271
  ## 许可证
@@ -208,7 +208,7 @@ em.close_workbook()
208
208
 
209
209
  ## 版本
210
210
 
211
- - **Version**: 0.7.0
211
+ - **Version**: 0.7.1
212
212
  - **Author**: Jingkai Sun
213
213
 
214
214
  ## 许可证
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: SuperModelingFactory
3
- Version: 0.7.0
3
+ Version: 0.7.1
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.7.0
268
+ - **Version**: 0.7.1
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.7.0"
15
+ version = "0.7.1"
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.7.0"),
18
+ version=os.environ.get("SMF_VERSION", "0.7.1"),
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",