一、知识点概要
分类算法预测指标:
混淆矩阵 confuse matrix
准确率、精确率、召回率、F1-Score、P-R曲线
ROC空间与AUC
金融风控预测类指标:
KS统计量
pandas库读取、计算及绘图
二、学习内容
①混淆矩阵:四个类
TP(True Positive) FP(False Positive)
TN(True Negative) FN(False Negative)
②准确率:预测为正类的实例占总数的比例
精确率:TP占预测为正类的比例,可以理解为预测上的准确。【也称查准率:检索出来的相关信息量/检索出来的信息总量】
召回率:TP占真实为正类的比例,可以理解为认证上的召回。【也称查全率:检索出来的相关信息量/系统中所有的相关信息量】
用比喻来理解精确率和召回率:我们有一群外出的鸭子,晚上没有回家,全部都跑到别人家里和别人家的鸭子混在了一起,现在我们要从一大群鸭子里面找出我们家的鸭子,这群鸭子中,有我们的也有别人的,总共鸭子有200只,我们从里面找出来一群鸭子假设为(100只),以为全部都是我们家的,剩下的100只是别人家的,然后仔细看了一下,里面只有80只,是我们家的,其他都是别人家的,这样我们的准确率就只有80/100也就是0.8,这个时候我爸来说我们家总共有120个鸭,这样我们的召回率就只有80/120也就是0.67左右了
(来源:https://www.jianshu.com/p/c56a22c6173a)
F1-Score:,精确率和召回率的调和平均数,最大为1,最小为0,因为调和平均数受极小值影响比算术平均值大,所以用来同时观察精确率和召回率的关系更准确
P-R曲线:横轴为recall,纵轴为precision,表示recall和precision之间关系的曲线
③ROC空间:横轴为假正例率FPR(假中预真),纵轴为真正例率TPR(真中预真)
ROC曲线一般位于y=x曲线上方,因为ROC越靠近左上方,这个二值分类器性能越好,因为它意味着在高真正例率的同时获得了低假正例率
AUC:ROC曲线与下方坐标轴围成的面积,通常取值在0.5~1之间。AUC越接近1,检测方法真实性越高;等于0.5的时候,真实性最低,毫无应用价值
④KS统计量: KS=max(TPR-FPR) ,用于评估模型区分度,区分度越大,说明模型的风险排序能力越强
KS曲线与ROC曲线相似,只不过KS将真假正利率都作为纵轴,横轴由选定的阈值来充当
KS(%) | 好坏区分能力 |
< 20 | 不建议采用 |
20-40 | 较好 |
41-50 | 良好 |
51-60 | 很强 |
61-70 | 非常强 |
> 70 | 过高,怀疑存在问题 |
⑤pandas库,sklearn,matplotlib,numpy
读取数据
import pandas
#读取csv文件
train = pandas.read_csv('训练数据集链接')
testA = pandas.read_csv('测试数据集链接')
#打印数据集的行列数(数据集每个维度的长度)
#返回一个元组,只有两个元素,[0]为行数,[1]为列数
print(train.shape)
#将表格的第一行看做列名,并默认输出之后的五行
train.head()
输出混淆矩阵
import numpy
#混淆矩阵
from sklearn.matrics import confusion_matrix
#准确率
from sklearn.matrics import accuracy_score
#recall,precision,F1-Score
from sklearn import matrics
y_pred = [0,1,0,1]
y_true = [0,1,1,0]
#confusion_matrix这个矩阵的构造感觉还是有点混乱
#每个数据都是用混淆矩阵来构造
print('混淆矩阵/n',confusion_matrix(y_true,y_pred))
print('accuracy_score:',accuracy_score(y_true,y_pred))
print('recall:',matrics.recall(y_true,y_pred))
print('precision:',matrics.precision(y_true,y_pred))
print('F1-Score:',matrics.f1_score(y_true,y_pred))
绘图
import matplotlib.pyplot as plt
from sklearn.matrics import precision_recall_curve
#定义y_true和y_pred
#返回精确率、召回率、阈值
precision,recall,threshold = precision_recall_curve(y_true,y_pred)
#绘P-R曲线
plt.plot(precision,recall)
from sklearn.matrics import roc_curve
#定义好y_true,y_pred
#返回FPR,TPR,阈值
FPR,TPR,threshold = roc_curve(y_true,y_pred)
#绘制ROC曲线
plt.title('ROC')
plt.plot(FPR,TPR,'b')
plt.plot([0,1],[0,1],'r--')
plt.ylabel('TPR')
plt.xlabel('FPR')
三、学习问题
本task无
四、总结
需要记一下单词,需要将表格看不懂的英文都意义对应标上英文记忆