Python xverse包WOE转换如何自定义分箱数量?
代码修改方案
你只需要调整WOE()类初始化时的参数即可实现需求,修改后的完整代码如下:
# 初始化WOE对象时指定分箱规则 clf = WOE( method='quantile', # 分箱方法设为分位数分箱,即按百分位划分 n_bins=10, # 非缺失值默认分为10组 na_separate=True # 缺失值单独作为一组,最终非缺失10组+缺失1组共11组 ) clf.fit(data_fin, data_fin['revocation']) data2 = clf.woe_df data_woe = clf.transform(data_fin, data_fin['revocation'])
参数说明
method:指定分箱方法,默认值为'dt'(决策树分箱),这也是你之前默认只分出3组的原因,改为'quantile'即可实现按百分位等频分箱n_bins:指定非缺失值的分箱数量,设置为10即可满足你要分10个百分位组的需求na_separate:是否将缺失值单独作为一组,默认值为True,如果之前你手动改过这个参数可以显式声明确保生效
如果部分特征分位数存在重复值导致分箱数不足10组,可以在初始化时额外加参数min_sample=0.01,允许分箱最小样本占比低至1%,避免因为重复值自动合并组。
内容的提问来源于stack exchange,提问作者Davit Bidzhoyan
相关产品推荐
相关产品推荐

