瀏覽代碼

add: 添加toad的分箱代码

wangzhaoyang 5 月之前
父節點
當前提交
7c564104cb
共有 1 個文件被更改,包括 10 次插入2 次删除
  1. 10 2
      feature/feature_utils.py

+ 10 - 2
feature/feature_utils.py

@@ -8,6 +8,7 @@ import pandas as pd
 from sklearn.preprocessing import KBinsDiscretizer
 from entitys import DataSplitEntity
 from enums import BinsStrategyEnum
+import toad as td
 
 
 def f_get_bins(data: DataSplitEntity, feat: str, strategy: str='quantile', nbins: int=10) -> pd.DataFrame:
@@ -20,8 +21,15 @@ def f_get_bins(data: DataSplitEntity, feat: str, strategy: str='quantile', nbins
     if strategy == BinsStrategyEnum.WIDTH.value:
         bin_width = (data[feat].max() - data[feat].min()) / nbins
         return pd.cut(data[feat], bins=nbins, labels=[f'Bin_{i}' for i in range(1, nbins + 1)])
-
-
+    # 使用toad分箱
+    '''
+    c = td.transfrom.Combiner()
+    # method参数需要根据toad指定的几种方法名称选择
+    c.fit(data, y = 'target', method = strategy, min_samples=None, n_bins = nbins, empty_separate = False)
+    # 返回toad分箱combiner,用于训练集和测试集的分箱
+    # 可使用c.export()[feature]查看某一特征的分箱临界值
+    return c
+    '''
 def f_get_woe(data: DataSplitEntity) -> pd.DataFrame:
     pass