风控评分卡模型原理与应用(九):评分卡建模实战

发布时间:2026/9/12 9:02:33

风控评分卡模型原理与应用(九):评分卡建模实战 在前面的文章中介绍了风控评分卡及模型的原理本篇使用bbbrisk来实现评分卡来帮助大家理解评分卡建模的流程。数据处理bbbrisk是python的一个风控包目前提供的功能主要是构建评分卡里面包含构建评分卡的相关功能和原始数据首先安装这个包pip install bbbriskbbbrisk依赖于numpy、pandas和sklearn包最好提前安装好上述包首先导入需要的数据并查看数据结构# 加载数据pd.set_option(display.float_format,lambdax:%.2f%x)# 设置输出2位小数防止出现科学计数法不直观databr.datasets.load_bloan()data.head()data.describe()从输出的数据来看bbbrisk自带的小贷数据共包含10个变量与客户好坏标签数据共2万条其中income这个字段的缺失值比较多接着看一下特征之间的相关性figure,axplt.subplots(figsize(15,15))sns.heatmap(data.corr(),squareTrue,annotTrue)可以看出due60和due90这两个特征相关性很高后续可以考虑只保留一个。数据分箱这里我们直接使用bbbrisk进行自动分箱做一个基本的数据分箱并查看结果xdata.iloc[:,:-1]# 变量数据ydata[is_bad]# 自动分箱bin_setsbr.bins.batch.autoBins(x,y,enum_var[city,marital])# 自动分箱,如果有枚举变量,必须指出哪些是枚举变量bin_statsbr.bins.batch.bin_stats(x,y,bin_sets)# 统计各个变量的分箱情况br.display.pd.set(width300,max_colwidth30,max_rows30)# 美化pandas的显示方式forvarinbin_stats:# 逐个变量打印分箱结果print(\n变量var的分箱结果:\n,bin_stats[var])# 打印当前变量的分箱统计结果代码会给出每个特征对应的分箱结果和对应的IV值和Badrate这里给出几个特征的结果美化一下细看一下自动分箱后的结果的问题还是挺多的例如age字段有两个箱体IV值不符合要求同时从badrate看也不单调同样的变量loan_num变量debrat等等也都有这种问题所以自动分箱的结果可以考虑IV值和Badrate单调性符合要求的分箱结果其他不符合要求的可以接着通过之前文章所说的其他分箱方法尝试再次分箱。这里直接给出最后的分箱结果帮助大家先了解相关流程。这里也是直接使用bbrisk的功能实现分箱。在bbbrisk中约定每个变量的分箱都以list来表示list中第i个元素代表第i个分箱简单来说主要就三种情况如果是范围分箱就用[a,b]格式它遵循左开右闭即它实际代表的范围是(a,b]如果要左闭,就把a取小一点如果是枚举值就直接填上枚举值a如果要合并就用小括号()括起来例如([a,b],[c,d],e)# 变量的分箱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]}bin_statsbr.bins.batch.bin_stats(x,y,bin_sets)# 统计各个变量的分箱情况br.display.pd.set(width300,max_colwidth30,max_rows30)# 美化pandas的显示方式forvarinbin_stats:# 逐个变量打印分箱结果print(\n变量var的分箱结果:\n,bin_stats[var])# 打印当前变量的分箱统计结果从输出的最终的结果看badrate都有非常明显的趋势它们都是有效的可以作为入模变量。建模与评估构建模型并使用逐步回归来删选最终的变量# 构建评分卡model,cardbr.model.scoreCard(x,y,bin_sets,train_param{random_state:0})# 构建评分卡,为了使结果能重现,笔者设置了固定的随机种子scorecard.predict(x[card.var])# 用评分卡进行评分card.featureScore# 评分卡-特征得分表card.baseScore# 打印结果print(\n-----【 模型性能评估 】----)print(* 模型训练AUC:,model.train_auc)# 打印模型训练数据集的AUCprint(* 模型测试AUC:,model.test_auc)# 打印模型测试数据集的AUCprint(* 模型训练KS:,model.train_ks)# 打印模型训练数据集的KSprint(* 模型测试KS:,model.test_ks)# 打印模型测试数据集的KSprint(\n--------【 模型 】---------)print(* 模型使用的变量:,model.var)# 模型最终使用的变量print(* 模型权重:,model.w)# 模型的变量权重print(* 模型阈值:,model.b)从输出的结果看模型的AUC大于0.8整体效果不错# 计算阈值表与分数分布图thd_tbbr.report.get_threshold_tb(score,y,bin_step10)# 阈值表thd_tbbr.report.draw_score_disb(score,y,bin_step10,figsize(20,8))从分数分布图可看出分数越低坏客户的占比越高当分数⩾790时基本坏客户的占比就较少了同时从分布图还可以看出整体客户质量是较好的分数基本集中在高分段高分段只有个别客户坏账这可以理解为意外情况导致的逾期。(备注在实践中分数分布图一般呈现为正态分布或二八分布在本例中就是二八分布。https://www.bbbdata.com/scorecard/cardhttps://geekdaxue.co/read/yingtaoxianghello/cil23y
延伸阅读

更多相关文章

2026/9/13 1:32:10

Django医院挂号系统实战:从数据建模到并发防超卖的完整方案

简介:这是一份基于Python Django框架开发的医院挂号诊疗系统毕业设计源码案例,适合计算机相关专业学生用于毕业设计、课程设计或项目初期演示,也适合希望学习Django Web开发的小白进阶。项目已获导师认可并通过答辩评审,代码经过测…

2026/9/13 1:32:10

MATLAB实现语音识别:MFCC与GMM实战指南

1. 项目概述:当MATLAB遇见语音识别第一次接触语音识别是在研究生时期,实验室的师兄演示了一个能区分不同人说话的MATLAB程序。当时觉得这简直是魔法——机器怎么能听懂人话?更神奇的是,核心算法只用了不到200行代码。如今十年过去…

2026/9/13 1:32:10

硬件工程师必备:常用保护电路设计与选型指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/13 1:32:10

基于Matlab的光伏与燃气轮机混合动力系统建模与仿真分析

简介:这份Matlab代码资源围绕太阳能-燃气轮机混合动力电力系统,完成从建模、仿真到结果分析的全流程,适合能源、电气、计算机等专业学生进行课程设计、毕业设计,也可供相关工程人员做新能源方案预研。资源包共17个文件&#xff0c…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/13 0:01:16

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码