python_卡方分箱
# 卡方统计量衡量了区间内样本的频数分布与整体样本的频数分布的差异性,在做分箱处理时可以使用两种限制条件:
# (1)分箱个数:限制最终的分箱个数结果,每次将样本中具有最小卡方值的区间与相邻的最小卡方区间进行合并,直到分箱个数达到限制条件为止。
# (2)卡方阈值:根据自由度和显著性水平得到对应的卡方阈值,如果分箱的各区间最小卡方值小于卡方阈值,则继续合并,直到最小卡方值超过设定阈值为止。
def chiMerge(df,col,target,max_groups=None,threshold=None):
'''
卡方分箱
df: pandas dataframe 数据集
col:需要分箱的变量名
max_groups:最大分组数
threshold:卡方阈值,如果未指定max_groups,默认使用置信度95%设置 threshold 阈值
return:包括各组的起始值的列表
'''
if df[col].nunique()>300:
#np.percentile 返回 df[col] 所在位置
cutoffs=list(set(np