Open nllatt opened 2 years ago
@nllatt toad.quality
计算IV等需要分箱的指标时,只会对 数值类型 的变量进行分箱,如果原始变量不是数值类型,则按照类别型变量直接进行计算,而通常类别较多时,IV会越高这是符合逻辑的。我想这应该可以帮你理解1、2问题的现象。
对于 selection
中的 数值变量,默认会使用 dt
进行 10
组的分箱
@nllatt
toad.quality
计算IV等需要分箱的指标时,只会对 数值类型 的变量进行分箱,如果原始变量不是数值类型,则按照类别型变量直接进行计算,而通常类别较多时,IV会越高这是符合逻辑的。我想这应该可以帮你理解1、2问题的现象。 对于selection
中的 数值变量,默认会使用dt
进行10
组的分箱
在使用dt进行10分箱后,计算出来的分段iv,加起来会比通过quality计算出来的值更小一些,想问一下quality计算出来的iv的策略是啥
作者您好,想请教一下三个问题:
1. quality函数是否支持传入method参数呢?
我使用下面两行代码得到了完全一致的结果
nowoe_ret = toad.quality(df_ftr, target, indicators=['iv'], method='dt')
nowoe_ret2 = toad.quality(df_ftr, target, indicators=['iv'], method='quantile')
2. 使用quality函数的IV计算逻辑是否和使用combiner+woetransform分箱后的计算IV逻辑是否一致呢?
我在使用下面两段代码分别计算iv,得到的结果相差非常多,并且使用code1计算的结果会倾向于将类别数很多的特征计算出非常高的IV值,但是code2不会。不知道是什么原因导致的这种现象呢? code1:
nowoe_ret = toad.quality(df_ftr, target, indicators=['iv'], method='dt')
code2: combiner.fit(cat_train,df_train[target],method='dt') train_bin = combiner.transform(cat_train,labels=True) t = toad.transform.WOETransformer() train_cate_woe = t.fit_transform(train_bin,df_train[target],exclude=[target]) frame, iv_drop, iv_list = toad.selection.drop_iv(train_cate_woe, target = target, threshold = 0.01, return_drop = True, return_iv = True) iv_df = iv_list.reset_index()3. 对于未进行分箱处理的numerical变量,selection默认使用什么分箱来计算IV值呢?
使用的toad版本:0.0.64