数据分析&机器学习-分类好坏的评价方式

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)

结果显示。

数据分析&机器学习-分类好坏的评价方式_第1张图片

你可能感兴趣的:(机器学习,数据分析与挖掘)