Handsome_zhou 发表于 2022-6-1 12:27:46

混淆矩阵

本帖最后由 Handsome_zhou 于 2022-10-18 13:24 编辑

混淆矩阵是分类模型的一种评价指标。

混淆矩阵的表格表示:


如上图,T/F表示预测正确/预测错误,P/N表示预测为正样本/预测为负样本。

TP表示预测为正样本,实际也为正样本
FP表示预测为正样本,实际为负样本
FN表示预测为负样本,实际为正样本
TN表示预测为负样本,实际为负样本

混淆矩阵也称为误差矩阵,就是分别统计分类模型归错类,归对类的观测值个数,然后把结果放在一个表里展示出来。这个表就是混淆矩阵。

混淆矩阵的矩阵表示:
confusion_matrix = [
                  ]

在混淆矩阵中,第二,第四象限对应的位置的数值越多越好。第一,第三象限对应位置的数值越少越好。


混淆矩阵的二级指标:
混淆矩阵里面统计的是个数,有时候面对大量的数据,光凭算个数,很难衡量模型的优劣。因此混淆矩阵在基本的统计结果上又延伸了如下4个指标:

1、准确率(Accuracy)----针对整个模型
2、精确度(Precision)
3、灵敏度(Sensitivity):就是召回率(Recall)
4、特异度(Specificity)

四种指标的定义、计算、理解:


其中,PPV:positive prediction value, TPR:true positive rate TNR:true negative rate

在如上四个指标上进行拓展,会产生另外一个三级指标:
F1 Score = 2PR/(P+R)
其中,P代表precision,R代表Recall。
F1-Score指标综合了Precision与Recall的产出的结果。取值范围从0到1。1代表模型的输出结果最好,0代表结果最差。


ROC与AUC

ROC使用混淆矩阵的TPR=TP/(TP+FN)(灵敏度,召回率)为纵坐标轴,FPR = FP/(FP+TN)为横坐标轴绘制。

ROC绘制示例:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc
# from sklearn import cross_validataon
from sklearn import model_selection as cv

#导入数据
iris = datasets.load_iris()
X = iris.data
y = iris.target

#二分类
X, y = X, y

#增加噪声
random_state = np.random.RandomState(0)
n_samples, n_features = X.shape
X = np.c_
#分割训练和测试集
X_train, X_test, y_train, y_test = cv.train_test_split(X,y, test_size=.3,random_state=0)

#学习预测每个类与其他类
svm = svm.SVC(kernel='linear', probability=True, random_state=random_state)

y_score = svm.fit(X_train, y_train).decision_function(X_test)

fpr, tpr, threshold = roc_curve(y_test, y_score)
roc_auc = auc(fpr, tpr)

plt.figure()
lw = 2
plt.figure(figsize=(10,10))
plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc)

plt.plot(, , color='navy', lw=lw, linestyle='--')
plt.xlim()
plt.ylim()
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()


关于ROC含义的具体的讲解:https://zhuanlan.zhihu.com/p/390518914

AUC是ROC曲线下的面积,范围在0-1之间,AUC数值越大表示模型效果越好。
页: [1]
查看完整版本: 混淆矩阵