老饼讲解:一步一步上手学习
往往我们已经将数据处理为组号了,那么构建评分卡时就不需要再对数据进行分箱,好了,如果我们的数据是分组数据时,在bbbrisk中应该怎么构建评分卡呢?这也是非常简单的,下面就让我们直接用一个例子和代码来展示一下,马上就知道应该怎么干了~!
这里我们以bbbrisk的bloan_grp数据为例,它是将bloan数据分箱后的数据,如下:

可以看到,每个变量的数据已经转换为组号了,下面我们展示在bbbrisk中如何用它来构建评分卡。
具体代码示例如下:
# 本代码展示当数据是分箱数据时,在bbbrisk中如何构建评分卡
# 本代码来自《老饼讲解-评分卡》www.bbblearn.com
import bbbrisk as br
#加载数据
data = br.datasets.load_bloan_grp() # 加载分组数据
x,y = data.iloc[:,:-1],data['is_bad'] # 样本变量与标签
# 构建评分卡
model,card = br.model.scoreCard(x,y,'grp',train_param={'random_state':0}) # 构建评分卡
score = card.predict(x[card.var]) # 用评分卡进行评分
card.featureScore # 评分卡-特征得分表
card.baseScore # 评分卡-基础分
# 打印结果
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) # 模型的阈值
# 计算阈值表与分数分布图
thd_tb = br.report.get_threshold_tb(score,y,bin_step=10) # 阈值表
br.report.draw_score_disb(score,y,bin_step=10,figsize=(14, 4)) # 分数分布代码运行结果如下:

如何展示评分卡表、评分公式、阈值表等等,这里不再重述,参考《评分卡-实现代码-手动分箱》就可以了。
其实传入的不管是原始数据还是分箱数据,代码基本都是一样的,只不过如果是原始数据,那么在构建评分卡时就要传入分箱逻辑数bin_sets,而如果是分组数据,则用'grp'替代bin_sets可以了,以此说明传入的是"分组数据",那么model.scoreCard就会略去分箱的过程,直接用分组数据建模。
评论