赞
踩
学习链接为:https://tianchi.aliyun.com/specials/activity/promotion/aicampdocker
赛题以金融风控中的个人信贷为背景,要求选手根据贷款申请人的数据信息预测其是否有违约的可能,以此判断是否通过此项贷款,这是一个典型的分类问题。通过这道赛题来引导大家了解金融风控中的一些业务背景,解决实际问题,帮助竞赛新人进行自我练习、自我提高。
·学习知识点概述
1.用sklearn的函数实现在预测指标当中函数
Ⅰ、混淆矩阵
[1] 混淆矩阵也称误差矩阵,是表示精度评价的一种标准格式,用n行n列的矩阵形式来表示。具体评价指标有总体精度、制图精度、用户精度等,这些精度指标从不同的侧面反映了图像分类的精度。 在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类相比较计算的。
混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目:第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第一行第二列的2表示有2个实际归属为第一类的实例被错误预测为第二类。
在python当中也可以直接实现这个函数,我们可以通过sklearn中的 confusion_matrix 函数来得到混淆矩阵,函数原型为:
> sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None,sample_weight=None)
y_true:表示样本真实的分类标签列表
y_pred:表示样本预测的分类结果列表
labels:表示类别列表,可用于对类别重新排序或选择类别子集。如果默认,则将y_true 或y_pred 中至少出现一次的类别按排序顺序构成混淆矩阵。
sample_weight:表示样本权重
在1.3.2 分类指标评价计算示例中
> import numpy as np
> from sklearn.metrics import confusion_matrix
> y_pred= [0, 1, 0, 1]
> y_true = [0, 1, 1, 0]
> print('混淆矩阵:\n',confusion_matrix(y_true, y_pred))
·混淆矩阵:
[[1 1]
[1 1]]
返回值是一个形状为[n_classes, n_classes]的混淆矩阵,这个2x2的矩阵表示如下:
TN|FP
FN|TP
其中:
(1)TP:实例是正类,并且被预测为正类
(2)FN:实例是正类,但是被预测为负类
(3)FP:实例是负类,但是被预测为正类
(4)TN:实例是负类,并且被预测为负类
Ⅱ、准确率,精确率,召回率,F1 Score
示例:
## accuracy
from sklearn.metrics import accuracy_score
y_pred = [0, 1, 0, 1,0]
y_true = [0, 1, 1, 0,1]
print('ACC:',accuracy_score(y_true, y_pred))#准确率
ACC: 0.4
## Precision,Recall,F1-score
from sklearn import metrics
y_pred = [0, 1, 0, 1]
y_true = [0, 1, 1, 0]
print('Precision',metrics.precision_score(y_true, y_pred))#精确率
print('Recall',metrics.recall_score(y_true, y_pred))#召回率
print('F1-score:',metrics.f1_score(y_true, y_pred))
Precision 0.5 Recall 0.5 F1-score: 0.5
Ⅲ、P-R曲线
P-R曲线,就是精确率(precision)与召回率(recall)的曲线,以查准率作为纵轴,以召回率作为横轴。
python中可以直接通过precision_recall_curve实现。
示例:
from sklearn.metrics import precision_recall_curve
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
print(precision_recall_curve(y_true, y_pred))
(array([0.6 , 0.71428571, 1. ]), array([1. ,0.83333333, 0. ]), array([0, 1]))# array1为精确率,arrqy2为召回率,array为阙值
注意到array1最后为1,array2最后为0是固定值,并没有对应阙值。当y_score>=thresholds,则预测为正样本,当y_score<thresholds,则预测为负样本。
Ⅳ、ROC(Receiver Operating Characteristic),AUC(Area Under Curve)
示例:
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve
from sklearn.metrics import auc
y_pred = [0, 1, 1, 0, 1, 1, 0, 1, 1, 1]
y_true = [0, 1, 1, 0, 1, 0, 1, 1, 0, 1]
FPR,TPR,thresholds=roc_curve(y_true, y_pred)
print(TPR)
plt.title('ROC')
plt.plot(FPR, TPR,'b')
plt.plot([0,1],[0,1],'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')
print('AUC socre:',auc(FPR, TPR))
[0. 0.83333333 1. ] AUC socre: 0.6666666666666667
另一个关于AUC的示例
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
print('AUC socre:',roc_auc_score(y_true, y_scores))
AUC socre: 0.75
发现两个方法差不多,但是如果要使用auc的话需要先得到roc的曲线并得出FPR和TPR才可以的使用,而roc_auc_score则是需要y_true和y_scores这两个参数就可以实现。
赛题理解总结
通过在此次任务的学习和了解,我逐渐对如何开始进行一次比赛有了初步的了解,不仅仅是因为对某些函数某些方法有了深刻的认识,而且还因为深刻的了解到了拿到比赛题目分析问题的方法。
[1]https://baike.baidu.com/item/%E6%B7%B7%E6%B7%86%E7%9F%A9%E9%98%B5/10087822?fr=aladdin
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。