WOE的具体公式与含义请参考:特征筛选7——WOE(Weight of Evidence)/IV值(Information Value)筛选特征(有监督筛选)

WOE转化可以将分箱的阈值覆盖原有的值,一般来讲并不会改变预测精度,但是可以为可解释性提供方便

更深入的理解请参考:

  • 风控模型—WOE与IV指标的深入理解应用:https://zhuanlan.zhihu.com/p/80134853

示例代码

我们使用一个分箱的库:scorecardbundle来做分箱
scorecardbundle github主页:https://github.com/Lantianzz/Scorecard-Bundle
scorecardbundle 文档:https://scorecard-bundle.bubu.blue/English/1.intro.html

import pandas as pddef get_dataset():from sklearn.datasets import make_classificationdata_x, data_y = make_classification(n_samples=1000, n_classes=2, n_features=6, n_informative=4, random_state=0)  # 2个特征data_df = pd.DataFrame(data_x).merge(pd.Series(data_y, name="y_label"), left_index=True, right_index=True)data_df.columns = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'y_label']return data_df.drop(["y_label"], axis=1), data_df['y_label']if __name__ == '__main__':x_value, y_value = get_dataset()# 分箱from scorecardbundle.feature_discretization import ChiMerge as cmtrans_cm = cm.ChiMerge(max_intervals=10, min_intervals=2, decimal=3, output_dataframe=True)result_cm = trans_cm.fit_transform(x_value, y_value)trans_cm.boundaries_  # 查看分箱阈值# woe转换from scorecardbundle.feature_encoding import WOE as woetrans_woe = woe.WOE_Encoder(output_dataframe=True)result_woe = trans_woe.fit_transform(result_cm, y_value)print(trans_woe.iv_)  # iv值print(trans_woe.result_dict_)  # woe dictionary and iv value for each feature

得到结果:

{'x1': 1.6346317045813659, 'x2': 0.8150596934872387, 'x3': 2.1554523388874394, 'x4': 0.09694014765234728, 'x5': 4.0535459433655925, 'x6': 0.7650559687769136}
{'x1': ({'-0.089~0.574': -0.14034198335669795, '-0.49~-0.089': -1.2982402309053493, '-1.819~-0.49': -0.6471710273616801, '-1.856~-1.819': 1.406295027699045, '-3.086~-1.856': -0.2676814057179092, '-inf~-3.086': 1.1351422572511074, '0.574~0.627': -2.177223909860503, '0.627~1.396': 0.02000066670100254, '1.396~3.756': 1.13436131227068, '3.756~inf': 26.041583870099096}, 1.6346317045813659), 'x2': ({'-1.761~0.542': -0.15463536598804814, '-2.661~-1.761': -0.7879220283290467, '-inf~-2.661': -3.643560975704789, '0.542~0.943': 0.6390398750588908, '0.943~1.866': 1.6056279303592254, '1.866~2.056': 0.24314421797227492, '2.056~inf': 2.483853907178159}, 0.8150596934872387), 'x3': ({'-0.832~0.868': 0.046387421872776745, '-1.606~-0.832': -0.8107678916070944, '-1.628~-1.606': 0.8672985270005281, '-1.794~-1.628': -0.8272971935574127, '-1.823~-1.794': 0.8672985270005281, '-2.661~-1.823': -0.827297193555032, '-2.737~-2.661': 1.406295027699045, '-inf~-2.737': -0.3854644413598186, '0.868~2.802': 1.4918172011816269, '2.802~inf': 26.447048978207263}, 2.1554523388874394), 'x4': ({'-0.706~0.394': -0.2729864579462302, '-0.776~-0.706': 1.406295027699045, '-1.904~-0.776': -0.2754635461586352, '-2.181~-1.904': 0.7131478472036047, '-2.424~-2.181': -0.47247581833830427, '-inf~-2.424': 0.27886230059432987, '0.394~0.619': 0.274892916306179, '0.619~0.752': -0.4367577357396309, '0.752~inf': 0.1614123207389391}, 0.09694014765234728), 'x5': ({'-0.81~0.146': -1.4518158675271366, '-1.099~-0.81': -0.5060924291285228, '-1.391~-1.099': 0.38396604387173733, '-1.44~-1.391': -1.0786116217760677, '-2.204~-1.44': 0.32228153854905195, '-2.852~-2.204': -0.935510778169474, '-inf~-2.852': -23.025850929940457, '0.146~0.881': -0.008986870170557375, '0.881~2.227': 1.5973502645022293, '2.227~inf': 3.8041903004751383}, 4.0535459433655925), 'x6': ({'-0.827~0.314': -0.11353072590854493, '-1.026~-0.827': -1.366293694126287, '-1.374~-1.026': -0.15184959020824298, '-1.47~-1.374': -2.1200654960643353, '-1.962~-1.47': -0.5525185259954828, '-4.027~-1.962': 0.6390398750607955, '-inf~-4.027': 25.348436689539152, '0.314~1.844': 0.39212935451196373, '1.844~inf': -0.3664162463898471}, 0.7650559687769136)}

