1.ROC曲线
这是我们机器学习和数据挖掘等领域用来可视化预测结果准确性最常用的工具之一。
它的定义如下:按照顺序逐个把样本作为正例进行预测,计算出FPR和TPR。分别以FPR、TPR为横纵坐标作图即可得到ROC曲线。
其中,两个变量定义如下。
FPR = TP/(TP+FN)
TPR = TP/(TP+FP)
【机器学习|数据分析&机器学习-分类好坏的评价方式】其中,变量定义如下表,其实就是混淆矩阵的结果。
TP |
正确肯定:实际是正例,识别为正例。 |
FN | 错误否定(漏报):实际是正例,却识别成了负例。 |
FP | 错误肯定(误报):实际是负例,却识别成了正例。 |
TN | 正确否定:实际是负例,识别为负例。 |
显然,ROC曲线所在的区域是一个1*1面积为1的方形范围内,曲线下方面积越接近1(越大),预测越准确。
2.AUC面积
什么是AUC,它的全称是Area Under ROC Curve,那么其含义就不需要多说了吧,就是ROC曲线与坐标轴确定的范围面积,这个值越接近1表明预测越准确。
3.混淆矩阵
从上面的叙述其实已经告诉你混淆矩阵是什么了,这是一个n*n的方阵,n表示的是预测结果的种类,它定义的四个值上面已经说明,我们看下面的矩阵。
[ 1 2 0
2 0 0
3 0 1]
第一行第一列数值为1,这说明真正的分类结果是标签第一个的预测得到的结果也是标签第一个的个数为1;
第一行第三列数值为0,这说明真正的分类结果是标签第一个但是被预测为标签第三个的个数为0.
以此类推。
三个的实现代码如下。
import numpy as np
from sklearn import metrics
import matplotlib.pyplot as plt
from sklearn.metrics import auc
# X表示真实结果标签
X = np.array([1, 2, 2, 1, 2, 1, 0])
# Y表示预测结果标签
Y = np.array([2, 1, 2, 1, 2, 1, 0])
# 设定积极标签个数
fpr, tpr, thresholds = metrics.roc_curve(X, Y, pos_label=1)# 绘制ROC曲线
plt.plot(fpr, tpr, marker='o')
plt.show()# 求出AUC值
AUC = auc(fpr, tpr)
print(AUC)# 得到混淆矩阵
# labels表示所有的标签种类个数
mess = metrics.confusion_matrix(X, Y, labels=[0, 1, 2])
print(mess)
结果显示。
文章图片
推荐阅读
- paddle|动手从头实现LSTM
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 读书笔记|《白话大数据和机器学习》学习笔记1
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 深度学习|深度学习笔记总结
- 机器学习|机器学习Sklearn学习总结
- 机器学习|线性回归原理与python实现