本站原创文章,转载请说明来自《老饼讲解-机器学习》www.bbbdata.com
model._Card- 评分卡表类
model._Card是评分卡表类,它用来记录一个评分卡表的信息以及相关方法
由于_Card属于内置类,它由model.scoreCard函数返回
因此,我们只介绍类的属性与方法,而不介绍它的构建方法
1.1. 类的属性
_Card类拥有如下的属性:
1.2. 类的方法
_Card类拥有如下的属性:
build的完整调用方式如下:
card.build(d=50,B=600,k=2,S=20)
d,B,k,S的意义参见类的属性说明
build_with_range的完整调用方式如下:
card.build_with_range(score_min,score_maxe,d=50,k=2)
其中,score_min和score_max是评分的最大最小值,d和k是默认参数(它们的意义参见类的属性说明)
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类使用示例如下
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 ) # 特征得分(字典格式)
运行结果如下:
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