本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
评分卡最终构建出来的就是一张评分卡表
本文演示如何用bbbrisk快速构建出评分卡表,以及打印模型的AUC、KS
变量x与标签y的数据如下:
下面演示如何通过自动分箱,快速构建出一个评分卡,代码如下:
import bbbrisk as br
#加载数据
data = br.datasets.load_bloan() # 加载数据
x = data.iloc[:,:-1] # 变量数据
y = data['is_bad'] # 标签数据
# 构建评分卡
bin_sets = br.bins.batch.autoBins(x, y,enum_var=['city','marital']) # 自动分箱,必须指出哪些是枚举变量
model,card = br.model.scoreCard(x,y,bin_sets) # 构建评分卡
score = card.predict(x[card.var]) # 用评分卡进行评分
# 打印结果
print('\n-----【 模型性能评估 】----')
print('* 模型训练AUC:',model.train_auc) # 打印模型训练数据集的AUC
print('* 模型测试AUC:',model.test_auc) # 打印模型测试数据集的AUC
print('* 模型训练KS:',model.train_ks) # 打印模型训练数据集的KS
print('* 模型测试KS:',model.test_ks) # 打印模型测试数据集的KS
print('\n--------【 模型 】---------')
print('* 模型使用的变量:',model.var) # 模型最终使用的变量
print('* 模型权重:',model.w) # 模型的变量权重
print('* 模型阈值:',model.b) # 模型的阈值
print('\n--------【 评分卡 】---------')
print('\n* 特征得分featureScore: \n' ,card.featureScore ) # 特征得分
print('\n* 基础得分baseScore: ' ,card.baseScore ) # 基础分
运行结果如下:
可以看到,通过简单的代码,就可以得到评分卡模型的AUC/KS,以及模型的参数、评分卡表
在实际项目中,往往需要通过手动设置分箱来使得模型更具解释性,下面是手动分箱构建评分卡的方法
import bbbrisk as br
#加载数据
data = br.datasets.load_bloan() # 加载数据
x = data.iloc[:,:-1] # 变量数据
y = data['is_bad'] # 标签数据
# 变量的分箱
bin_sets = {
'rev' :[[0,0.1],(['-',0],[0.1,0.37]),[0.37,0.64],([0.64,1.2],[2,'+']),[1.2,2],]
,'age' :[[80,'+'],[60,80],[45,60],['-',45]]
,'city' :[('J','E','I'),'_other',('D','N','S'),('F','P')]
,'income' :[[1000,5000],[5000,9000],(['-',1000],[20000,'+'],None),[9000,16000],[16000,20000]]
,'marital':[1,0,2]
,'debrate':[([0,0.1],[850,'+']),([0.1,0.5],[5,850]),([0.5,0.8],0),[0.8,5]]
,'due30' :[0,1,2,(3,4),[4,'+']]
,'due60' :[0,1,2,[2,'+']]
,'due90' :[0,1,[1,'+']]
,'loan_num':[[3,'+'],(2,3),1,0]
}
model,card = br.model.scoreCard(x,y,bin_sets) # 构建评分卡
score = card.predict(x[card.var]) # 用评分卡进行评分
可以看到,在代码中,通过配置,手动设置了分箱,然后构建了一个评分卡模型
好了,以上就是用bbbrisk简单构建一个评分卡的代码与效果演示~
End