其中trans_woe就是预期的结果

数据分箱6——分箱结果进行WOE转化相关推荐

  1. 等宽分箱_数据分析师-数据挖掘如何分箱以及对箱子中的数据进行平滑处理

    题干: 假定用于分析的数据包含属性age.数据元组中age的值如下(按递增序):13,15,16,16,19,20,20,21,22,22, 25,25,25,30,33,33,35,35,36,40 ...

  2. R语言数据预处理——离散化(分箱)

    R语言数据预处理--离散化(分箱) 一.项目环境 开发工具:RStudio R:3.5.2 相关包:infotheo,discretization,smbinning,dplyr,sqldf 二.导入 ...

  3. 数据分箱——KS分箱/卡放分箱

    目录 1.前言 2.定义 3.分箱的用处 4.分箱方法 4.1 KS分箱 变量的KS值 Best-KS分箱 4.2卡方分箱 1.前言 评分卡建模在金融行业应用得比较广泛,比如对客户的信贷诚信度进行评分 ...

  4. 特征工程之特征分箱(决策树分箱、卡方分箱、bestks以及评价标准WOE和IV)

    特征工程之特征分箱:决策树分箱.卡方分箱.bestks以及评价标准 1.WOE和IV 2.无监督分箱 2.1等频分箱 2.2等距分箱 3.有监督分箱 3.1决策树分箱 3.2best-ks分箱 3.3 ...

  5. python 等深分箱 等宽分箱结合二分箱的数据分析

    python 等深分箱 等宽分箱结合二分箱的数据分析 等深分箱等宽分箱概述 Python里可以通过pcut(等深分箱即每箱的样本量基本一致)和cut(等宽分箱即样本量之间有相同的宽度)对样本进行分箱. ...

  6. python最优分箱计算iv值_GitHub - zhaoxingfeng/WOE: Weight of Evidence,基于iv值最大思想求最优分箱...

    WOE WOE Transformation常用于信用风险评分卡(Credit Risk Scorecard)模型中,采用分箱的方式对原始特征进行非线性映射.常见的分箱方法有等宽分箱.等频分箱.最优分 ...

  7. Python数据可视化:如何创建箱线图

    一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形. 我们团队推出一个新的系列教程:Python数据可视化,针对初级和中级用户,将理论和示例代码相结合,使用matplotl ...

  8. R语言ggplot2可视化分组变量下的数据分布(线条、色彩配置)、WVPlots包的ShadowHist函数比较分组下的数据直方图、ggplot2分面图facet_wrap可视化分组变量下的数据分布

    R语言ggplot2可视化分组变量下的数据分布(线条.色彩配置).WVPlots包的ShadowHist函数比较分组下的数据直方图.ggplot2分面图facet_wrap可视化分组变量下的数据分布 ...

  9. Day 4 - PB级规模数据的Elasticsearch分库分表实践

    Day 4 - PB级规模数据的Elasticsearch分库分表实践 从2018年7月在开始在某阿里云数据中心部署Elasticsearch软件,到2018年12月共创建了15个集群,服务于客户的文 ...

最新文章

  1. 利用 Pandas 将数据集中的某列文本拆分为多行
  2. MySQL时间段datetime格式查询比较 -易犯错误解决
  3. 创建electron应用
  4. HTML中引入CSS的方法
  5. JAVA线程间协作:wait.notify.notifyAll
  6. 实时平台在趣头条的建设实践
  7. 洛谷P5724、P5727、P5728、P5729题题解(Java语言描述)
  8. 数据库-MySQL中间的注释
  9. JS的forEach和map方法的区别
  10. A - Giga Tower
  11. linux awk '{print $2}' 用法
  12. PDF 文档解除密码
  13. 每个人都应该了解的金融小知识 -- 利率计算
  14. 日本雅虎API电商接口获取方法 批量发布、订单获取、后台操作等
  15. 服务器自带的ftp报错505,使用Delphi带的FTP控件删除服务器上的文件,该文件正在被使用(ASF格式影片,正在被点播)(100分)...
  16. Bit-Vector框架(1) — Reaching Definition Analysis
  17. 充电器电压和电池电压关系
  18. 读取歌词文本并按时间显示歌词
  19. python 信用卡系统+购物商城见解
  20. Springboot @Lazy注解

热门文章

  1. 福玛特机器人怎么开机_福玛特扫地机器人常见问题故障汇总
  2. openGL与openGL ES 的区别
  3. vue项目原理分析-3:vuex
  4. Linux disk 100% busy,谁造成的?
  5. Java多线程学习(八)线程池与Executor 框架
  6. 内核常见锁的机制与实现分析1
  7. Spring详解(四)------注解配置IOC、DI
  8. 虚拟化桌面初始化配置处理
  9. 《大数据管理概论》一2.5 知识融合技术
  10. Linux-Shell脚本学习心得(第二天)