欢迎各位同学学习python金融风控评分卡模型和数据分析微专业课
在我们开发完信用分模型后,经常需要计算如下的一些指标:● 区分度的指标:○ AUC○ KS○ GINI● 稳定性的指标:○ PSI● 分数分布:○ 总人数比例○ 坏用户比例接下来,本文从如下5个模块为读者朋友们介绍如何利用Python实现这些指标数据。目录
Part 1. 生成样本
Part 2. 计算AUC、KS、GINI
Part 3. PSI
Part 4. 分数分布
Part 5. 完整工程代码
致谢
01.生成样本
首先,本文用以示例,故使用代码创造的一些假样本。
import numpy as np
import pandas as pd
n_sample = 1000
df_score = pd.DataFrame({
'user_id': [u for u in range(n_sample)],
'label':np.random.randint(2, size=n_sample),
'score': 900*np.random.random(size=n_sample),
'term': 20201+np.random.randint(5, size=n_sample)
})
然后我们统计下分term的总人数,坏人数和坏人比例:
df_score.groupby('term').agg(total=('label', 'count'),
bad=('label', 'sum'),
bad_rate=('label', 'mean'))
02
区分度指标
计算区分度指标KS、AUC、GINI的helper function如下:
from sklearn.metrics import roc_auc_score, roc_curve
def get_auc(ytrue, yprob):
auc = roc_auc_score(ytrue, yprob)
if auc < 0.5:
auc = 1 - auc
return auc
def get_ks(ytrue, yprob):
fpr, tpr, thr =