python实现卡方分箱Chi-Merge

本文介绍了卡方分箱方法,该方法基于卡方统计量判断相邻区间的分布差异,通过设定分箱个数或卡方阈值进行区间合并。文章详细阐述了实现步骤,并提供了Python代码示例,用于对二分类问题的变量进行分箱,展示了如何获取卡方统计结果和分箱分割点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

卡方分箱是依赖于卡方检验的分箱方法,在统计指标上选择卡方统计量(chi-Square)进行判别,分箱的基本思想是判断相邻的两个区间是否有分布差异,基于卡方统计量的结果进行自下而上的合并,直到满足分箱的限制条件为止。

卡方分箱的实现步骤:

这里写图分箱述

卡方统计量衡量了区间内样本的频数分布与整体样本的频数分布的差异性,在做分箱处理时可以使用两种限制条件:

(1)分箱个数:限制最终的分箱个数结果,每次将样本中具有最小卡方值的区间与相邻的最小卡方区间进行合并,直到分箱个数达到限制条件为止。

(2)卡方阈值:根据自由度和显著性水平得到对应的卡方阈值,如果分箱的各区间最小卡方值小于卡方阈值,则继续合并,直到最小卡方值超过设定阈值为止。

在铺上代码前再补充两点,

1、由于卡方分箱是思想是相邻区间合并,在初始化时对变量属性需先进行排序,要注意名义变量的排序顺序

2、卡方阈值的自由度为 分箱数-1,显著性水平可以取10%,5%或1%

python代码实现:举例:卡方对二分类问题进行变量分箱

import pandas as pd
import numpy as np
from scipy.stats import chi2
def calc_chiSquare(sampleSet, feature, target):
    '''
    计算某个特征每种属性值的卡方统计量
    params: 
        sampleSet: 样本集
        feature: 目标特征
        target: 目标Y值 (0或1) Y值为二分类变量
    return:
        卡方统计量dataframe
        feature: 特征名称
        act_target_cnt: 实际坏样本数
        expected_target_cnt:期望坏样本数
        chi_square:卡方统计量
    '''
    # 计算样本期望频率
    target_cnt = sampleSet[target].sum()
    sample_cnt = len(sampleSet[target])
    expected_ratio = target_cnt * 1.0/sample_cnt 
    # 对变量按属性值从大到小排序
    df = sampleSe
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值