yq преди 4 месеца
родител
ревизия
af86f15bb5
променени са 3 файла, в които са добавени 12 реда и са изтрити 4 реда
  1. 7 2
      feature/feature_utils.py
  2. 5 2
      feature/strategy_iv.py
  3. BIN
      template/模型开发报告模板_lr.docx

+ 7 - 2
feature/feature_utils.py

@@ -8,6 +8,7 @@
 import pandas as pd
 import toad as td
 from sklearn.preprocessing import KBinsDiscretizer
+from statsmodels.stats.outliers_influence import variance_inflation_factor as vif
 
 from entitys import DataSplitEntity
 from enums import BinsStrategyEnum
@@ -120,5 +121,9 @@ def f_get_corr(data: pd.DataFrame, meth: str = 'spearman') -> pd.DataFrame:
     return data.corr(method=meth)
 
 
-def f_get_ivf(data: DataSplitEntity) -> pd.DataFrame:
-    pass
+def f_get_ivf(data: pd.DataFrame) -> pd.DataFrame:
+    vif_v = [vif(data.values, data.columns.get_loc(i)) for i in data.columns]
+    vif_df = pd.DataFrame()
+    vif_df["变量"] = data.columns
+    vif_df['vif'] = vif_v
+    return vif_df

+ 5 - 2
feature/strategy_iv.py

@@ -14,9 +14,10 @@ import scorecardpy as sc
 import seaborn as sns
 from pandas.core.dtypes.common import is_numeric_dtype
 
+
 from entitys import DataSplitEntity, CandidateFeatureEntity, DataPreparedEntity, DataFeatureEntity, MetricFucEntity
 from init import f_get_save_path
-from .feature_utils import f_judge_monto, f_get_corr
+from .feature_utils import f_judge_monto, f_get_corr, f_get_ivf
 from .filter_strategy_base import FilterStrategyBase
 
 plt.rcParams['figure.figsize'] = (8, 8)
@@ -366,6 +367,8 @@ class StrategyIv(FilterStrategyBase):
         plt.xticks(rotation=90)
         path = f_get_save_path(f"var_corr.png")
         plt.savefig(path)
-        metric_value_dict["变量有效性"] = MetricFucEntity(image_path=path)
+        # vif
+        vif_df = f_get_ivf(train_woe)
+        metric_value_dict["变量有效性"] = MetricFucEntity(image_path=path, table=vif_df)
 
         return metric_value_dict

BIN
template/模型开发报告模板_lr.docx