混淆矩阵是机器学习中常用的评估模型性能的工具。而在分类任务中,模型评价的一项重要指标就是精度。本文将从多个方面对混淆矩阵精度评价做详细的阐述,其中将包括混淆矩阵的构成、准确率、召回率、F1分数等内容。
一、混淆矩阵构成
混淆矩阵(Confusion Matrix)又称误差矩阵,是通过比较分类器分类结果与实际情况的情况统计得到。混淆矩阵是一个N×N矩阵,其中N是目标类别总数。其构成如下图所示:
预测结果 |正例(P) 反例(N) ———————————————- 实际情况|正例(P) TN FP |反例(N) FN TP
其中,TN(true negative)表示将负类预测为负类的数量;FP(false positive)表示将负类预测为正类的数量;FN(false negative)表示将正类预测为负类的数量;TP(true positive)表示将正类预测为正类的数量。
二、准确率
准确率(Accuracy)是刻画分对样本的能力。准确率越高,分类的效果就越好。准确率计算公式如下:
accuracy = (TP + TN) / (TP + TN + FP + FN)
其中,TP表示真正例、TN表示真反例、FP表示假正例、FN表示假反例。准确率越高,模型的优劣越好。
三、召回率
召回率(Recall)是描述正样本正确率的指标。召回率越高,正类分对的能力越强。召回率计算公式如下:
recall = TP / (TP + FN)
其中,TP表示真正例、FN表示假反例。召回率越高,模型对正样本的提取就越准确。
四、精确率
精确率(Precision)是描述分对样本正确率的指标。精确率越高,分类器分对的概率越高。精确率计算公式如下:
precision = TP / (TP + FP)
其中,TP表示真正例、FP表示假正例。精确率越高,分类器将负样本错误分成正样本的可能性就越小。
五、F1分数
F1分数(F1-score)是精确率和召回率的调和平均值。F1分数计算公式如下:
F1 = 2 * precision * recall / (precision + recall)
其中,precision表示精确率,recall表示召回率。
完整的评价代码示例
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score # 构造混淆矩阵 y_true = [1, 0, 0, 1, 1, 0, 0, 1] y_pred = [1, 0, 0, 1, 0, 1, 0, 1] cm = confusion_matrix(y_true, y_pred) print(cm) # 计算准确率 acc = accuracy_score(y_true, y_pred) print(acc) # 计算召回率 recall = recall_score(y_true, y_pred) print(recall) # 计算精确率 precision = precision_score(y_true, y_pred) print(precision) # 计算F1分数 f1 = f1_score(y_true, y_pred) print(f1)