bbbrisk-api说明

【说明】model._Card类

作者 : 老饼 发表日期 : 2022-06-26 13:58:44 更新日期 : 2025-03-05 16:26:28
本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com



model._Card- 评分卡表类

model._Card是评分卡表类,它用来记录一个评分卡表的信息以及相关方法

由于_Card属于内置类,它由model.scoreCard函数返回

因此,我们只介绍类的属性与方法,而不介绍它的构建方法


一、类的属性与方法

1.1. 类的属性

_Card类拥有如下的属性:

  • var      :评分卡所用的变量名称
  • d         :模型odds为d时
  • B         :评分为B
  • k         :odds每降k倍
  • S         :分数提升S分
  • factor :模型转评分时使用的factor
  • offset :模型转评分时使用的offset
  • baseScore            :基础分
  • featureScore        :特征得分
  • featureScore_dict:特征得分(字典格式)


1.2. 类的方法

_Card类拥有如下的属性:

  • build :用指定参数来重新构建评分卡表

build的完整调用方式如下:

card.build(d=50,B=600,k=2,S=20)

d,B,k,S的意义参见类的属性说明


  • build_with_range:用指定范围来重新构建评分卡表

build_with_range的完整调用方式如下:

card.build_with_range(score_min,score_maxe,d=50,k=2)

其中,score_min和score_max是评分的最大最小值,d和k是默认参数(它们的意义参见类的属性说明)


  • predict:用评分卡表进行评分

predict的完整调用方式如下:

score= card.predict(x)                             # 只进行评分
score,score_item = card.predict(x,with_item=True)  # 评分,并返回每项得分



说明:在使用model.scoreCard构建评分卡时,它会默认使用d=50,B=600,k=2,S=20来构建_Card类

如果希望修改评分参数,则可以通过build方build_with_range来重新生成,这里的生成指的是生成卡表,而不会重新训练模型












二、使用示例




model._LogitModel类使用示例如下

  • 示例一:_Card类的属性
import bbbrisk as br
# 训练一个评分卡
data       = br.datasets.load_bloan()                                          # 加载数据
x,y        = data.iloc[:,:-1],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})   # 构建评分卡,为了使结果能重现,笔者设置了固定的随机种子

# 打印模型的属性  
print('* 入模变量var: '       ,card.var    )                                   # 评分卡所用的变量
print('* 转评分参数d: '       ,card.d      )                                   # 模型odds为d时
print('* 转评分参数B: '       ,card.B      )                                   # 评分为B
print('* 转评分参数k: '       ,card.k      )                                   # odds每降k倍
print('* 转评分参数S: '       ,card.S      )                                   # 分数提升S分
print('* 转评分系数factor: '  ,card.factor )                                   # 模型转评分时使用的factor
print('* 转评分系数offset: '  ,card.offset )                                   # 模型转评分时使用的offset
print('\n* 基础得分baseScore:        ' ,card.baseScore         )               # 基础分
print('\n* 特征得分featureScore:   \n' ,card.featureScore      )               # 特征得分
print('\n* 测特征得分字典格式   :  \n' ,card.featureScore_dict )               # 特征得分(字典格式)


运行结果如下:





  • 示例二:_Card类的方法-使用示例
import bbbrisk as br
# 训练一个评分卡
data       = br.datasets.load_bloan()                                          # 加载数据
x,y        = data.iloc[:,:-1],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的使用-用评分卡预测
test_x     = x[card.var][:2]                                                   # 用于预测的数据
score      = card.predict(test_x)                                              # 用评分卡进行评分  
print('\n* ---评分卡的评分(默认)---:\n',score)                                 # 打印评分

# card的使用-指定参数生成评分卡
card.build(d=50,B=200,k=2,S=20)                                                # 用指定参数重新生成评分卡
score      = card.predict(test_x)                                              # 用评分卡进行评分 
print('\n* ---评分卡的评分(指定参数)---:\n',score)                             # 打印评分


# card的使用-指定参数生成评分卡
card.build_with_range(60,99,d=50,k=2)                                          # 指定范围重新生成评分卡
score      = card.predict(test_x)                                              # 用评分卡进行评分 
print('\n* ---评分卡的评分(指定范围)---:\n',score)                             # 打印评分


运行结果如下:









好了,以上就是model._Card类的使用方法了~










 End 





联系老饼