【简易】5分钟了解什么是等频、等距分箱(原理+两种代码实现方法)


前言

在实现评分卡前,一般需要将变量进行分箱。变量的分箱可能通过手动分箱,也可以使用自动分箱算法来进行分箱,其中常用的自动分箱方法有:等频分箱、等距分箱、卡方分箱、KS分箱、决策树分箱等。下面展示什么是等频等距分箱,以及代码的实现。


一、等频、等距分箱

1.1. 等频分箱

等频分箱是指按相等频数进行分箱,即分组后每组的样本一样多,如下所示:
等频分箱
如图所示,等频分箱就是样本从小到大排列,每n个样本作为一组,即通过等频分箱,最终每组的样本是一致的。

1.2. 等距分箱

等距分箱是指按固定距离进行分箱,每组的组距一致,如下所示:

等距分箱
例如数据的范围为[0,10],设定组距为2,则分箱为[0,2],(2,4],…(8,10]

二、等频、等距分箱-代码实现

2.1. 利用pandas实现等频等距分箱

等频等距分箱在python中可以使用pandas实现,它可以进行简单的分箱,代码如下:

import pandas as pd
from sklearn.datasets import load_iris
# 实现等频、等距分箱

iris = load_iris()                                  # 加载iris数据
x    = iris.data[:,0]                               # 取第0个变量作为分箱变量

# 实现等频分箱
freq_bins = pd.qcut(x , q=5)                        # 对x进行等频分箱
print("\n等频-分箱结果:", freq_bins.categories)    # 分箱结果
print("\n等频-样本箱号:", freq_bins.codes)         # 分箱后样本的箱号

# 实现等距分箱                                     
bins = pd.cut(x , bins=5)                           # 对x进行等距分箱
print("\n等距-分箱结果:", bins.categories)         # 分箱结果
print("\n等距-样本箱号:", bins.codes)              # 分箱后样本的箱号

代码运行结果如下:
在这里插入图片描述

2.2. bbbrisk实现等频等距分箱

利用bbbrisk的分箱函数可以实现更灵活的等频等距分箱。
如果没有bbbrisk,可以先用pip进行安装:

pip install bbbrisk

bbbrisk实现等频等距分箱的示例代码如下:

import bbbrisk as br          
           
# 加载数据                    
data = br.datasets.load_bloan()                               # 加载数据
x,y  = data['rev'],data['is_bad']                             # 变量与标签    
br.display.pd.set(width=300,max_colwidth=30,max_rows=30)      # 美化pandas的显示方式

# 等频分箱                   
bin_set  = br.bins.merge.eSample(x,bin_sample=2000)           # 将变量进行等样本分箱
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                 # 统计分箱结果
print('\n样本在等频分箱的分布:\n',bin_stat)                   # 显示样本分布
# 等距分箱  
bin_set  = br.bins.merge.eDist(x,bin_num=10)                  # 将变量进行等距分箱
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                 # 统计分箱结果
print('\n样本在等距分箱的分布:\n',bin_stat)                   # 显示样本分布

bbbrisk实现等频等距分箱的示例代码如下:
等频等距分箱结果

bbbrisk还可以实现分段等距分箱,即如下的效果:
分段等距分箱
可以看到,它在<1时等距分为5个箱,1到1000等分1个箱,>1000分为1个箱。
具体说明可参考:【说明】bins.merge.eDist

总结

总的来说,等频分箱就是每n个样本作为一箱,等距分箱就是每相距n作为一个分箱。它们的实现可以使用pandas或bbbrisk来实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老饼讲解-BP神经网络

请老饼喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值