评分卡

【说明】分箱配置格式

作者 : 老饼 发表日期 : 2023-01-12 18:39:42 更新日期 : 2025-03-05 15:47:35
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com





一、分箱格式说明

  • 1.1. 单变量的分箱格式
    在bbbrisk中,约定每个变量的分箱都以list来表示,list中第i个元素代表第i个分箱
    其中,单个箱体的表示方法如下:
     
     简单来说,主要就三种情况:
    1. 如果是范围分箱,就用[a,b]格式                                                      
       它遵循左开右闭,即它实际代表的范围是(a,b],如果要左闭,就把a取小一点
    2. 如果是枚举值就直接填上枚举值a                                                    
    3. 如果要合并,就用小括号()括起来,例如([a,b],[c,d],e)                      
        举例:代表0作为一个分箱,(0,2]作为一个分箱,>2作为一个分箱 

     而代表0与>2作为一个分箱,(0,2]作为一个分箱,其它作为一个分箱


更多例子如下:

bin_set= [ [-2,2], [2,5] ]                 # 代表:(-2,2] , (2,5]
bin_set= [ ['-',2], [2,'+'] ]              # 代表:(-inf,2] ,(2,inf]
bin_set= [ [-2,2], [2,5], None, '_other']  # 代表:(-2,2] ,(2,5] ,空值 ,其它
bin_set= [ ([-2,2],None), [2,5] ]          # 代表:(-2,2] 与 None , (2,5]
bin_set= [ (1,2,3,4), [4,'+']]             # 代表:1、2 、3 、4 , >4




  • 1.2.多变量的分箱格式
    对于多个变量,则字典形式来记录每个变量的分箱
    示例如下:
bin_sets = {
    'age'      :[[80,'+'],[60,80],[45,60],['-',45]]
    ,'city'    :[('J','E','I'),'_other',('D','N','S'),('F','P')]
    ,'marital' :[1,0,2]
    ,'loan_num':[[3,'+'],(2,3),1,0]
    }










二、效果演示


下面我们先设置分箱,然后统计变量在分箱上的分布,以了解各种分箱配置的实际效果

分箱格式的示例如下:

import bbbrisk as br

																		           
# 加载数据                                                                         
data = br.datasets.load_bloan()                                           # 加载数据
x = data['income']                                                        # rev变量
y = data['is_bad']                                                        # 标签

# 一般的分箱
bin_set =[['-',5000],[5000,9000],[9000,20000],[20000,'+']]                # 设置变量的分箱
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                             # 统计数据在分箱上的分布
print('\n* 连续分箱:\n',bin_stat)                                         # 显示数据的分布

# None的作用
bin_set =[['-',5000],[5000,9000],[9000,20000],[20000,'+'],None]           # 设置变量的分箱
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                             # 统计数据在分箱上的分布
print('\n* 加入了None:\n',bin_stat)                                       # 显示数据的分布


# 如何合并分箱
bin_set =[['-',5000],[5000,9000],[9000,20000],([20000,'+'],None)]         # 设置变量的分箱
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                             # 统计数据在分箱上的分布
print('\n* 将两个分箱合并:\n',bin_stat)                                   # 显示数据的分布


# '_other'的作用
bin_set =[['-',5000],[5000,9000],[9000,20000],'_other']                   # 设置变量的分箱
bin_stat = br.bins.Bins(bin_set).binStat(x,y)                             # 统计数据在分箱上的分布
print('\n* 使用_other作为分箱:\n',bin_stat)                               # 显示数据的分布


运行结果如下:


第一种分箱设置,演示了如何将连续变量进行普通的分箱,

但此时各分箱样本总和只有15997个,这是因为变量数据有空值,所以分箱不完整

在第二种设置中,演示了如何将空值进行分箱,此时,总样本个数为20000

在第三种设置中,演示了如何将两个分箱进行合并,这里我们将>20000与None作为一个箱

在第四种设置中,演示了如何将'其它'作为一个分箱,由于None和>20000都不在任意一个分箱,所以它们都属于'其它'分箱









好了,以上就是bbbrisk中分箱的格式说明了~








 End 









联系老饼