提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、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库进行分箱操作相关推荐

  1. 【Python】使用Pandas对数值进行分箱操作的4种方法

    使用Pandas对数值进行分箱操作的4种方法 方法1:between & loc 方法2:cut 方法3:qcut 方法4:value_counts 补充材料 分箱是一种常见的数据预处理技术, ...

  2. python 数据处理之分箱操作

    什么是分箱? 简单点说就是将不同的东西,按照特定的条件放到一个指定容器里,比如水果 把绿色的放一个篮子里,红色一个篮子等等,这个篮子就是箱,而水果就是数据 颜色就是条件 什么样式的数据要进行分箱 数据 ...

  3. Pandas 对数值进行分箱操作的4种方法总结对比

    分箱是一种常见的数据预处理技术有时也被称为分桶或离散化,他可用于将连续数据的间隔分组到"箱"或"桶"中.在本文中,我们将讨论使用 python Pandas 库 ...

  4. 数据预处理的分箱操作

    介绍 我们在建立模型前,一般需要对特征变量进行离散化,特征离散化后,模型会更稳定,降低模型过拟合的风险.尤其是采用 logsitic 建立评分卡模型时,必须对连续变量进行离散化.而特征离散化处理通常采 ...

  5. mysql内数据离散化,R语言数据预处理操作——离散化(分箱)

    一.项目环境 开发工具:RStudio R:3.5.2 相关包:infotheo,discretization,smbinning,dplyr,sqldf 二.导入数据 # 这里我们使用的是鸢尾花数据 ...

  6. 《Python金融大数据风控建模实战》 第6章 变量分箱方法

    <Python金融大数据风控建模实战> 第6章 变量分箱方法 本章引言 Python代码实现及注释 本章引言 变量分箱是一种特征工程方法,意在增强变量的可解释性与预测能力.变量分箱方法主要 ...

  7. mysql 分组排序_Python、PowerBI、Excel、MySQL,都能做?搞清楚数据聚合与分箱

    阅读提示 本内容为日常频繁使用的数据处理操作,不涉及底层技术问题,烦请爱钻牛角的杠精绕行. 本内容尽量简单直白.步骤详细,适合数据分析入门.特别喜欢技术语言的大佬们,可自行跳过. 上一篇:数据更新删除 ...

  8. 从0到1建立一张评分卡之变量分箱

      变量分箱是评分卡建模流程中的关键环节,可以说是评分卡的核心环节.合理的分箱可以消除变量的量纲影响,而且能减少异常值等噪声数据的影响,有效避免模型过拟合.此外,分箱可以给模型实现业务上的可解释性,可 ...

  9. 系统学习机器学习之特征工程(四)--分箱总结

    首先from wiki给出一个标准的连续特征离散化的定义: 在统计和机器学习中,离散化是指将连续属性,特征或变量转换或划分为离散或标称属性/特征/变量/间隔的过程.这在创建概率质量函数时非常有用 - ...

  10. 【评分卡】评分卡入门与创建原则——分箱、WOE、IV、分值分配

    本文主要讲"变量选择""模型开发""评分卡创建和刻度" 变量分析 首先,需要确定变量之间是否存在共线性,若存在高度相关性,只需保存最稳定.预 ...

最新文章

  1. 43. Multiply Strings 字符串相乘
  2. 中石油训练赛 - Bouldering(最短路+剪枝)
  3. 实验五——循环结构学习总结
  4. 再不懂ZooKeeper,就安安心心把这篇文章看完
  5. FEA-Net论文梳理
  6. Linux-Grep命令详解
  7. 蓝桥杯官网练习系统入门训练(一)
  8. Java 18 新特性
  9. 操作系统-信号量机制;用信号量机制实现进程互斥、同步、前驱关系
  10. 录视频时帧数越高越好么?
  11. Neuronink是医学奇迹的噩梦
  12. 一文读懂自动驾驶传感器之激光雷达、毫米波雷达、超声波雷达及摄像头
  13. 病毒周报(100927至101010)
  14. mysql uftb8mb4 储存 emoji 表情失败
  15. MAC Vmware FUSION网络配置
  16. 企业CDN缓存系统varnish——搭建一个最基本的varnish系统
  17. HTTP中常见的各种状态码详解及解决方案
  18. JDBC连接mysql遇到的问题
  19. Online Learning and Pricing with Reusable Resources: Linear Bandits with Sub-Exponential Rewards: Li
  20. css之background-attachment属性

热门文章

  1. 凸优化有关的数值线性代数知识五:作业题
  2. 凸优化第二章凸集 2.3 保凸运算
  3. 微信支付之获取code
  4. AWS CSAA -- 04 AWS Object Storage and CDN - S3 Glacier and CloudFront(二)
  5. 常见makefile写法
  6. Firebug 教程
  7. [Linux]不可重入函数
  8. 【非原创】codeforces 1070C Cloud Computing 【线段树树状数组】
  9. js判断移动端或是pc端
  10. BZOJ1877 [SDOI2009]晨跑 【费用流】