机器学习预测信贷风险(下)

本文涉及的产品
系统运维管理,不限时长
简介: 机器学习预测信贷风险(下)

测试模型


既然已经训练出来一个模型(公式)了 那么我要验证下这个公式的准确性
根据准确性来判断这个模型是否合理,若不合理 我调整训练参数再进行训练得到新的模型


y_pred = lgr.predict_proba(X_test)[:,1]
调用逻辑回归的预测的函数 将X_test测试数据作为参数 得到每个测试数据和对应的预测结果的概率  预测结果有0,1区分(具体0,1代表什么含义根据业务来定义 比如0表示未还款,1=表示已还款)
比如0.01539811 表示 这个人还款的概率为 0.01539811
设置一个阈值是0.22 那么 0.01539811<0.22 就认为0.01539811这个概率表示不还款 
[:,1]表示筛选数据表的所有行 选择第二列数据 即获取预测结果为已还款的数据


image.png


这个是每条测试数据对应的还款的概率 假设设置一个阈值为0.22 即大于表示还款,小于表示不还款 那么第一个 0.0117612<0.22就表示0.0117612为不还款


上面显示进行训练数据的训练得到一个模型
然后让模型去预测测试数据得到一个预测结果
然后再拿着实际的数据和预测数据进行比对 画roc曲线、计算ks、计算auc面积等就是为了验证预测结果和实际结果的差别


from sklearn.metrics import roc_curve,auc
# 计算ks和auc
def ks_perf(actuals,predictions):
    fpr,tpr,threshold = roc_curve(actuals,predictions)
    auc_ = auc(fpr,tpr)
    ks_ = max(tpr-fpr)
    print(auc_,ks_)
actuals是实际的是否还款即因变量数据
predictions 是模型预测的是否还款因变量数据


image.png


根据fpr和tpr可以计算auc面积( 横轴是fpr纵轴是tpr 曲线(roc曲线)和x轴之间的面积)


image.png


根据2个数据集可以画roc曲线 得到 fpr(真正例率tpr,假正例率fpr,阈值threshold)
横轴是阈值threshold 纵轴是fpr和tpr 同一个阈值 tpr rate - fpr rate 值即是ks曲线
Ks指标越大 模型的风险区分能力越强
ROC曲线上的每一个点代表一个阈值
ROC曲线坐标系(0,0) 阈值最大
(1,1)阈值最小
从这两张图也可以看得出来


调用这个ks_perf函数 传入测试数据集(实际数据)、模型预测结果集 计算auc和ks值


image.png


ROC的值越大越好 取值范围是0.5-1之间


Ks值 0.2-0.3基本可用 ,0.3以上可用


将预测结果放入数据表中


根据上一步的流程来判断模型预测的结果怎么样 看来模型预测效果还不错


那么就把这个预测结果放入数据表中


test['prob'] = y_pred
# 获取指定列的数据
test_oos = test[['uid', 'prob', 'target']]
# 生成excel文件
test_oos.to_excel('score_oos.xlsx', index = False)
index=False 不生成表格每行数据最前面的序号列


计算f1


上面是根据测试数据集对应的自变量的还款概率多少来计算ks和auc
这里根据测试数据集对应的因变量 target(实际和预测)来计算f1
因为y_pred这一列数据为测试数据集根据模型预测产生的还款概率数据
那么设置一个阈值 比如0.22 大于该值表示还款 设置为1
小于该值表示不还款设置为0
那么根据y_pred就可以产生一个预测的traget


# 设置一个0.22阈值 来计算f1值 调整阈值大小 目的是为了得到一个最大的f1值
test_oss['target_new'] = test_oos['prob'].map(lambda x: 1 if x > 0.22 else 0)
# 实际因变量和预测的因变量
f1_score(test_oss['target'],test_oss['target_new'])


image.png



对推断集进行预测


和上面的过程一致 不就细说了
# 获取推断数据集newuser中的所有的自变量特征数据
x_inference = newuser[var_all]
# 调用逻辑回归的预测函数 获取还款概率
y_inference = lgr.predict_proba(x_inference)[:, 1]
newuser['prob'] = y_inference
result = newuser[['uid', 'prob']]
# 设置一个阈值 将还款概率转换为0(不还款),1(还款)即二分类问题 
result['pred_label'] = result['prob'].map(lambda x: 1 if x > 0.22 else 0)
result = result[['uid', 'pred_label']]
result.to_excel('newuser_prob.xlsx', index = False)



相关文章
|
3月前
|
机器学习/深度学习 数据采集 自然语言处理
机器学习【金融风险与风口评估及其应用】
机器学习【金融风险与风口评估及其应用】
108 6
|
8月前
|
机器学习/深度学习 数据采集 算法
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
Python用逻辑回归、决策树、SVM、XGBoost 算法机器学习预测用户信贷行为数据分析报告
|
7月前
|
机器学习/深度学习 数据采集 算法
机器学习在金融风控中的角色:前沿技术助力风险防控
【6月更文挑战第18天】机器学习正重塑金融风控,提升风险防控效能。通过信贷风险评估、反欺诈识别和市场风险管理,技术实现精准预测和高效应对。高效率、精确性和适应性是关键优势,但数据质量、多样性和模型可解释性仍是挑战。未来,机器学习将在金融风控领域发挥更大作用。
|
7月前
|
机器学习/深度学习 数据采集 算法
基于机器学习的糖尿病风险预警分析系统是一个非常有用的应用
基于机器学习的糖尿病风险预警分析系统是一个非常有用的应用
83 1
|
7月前
|
机器学习/深度学习 数据采集 监控
基于机器学习的糖尿病风险预警分析系统
基于机器学习的糖尿病风险预警分析系统
99 1
|
8月前
|
机器学习/深度学习 算法 数据可视化
机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?
机器学习-生存分析:如何基于随机生存森林训练乳腺癌风险评估模型?
136 1
|
8月前
|
机器学习/深度学习 算法
机器学习(八)经验风险与结构风险
机器学习(八)经验风险与结构风险
146 0
|
机器学习/深度学习 大数据
机器学习lgb全国大数据创新应用大赛用户贷款风险预测 完整代码数据 可直接运行
机器学习lgb全国大数据创新应用大赛用户贷款风险预测 完整代码数据 可直接运行
158 0
|
机器学习/深度学习
【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
|
机器学习/深度学习 移动开发 Windows
机器学习奥林匹克-身体健康与幸福之心脏病预测
机器学习奥林匹克-身体健康与幸福之心脏病预测
446 0
机器学习奥林匹克-身体健康与幸福之心脏病预测