信用评分系统运行原理下篇(3)

简介: 信用评分系统运行原理下篇(3)

代码思路分析


1、将原始数据分层同比例拆分训练和测试集


比如将原始数据拆分成 5个训练集和5个测试集合


a 把数据集排成一串
b 然后依次按照元素顺序分割成K份子集
c然后每个子集充当一次测试集,这样可以使得每个样本都在测试集中出现
注意:
a 这种划分没有随机性,因为每一份测试集都是从前往后有序排列的
b 所以该方法使用之前需要将数据集执行打乱操作(KFold中设置shuffle=True即可)
c 注意:random_state参数默认为None,如果设置为整数,每次运行的结果是一样的。


2、通过训练数据训练模型 得到模型之后预测测试数据


3、根据实际测试数据的结果和测试数据的预测结果来计算每一个阈值的tpr和fpr


4、根据tpr和fpr画auc曲线


处理完一个分组中的训练和测试数据就会生成一个roc曲线


image.png


image.png


其中的area就是auc面积


计算ROC曲线最佳位置


代码


def rocZeroOne(y_true, y_predicted_porba):
    from sklearn.metrics import roc_curve
    from scipy.spatial.distance import euclidean
    fpr, tpr, thresholds = roc_curve(y_true, y_predicted_porba[:, 1])
    best = [0, 1]
    dist = []
    for (x, y) in zip(fpr, tpr):
        dist.append([euclidean([x, y], best)])
    bestPoint = [fpr[dist.index(min(dist))], tpr[dist.index(min(dist))]]
    bestCutOff1 = thresholds[list(fpr).index(bestPoint[0])]
    bestCutOff2 = thresholds[list(tpr).index(bestPoint[1])]
    print('\n' + 'ROC曲线最佳点位置: TPR = {:0.3f}%, FPR = {:0.3f}%'.format(bestPoint[1] * 100, bestPoint[0] * 100))
    print('\n' + '最佳截止点: {:0.4f}'.format(bestCutOff1))
    plt.plot(dist)
    plt.xlabel('Index')
    plt.ylabel('Euclidean Distance to the perfect [0,1]')
    fig = plt.gcf()
    fig.set_size_inches(15, 5)


原理分析


1、 该函数的2个入参数 一个是测试数据真实结果 一个是该测试数据的预测结果


2、计算ROC曲线上距离左上角最近的点 就是最好的位置


左上角的点是(0,1)


在数学中,欧几里得距离或欧几里得度量是欧几里得空间中两点间“普通”(即直线)距离


函数则对应 python库 scipy.spatial.distance import euclidean


逻辑回归


image.png


image.png


image.png


image.png



相关文章
|
6月前
|
算法 安全 数据安全/隐私保护
深入探究一个长期隐藏的底层bug的学习报告
在软件开发的过程中,底层bug往往像一颗定时炸弹,随时可能引发严重的问题。本文将分享我在开发过程中遇到的一个长期未被发现的底层bug,以及我如何逐步排查并最终解决这个问题的全过程。通过这次排查,我深刻认识到了代码规范性的重要性。一个不规范的代码修改,虽然短期内可能不会引起问题,但长期累积下来,可能会引发灾难性的后果。此外,我也意识到了底层模块的通用性和风险意识的重要性。在解决一个问题的同时,应该审视是否有相似的问题存在,以避免未来的风险。
128 3
|
算法
信用评分系统运行原理下篇(1)
信用评分系统运行原理下篇(1)
190 0
信用评分系统运行原理下篇(1)
信用评分系统运行原理上篇(3)
信用评分系统运行原理上篇(3)
182 0
信用评分系统运行原理上篇(3)
信用评分系统运行原理上篇(2)
信用评分系统运行原理上篇(2)
139 0
信用评分系统运行原理上篇(2)
|
机器学习/深度学习
信用评分系统运行原理上篇(1)
信用评分系统运行原理上篇(1)
180 0
信用评分系统运行原理上篇(1)
信用评分系统运行原理中篇-分箱逻辑(3)
信用评分系统运行原理中篇-分箱逻辑(3)
210 0
信用评分系统运行原理中篇-分箱逻辑(3)
|
算法 编译器 Python
信用评分系统运行原理中篇-分箱逻辑(1)
信用评分系统运行原理中篇-分箱逻辑(1)
176 0
信用评分系统运行原理中篇-分箱逻辑(1)
|
算法 数据处理
信用评分系统运行原理中篇-分箱逻辑(2)
信用评分系统运行原理中篇-分箱逻辑(2)
154 0
信用评分系统运行原理中篇-分箱逻辑(2)
信用评分系统运行原理中篇-分箱逻辑(4)
信用评分系统运行原理中篇-分箱逻辑(4)
129 0
信用评分系统运行原理中篇-分箱逻辑(4)
|
存储 XML JavaScript
日志原理与开发分析这篇完全指南就够了!适应各种规模!
日志原理与开发分析这篇完全指南就够了!适应各种规模!
931 0
日志原理与开发分析这篇完全指南就够了!适应各种规模!
下一篇
无影云桌面