toad库进行分箱操作
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、toad是什么?
- 二、使用步骤
- 1.初始的分箱结果
- 2.调整后的分箱结果
- 总结
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、toad是什么?
- Toad 是专为工业界模型开发设计的Python工具包,特别针对评分卡的开发
- Toad 的功能覆盖了建模全流程,从 EDA、特征工程、特征筛选 到 模型验证和评分卡转化
- Toad 的主要功能极大简化了建模中最重要最费时的流程,即特征筛选和分箱。
二、使用步骤
1.初始的分箱结果
代码如下:
# - 通常使用双变量图(Bivar图 Bivariate graph)来评价分箱结果。注意,信贷风险分析中Bivar图,纵轴固定为负样本占比import matplotlib.pyplot as plt
%matplotlib inline
from toad.plot import bin_plotdata = model_data.iloc[:5000,:]#初始的分箱结果
def get_bins(data,target):# 为了节约时间,只选取5000条数据做实验data = data.iloc[:5000,:]# 初始化一个combiner类combiner = toad.transform.Combiner()# 训练数据并指定分箱方法,其它参数可选 # min_samples: 每箱至少包含样本量,可以是数字或者占比combiner.fit(data,y=target, method='chi', min_samples = 0.05)# 以字典形式保存分箱结果bins = combiner.export()#每个特征分箱原始个数,#每个特征分箱个数据值,正确的应该是len(v)+2,一般情况下这个值都会过大,所以直接携程len(v)nbins = []for v in bins.values():nbins.append(len(v))return nbinsnbins = get_bins(model_data, 'SeriousDlqin2yrs')
2.调整后的分箱结果
代码如下:
def get_new_bins(data,target,nbins):'''# 通过画出分箱图形调整分箱个数,并返回新的分箱'''#调整后特征分箱个数nbins = [4, 6, 3, 3, 2, 5, 4, 3, 2, 2]bins = {}for i,c in enumerate(data.columns[1:].to_list()):c2 = toad.transform.Combiner()c2.fit(data[[c,target]],y=target, method='chi',n_bins=nbins[i])bins.update(c2.export())#传给bin_plot的数据必须是分箱转化之后的transformed = c2.transform(data[[c,target]],labels=True)#上图中柱形图表示每一箱的占比,折线图表示每一箱的坏样本率。一般折线图要呈现出单调的趋势# - 可以通过调整箱数实现单调趋势bin_plot(transformed,x=c,target=target)return binsnew_bins = get_new_bins(data, 'SeriousDlqin2yrs', nbins)
#获取woe
def get_woe(data, new_bins, target ):# 使用toad计算woeX_train,X_test,Y_train,Y_test = train_test_split(data.drop(target,axis=1),data[target],test_size=0.25,random_state=450)data_train = pd.concat([X_train,Y_train],axis=1)#增加一列区分训练/测试的特征data_train['type'] = 'train'data_test = pd.concat([X_test,Y_test],axis=1)data_test['type'] = 'test'c2 = toad.transform.Combiner()#把新的分箱规则设置进去c2.set_rules(new_bins)data_ = pd.concat([data_train,data_test],axis = 0)#分成训练集测试集,根据图形观察是否需要调整分箱 for c in data_.columns[:-2]:#分箱temp_data = c2.transform(data_[[c,target,'type']])from toad.plot import badrate_plot, proportion_plotbadrate_plot(temp_data, target = target, x = 'type', by = c) #绘制每一箱占比情况图,根据情况继续调整分箱结果proportion_plot(temp_data[c])#将特征的值转化为分箱的箱号。binned_data = c2.transform(data_train)#计算WOEtranser = toad.transform.WOETransformer()#对WOE的值进行转化,映射到原数据集上。对训练集用fit_transform,测试集用transform.data_tr_woe = transer.fit_transform(binned_data, binned_data[target], exclude=[target,'type'])return data_tr_woedata_tr_woe = get_woe(data, new_bins, 'SeriousDlqin2yrs')
总结
toad库的分箱更加简便
toad库进行分箱操作相关推荐
- 【Python】使用Pandas对数值进行分箱操作的4种方法
使用Pandas对数值进行分箱操作的4种方法 方法1:between & loc 方法2:cut 方法3:qcut 方法4:value_counts 补充材料 分箱是一种常见的数据预处理技术, ...
- python 数据处理之分箱操作
什么是分箱? 简单点说就是将不同的东西,按照特定的条件放到一个指定容器里,比如水果 把绿色的放一个篮子里,红色一个篮子等等,这个篮子就是箱,而水果就是数据 颜色就是条件 什么样式的数据要进行分箱 数据 ...
- Pandas 对数值进行分箱操作的4种方法总结对比
分箱是一种常见的数据预处理技术有时也被称为分桶或离散化,他可用于将连续数据的间隔分组到"箱"或"桶"中.在本文中,我们将讨论使用 python Pandas 库 ...
- 数据预处理的分箱操作
介绍 我们在建立模型前,一般需要对特征变量进行离散化,特征离散化后,模型会更稳定,降低模型过拟合的风险.尤其是采用 logsitic 建立评分卡模型时,必须对连续变量进行离散化.而特征离散化处理通常采 ...
- mysql内数据离散化,R语言数据预处理操作——离散化(分箱)
一.项目环境 开发工具:RStudio R:3.5.2 相关包:infotheo,discretization,smbinning,dplyr,sqldf 二.导入数据 # 这里我们使用的是鸢尾花数据 ...
- 《Python金融大数据风控建模实战》 第6章 变量分箱方法
<Python金融大数据风控建模实战> 第6章 变量分箱方法 本章引言 Python代码实现及注释 本章引言 变量分箱是一种特征工程方法,意在增强变量的可解释性与预测能力.变量分箱方法主要 ...
- mysql 分组排序_Python、PowerBI、Excel、MySQL,都能做?搞清楚数据聚合与分箱
阅读提示 本内容为日常频繁使用的数据处理操作,不涉及底层技术问题,烦请爱钻牛角的杠精绕行. 本内容尽量简单直白.步骤详细,适合数据分析入门.特别喜欢技术语言的大佬们,可自行跳过. 上一篇:数据更新删除 ...
- 从0到1建立一张评分卡之变量分箱
变量分箱是评分卡建模流程中的关键环节,可以说是评分卡的核心环节.合理的分箱可以消除变量的量纲影响,而且能减少异常值等噪声数据的影响,有效避免模型过拟合.此外,分箱可以给模型实现业务上的可解释性,可 ...
- 系统学习机器学习之特征工程(四)--分箱总结
首先from wiki给出一个标准的连续特征离散化的定义: 在统计和机器学习中,离散化是指将连续属性,特征或变量转换或划分为离散或标称属性/特征/变量/间隔的过程.这在创建概率质量函数时非常有用 - ...
- 【评分卡】评分卡入门与创建原则——分箱、WOE、IV、分值分配
本文主要讲"变量选择""模型开发""评分卡创建和刻度" 变量分析 首先,需要确定变量之间是否存在共线性,若存在高度相关性,只需保存最稳定.预 ...
最新文章
- 43. Multiply Strings 字符串相乘
- 中石油训练赛 - Bouldering(最短路+剪枝)
- 实验五——循环结构学习总结
- 再不懂ZooKeeper,就安安心心把这篇文章看完
- FEA-Net论文梳理
- Linux-Grep命令详解
- 蓝桥杯官网练习系统入门训练(一)
- Java 18 新特性
- 操作系统-信号量机制;用信号量机制实现进程互斥、同步、前驱关系
- 录视频时帧数越高越好么?
- Neuronink是医学奇迹的噩梦
- 一文读懂自动驾驶传感器之激光雷达、毫米波雷达、超声波雷达及摄像头
- 病毒周报(100927至101010)
- mysql uftb8mb4 储存 emoji 表情失败
- MAC Vmware FUSION网络配置
- 企业CDN缓存系统varnish——搭建一个最基本的varnish系统
- HTTP中常见的各种状态码详解及解决方案
- JDBC连接mysql遇到的问题
- Online Learning and Pricing with Reusable Resources: Linear Bandits with Sub-Exponential Rewards: Li
- css之background-attachment属性