老饼讲解:一步一步上手学习
bins.batch.autoBins用于将变量进行自动分箱。
完整调用格式如下:
bin_sets = bins.batch.autoBins(x,y,enum_var=[],one_fcn=None)x:需要进行分箱的变量。
数据类型:pandas.DataFrame
y:样本标签,0为好,1为坏。
数据类型:单列pandas.core.series
enum_var:x中枚举变量的名称列表。
数据类型:list
one_fcn:单个变量的自动分箱处理函数,默认为None,即使用bbbrisk自带的默认处理方法(卡方分箱)。
数据类型:function
由于枚举与连续变量的自动分箱方法不一样,因此如果有枚举变量,必须指出哪些是枚举变量。
bin_sets:所有变量的分箱配置结果
数据类型:dict
autoBins使用示例如下
import bbbrisk as br
data = br.datasets.load_bloan() # 加载数据
x,y = data.iloc[:,:-1],data['is_bad'] # 样本变量与标签
bin_sets = br.bins.batch.autoBins(x, y,enum_var=['city','marital']) # 自动分箱,有枚举时要指出哪些是枚举变量
print('\n* 自动分箱的结果:\n',bin_sets) # 打印阈结果运行结果如下:

当one_fcn不设置时,则本函数底层使用的是如下的处理函数:
def _autoBinOne(x,y,is_enum):
if(is_enum==True): # 如果是枚举值
bin_set = merge.chi2Enum(x, y) # 使用卡方枚举分箱
else: # 如果是连续变量
bin_set= merge.chi2(x, y) # 使用卡方分箱
return bin_set可以看到,当one_fcn=None时,使用的是卡方分箱来进行分箱,因此,如果想自行设置分箱处理函数,则可以自写一个函数来处理,示例如下:
import bbbrisk as br
# 定义单个变量的自动分箱处理函数
def one_fcn(x,y,is_enum):
if(is_enum==True): # 如果是枚举值
bin_set = br.bins.merge.ksEnum(x, y) # 使用卡方枚举分箱
else: # 如果是连续变量
bin_set= br.bins.merge.ks(x, y) # 使用卡方分箱
return bin_set
# 在autoBins中使用自定义的分箱函数
data = br.datasets.load_bloan() # 加载数据
x,y = data.iloc[:,:-1],data['is_bad'] # 样本变量与标签
bin_sets = br.bins.batch.autoBins(x,y,enum_var=['city','marital'],one_fcn=one_fcn) # 自动分箱
print('\n* 自动分箱的结果:\n',bin_sets) # 打印结果运行结果如下:

好了,以上就是bins.autoBins函数的使用方法了~
评论