目录
老饼讲解:一步一步上手学习

【答疑】评分卡-固定分数的区间

作者 : 老饼 发表日期 : 2026-03-24 10:23:45 更新日期 : 2026-05-12 12:06:25
老饼讲解-简单易懂,干货满满,爽过嗦螺!


在构建评分卡时,往往希望能够将分数控制在一定的范围,以达到业务需求,本文讲解在bbbrisk中、如何对构建好的评分卡进行分数设置、分数范围的设置等等,并展示具体代码实现和使用示例,通过本文,可以了解如何设置评分卡的评分,以及相关注意事项。

一、评分卡-分数的控制

本节讲解如何设置评分的参数,以及如何指定评分的范围。

1.1. 评分卡-指定评分设置参数

评分卡在模型转评分时,主要由以下四个参数控制:

        # 模型odds为d         

      # 评分为B               

        # 分数提升S分        

          # odds每降k倍         

bbbrisk默认使用上述参数值来生成评分卡表,它是一般文献、软件中使用的默认参数,如果希望使用其它参数,可以在构建完评分卡后,以指定的参数来重新生成卡表即可。

具体代码示例如下:

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,train_param={'random_state':0})   # 构建评分卡
card.build(d=50,B=100,k=2,S=10)                                                # 用指定参数来生成评分卡
score      = card.predict(x[card.var])                                         # 用评分卡进行评分
print('修改后的d,B,k,S=',card.d,',',card.B,',',card.k,',',card.S)              # 打印卡表所用的d,B,k,S
br.report.draw_score_disb(score,y,bin_step=10,figsize=(14, 4))                 # 分数分布

运行结果如下:

分数分布图

修改后的参数

从分数分布图可以看到,评分卡已经使用了新的参数来生成评分卡。

1.2. 将评分设置在0-100之间

由于在国内的业务中,往往喜欢将评分设置在0-100之间,在bbbrisk中,可以使用build_with_range来设置评分的范围,具体代码示例如下:

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,train_param={'random_state':0})   # 构建评分卡
card.build_with_range(0.1,99.9,d=50,k=2)                                       # 用指定分数范围来生成评分卡
score      = card.predict(x[card.var])                                         # 用评分卡进行评分
print('当前的d,B,k,S=',card.d,',',card.B,',',card.k,',',card.S)                # 打印卡表所用的d,B,k,S
print('评分样本中的最小最大值:',min(score),',',max(score))                     # 打印样本数据中,评分的范围

运行结果如下:

代码运行结果

需要注意的是,由于计算过程会产生数值问题,最终结果可能不会严格地落在范围[a,b]中,例如范围设为[0,100],但结果可能会出现[-0.000001,100.00001]的情况,因此,需要把范围稍微缩小一些,例如在这里取为[0.1,99.9],就是为了保障不超出范围边界。


好了,以上就是如何在bbbrisk中设置分数的方法了~

结束语

总的来说,在bbbrisk中要调整评分,只需要将评分卡表按新的评分参数重新生成就可以了,而如果要设置分数范围,则可以用build_with_range来指定范围生成评分卡表。



图标 评论
添加评论