今天小编就为大家分享一篇python实现连续变量最优分箱详解–CART算法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
关于变量分箱主要分为两大类:有监督型和无监督型
对应的分箱方法:
A. 无监督:(1) 等宽 (2) 等频 (3) 聚类
B. 有监督:(1) 卡方分箱法(ChiMerge) (2) ID3、C4.5、CART等单变量决策树算法 (3) 信用评分建模的IV最大化分箱 等
本篇使用python,基于CART算法对连续变量进行最优分箱
由于CART是决策树分类算法,所以相当于是单变量决策树分类。
简单介绍下理论:
CART是二叉树,每次仅进行二元分类,对于连续性变量,方法是依次计算相邻两元素值的中位数,将数据集一分为二,计算该点作为切割点时的基尼值较分割前的基尼值下降程度,每次切分时,选择基尼下降程度最大的点为最优切分点,再将切分后的数据集按同样原则切分,直至终止条件为止。
关于CART分类的终止条件:视实际情况而定,我的案例设置为 a.每个叶子节点的样本量>=总样本量的5% b.内部节点再划分所需的最小样本数>=总样本量的10%
python代码实现:
import pandas as pd
import numpy as np
#读取数据集,至少包含变量和target两列
sample_set = pd.read_excel('/数据样本.xlsx')
def calc_score_median(sample_set, var):
'''
计算相邻评分的中位数,以便进行决策树二元切分
param sample_set: 待切分样本
param var: 分割变量名称
'''
var_list = list(np.unique(sample_set[var]))
var_median_list = []
for i in range(len(var_list) -1):
var_median = (var_list[i] + var_list[i+1]) / 2
var_median_list.append(var_median)
return var_median_l