bbbrisk-api说明

【演示】用bbbrisk构建评分卡

作者 : 老饼 发表日期 : 2023-06-26 08:15:34 更新日期 : 2025-03-05 15:41:22
本站原创文章,转载请说明来自《老饼讲解-机器学习》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 








联系老饼