python ks值计算_基于python的k-s值计算

做评分卡模型时(假设有多个自变量,因变量即是否违约。)通常需要筛选变量。

k-s值的作用类似于AUC,它期初是用来评价模型(变量)对是否违约事件的区分程度的。

#-*- coding: utf-8 -*-

"""Created on Mon Apr 8 17:04:37 2019

@author: Administrator

ks计算"""

importpandas as pdimportnumpy as np

data_test_2= {'y30':[1,1,1,1,1,1,0,0,0,0,0,0,0],'a':[1,2,0,2,2,7,4,5,4,0,4,18,np.nan]}

data_test_2=pd.DataFrame(data_test_2)defks_calc_cross(data,var_col,y_col):'''功能: 计算KS值,输出对应分割点和累计分布

输入值:-

输出值:

'ks': KS值,'crossdens': 好坏人累积概率分布以及其差值gap'''ks_df1=pd.crosstab(data[var_col],data[y_col])

ks_df2= ks_df1.cumsum(axis=0) /ks_df1.sum()

ks_df2['gap'] = abs(ks_df2[0] - ks_df2[1])

ks= ks_df2['gap'].max()returnks,crossdens

ks_value,ks_df2= ks_calc_cross(data_test_2, 'a', 'y30')print(ks_value,'\n',ks_df2)

ks检验介绍

笔者刚入门机器学习开始做的例子就是金融场景下风控模型。那时评价模型的好坏就用传统的机器学习评价标准,比如说准确率、精确率和AUC,对风控模型的ks指标还一无所知,倒是作为统计科班出身的童鞋,第一次见到ks想到的就是数理统计中的Kolmogorov-Smirnov检验(柯尔莫哥洛夫-斯米尔洛夫)。后来实习过程中,发现老板们在看风控模型结果最关注的结果就是ks指标,才开始对ks指标逐渐重视起来。在衡量模型效果时,对评分卡或者机器学习模型给出的违约概率和y值计算ks值,给出模型效果来确定模型的好坏(一般0.3左右可以使用,0.4以上模型效果较高,超过0.7,可能模型有问题,这时候需要去debug一下是不是出现了特征信息泄露以及一些其他的问题)。笔者在实际应用中,发现市面上关于ks系统介绍的文章比较少,本文就系统的介绍一下ks的前世今生,以及在在风控模型下的多种实现。

https://blog.csdn.net/qq_38984677/article/details/85632268

注意:对名义变量不适合用k-s值。一下证明了变量值的排序影响最终的ks值:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值