python 分箱的一种方法
2018.08.02
R语言中有smbining可以进行最优分箱,python中分箱如果既要考虑箱体个数,分箱后信息量大小,也要考虑单调性等其他因素。
这里给出一种简单的通过IV值来选择如果分箱的方法。
下面是按照分位数来分的,还可以按照卡房分箱,决策树分箱等。
参照toad(由厚本金融开发的较标准的评分卡开发开源包)的分箱方式。
class CUT_():
def __init__(self,data,catecory,target):
self.data = copy.deepcopy(data)
self.catedat = self.data[catecory]
self.catedat = self.catedat.map(float)
self.y = self.data['y'].map(float)
self.y = self.y.map(int)
self.catecory = catecory
self.target = target
@staticmethod
def ivsum(data,y,binlist,catecory,target):
tep_iv = OrderedDict()
dat = data.map(lambda x:float(x))
dat_tem = dat[dat!='nan']
bins = binlist
datcut = pd.cut( dat_tem,
[-float("inf")]+bi