本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
bins.batch.autoBins - 批量自动分箱函数
bins.batch.autoBins用于将变量进行自动分箱
完整调用格式如下:
bin_sets = bins.batch.autoBins(x,y,enum_var=[],one_fcn=None)
1. 入参说明
数据类型:pandas.DataFrame
数据类型:单列pandas.core.series
数据类型:list
数据类型:function
备注:由于枚举变量与连续数值变量的自动分箱方法不一样,因此如果有枚举变量,必须指出哪些是枚举变量
2. 出参说明
数据类型: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函数的使用方法了~
End