bbbrisk-api说明

【说明】bins.Bins类

作者 : 老饼 发表日期 : 2022-07-02 22:36:53 更新日期 : 2025-03-05 15:49:11
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



bins.Bins - 分箱类函数(单变量)

bins.Bins是单个变量的分箱类对象,它用单个变量的分箱配置进行初始化

一、类的初始化

bins.Bins类完整的初始化格式如下:

b = bins.Bins(bin_set,with_null=False,with_other=False)

1. 入参说明

  • bin_set:单个变量的分箱配置,格式详见《》

         数据类型:list

  • with_null:是否默认增加一个"空"分箱

     数据类型:bool

  • with_other:是否默认增加一个"其它"分箱

     数据类型:bool


简单来说,就是如果with_null=True,即使bin_set中没有配置空值,也会将空值作为一个独立分箱

类似地,with_other=True,就是即使bin_set中没有配置'_others',也会"其它"作为一个独立分箱







二、类的属性与方法

2.1. 类的属性


在初始化完bins.Bins类后,它有如下的属性:

  • bin_set : 分箱配置

  数据类型:list

  • bin_range : 分箱的范围

  数据类型:dict

  • bin_desc   : 分箱描述

  数据类型:pandas.DataFrame

  • bin_desc_dict  : 分箱描述(字典格式)

  数据类型:dict


2.1. 类的方法


在初始化完bins.Bins类后,它有如下的方法:

binStat:分布统计函数


binStat用于统计样本数据在分箱上的分布,完整调用格式如下:

bin_stat = b.binStat(x,y)  # 这里的b指的是一个bins.Bins类


binStat-入参说明:

  • x:单个变量的样本数据

         数据类型:单列pandas.core.series

  • y:样本的标签

     数据类型:单列pandas.core.series


binStat-出参说明:

  • bin_stat:样本在分箱上的分布统计

binStat共7列,它是形式如下的DataFrame:

即样本在每个分箱上的组号、描述、总个数、坏样本个数、好样本个数、IV和badRate,以及总计信息







三、使用示例


bins.Bins类使用示例如下:


  • 示例一:Bins类的一般使用(初始化、属性与方法)
import bbbrisk as br					
           
# 加载数据                    
data = br.datasets.load_bloan_grp()                               # 加载数据
x,y  = data['rev'],data['is_bad']                                 # 变量与标签

# 初始化分箱类
bin_set = [['-',0.1],[0.1,1.2],[1.2,2],[2,'+']]
b       = br.bins.Bins(bin_set,with_null=False,with_other=False)  # 将分箱初始化为分箱Bins类

# 打印分箱类的属性				           
print('\n* bin_set(分箱配置):\n',b.bin_set )                      # 显示转换后的分组数据
print('\n* bin_range(分箱范围):\n',b.bin_range )                  # 显示转换后的分组数据
print('\n* bin_desc(分箱描述):\n',b.bin_desc )                    # 显示转换后的分组数据
print('\n* bin_desc_dict(分箱描述字典):\n',b.bin_desc_dict )      # 显示转换后的分组数据

# 统计样本在分箱上的分布
bin_stat = b.binStat(x,y)                                         # 用Bins类来统计x,y在分箱上的分布
br.display.pd.set(width=300,max_colwidth=30,max_rows=30)          # 美化pandas的显示方式
print('\n* 样本在分箱的分布:\n',bin_stat)                         # 显示样本分布


运行结果如下:


从上述代码与结果可以看到,bin.Bins类主要用于将分箱配置转换为分箱类

转换为分箱类后,就可以看到它每个分箱的范围、描述等信息

并可以使用binStat方法来统计出样本在该分箱上的分布情况,以及iv、badRate等

特别地,代码中加入了br.display.pd.set来美化DataFrame的显示效果,这是因为分箱统计内容往往过多,直接打印显示不美观



  • 示例二:Bins类的with_null参数
import bbbrisk as br					
           
# 加载数据                    
data = br.datasets.load_bloan_grp()                               # 加载数据
x,y  = data['rev'],data['is_bad']                                 # 变量与标签

# 未配置None时,with_null=True的效果
bin_set = [['-',0.1],[0.1,1.2],[1.2,2],[2,'+']]                   # 分箱配置,不处理了None
b       = br.bins.Bins(bin_set,with_null=True,with_other=False)   # 将分箱初始化为分箱Bins类
bin_stat = b.binStat(x,y)                                         # 统计样本在分箱上的分布
print('\n* 未配置None时:\n',bin_stat)                             # 显示样本分布

# 已配置None时,with_null=True的效果
bin_set = [(['-',0.1],None),[0.1,1.2],[1.2,2],[2,'+']]            # 分箱配置,处理了None
b       = br.bins.Bins(bin_set,with_null=True,with_other=False)   # 将分箱初始化为分箱Bins类
bin_stat = b.binStat(x,y)                                         # 统计样本在分箱上的分布
print('\n* 已配置None时:\n',bin_stat)                             # 显示样本分布

运行结果如下:

只要设置with_null=True,不管分箱配置有没有处理空值,最终都会处理空值

从结果中可以看到,当分箱配置没有None时,会添加一个None分箱

当分箱配置已经有None时(本例中将None设置在第一个分箱),则不作处理


  • 示例三:Bins类的with_other参数
import bbbrisk as br					
           
# 加载数据                    
data = br.datasets.load_bloan_grp()                               # 加载数据
x,y  = data['rev'],data['is_bad']                                 # 变量与标签

# 未配置other时,with_other=True的效果
bin_set  = [['-',0.1],[0.1,1.2],[1.2,2],[2,'+']]                  # 分箱配置,不处理other
b        = br.bins.Bins(bin_set,with_null=False,with_other=True)  # 将分箱初始化为分箱Bins类
bin_stat = b.binStat(x,y)                                         # 统计样本在分箱上的分布
print('\n* 未配置other时:\n',bin_stat)                            # 显示样本分布

# 已配置other时,with_other=True的效果
bin_set  = [(['-',0.1],'_other'),[0.1,1.2],[1.2,2],[2,'+']]       # 分箱配置,处理了other
b        = br.bins.Bins(bin_set,with_null=False,with_other=True)  # 将分箱初始化为分箱Bins类
bin_stat = b.binStat(x,y)                                         # 统计样本在分箱上的分布
print('\n* 已配置other时:\n',bin_stat)                            # 显示样本分布


运行结果如下:


with_other与with_null是类似的

只要设置with_other=True,不管分箱配置有没有处理"其它值",最终都会处理"其它值"

从结果中可以看到,当分箱配置没有'_other'时,会添加一个'_other'分箱

当分箱配置已经有'_other'时(本例中将'_other'设置在第一个分箱),则不作处理







好了,以上就是bins.Bins类函数的使用方法了~








 End 





联系老饼