📅  最后修改于: 2023-12-03 15:40:46.021000             🧑  作者: Mango
混淆矩阵(Confusion Matrix)是机器学习中常用的评价模型性能的指标。将模型预测结果与实际结果进行比较,计算出具体的TP、FP、TN、FN等指标,能够全面地评估模型的性能表现。
在 Python 中,我们可以借助 scikit-learn 库直接生成混淆矩阵。其代码如下:
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 0, 1, 0, 1, 0, 1]
y_pred = [0, 0, 0, 1, 0, 0, 1, 1]
confusion_matrix(y_true, y_pred)
该段代码生成了一个 $2 \times 2$ 的混淆矩阵。输出结果如下:
array([[3, 1],
[2, 2]])
其中,第一列代表实际值是 0
的样本,第二列代表实际值是 1
的样本。同样,第一行代表预测为 0
的样本,第二行代表预测为 1
的样本。那么具体的指标如下:
1
,预测值为 1
的样本数量,即混淆矩阵左上角的值。在本例中,TP 的值为 3
。0
,预测值为 0
的样本数量,即混淆矩阵右下角的值。在本例中,TN 的值为 2
。0
,预测值为 1
的样本数量,即混淆矩阵右上角的值。在本例中,FP 的值为 1
。1
,预测值为 0
的样本数量,即混淆矩阵左下角的值。在本例中,FN 的值为 2
。根据以上的四个指标,我们可以简单地计算出模型的准确率(Accuracy)、精确率(Precision)和召回率(Recall),还可以计算 F1 值(F1-score)。对应的代码如下:
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
y_true = [0, 1, 0, 1, 0, 1, 0, 1]
y_pred = [0, 0, 0, 1, 0, 0, 1, 1]
print("Accuracy:", accuracy_score(y_true, y_pred))
print("Precision:", precision_score(y_true, y_pred))
print("Recall:", recall_score(y_true, y_pred))
print("F1-score:", f1_score(y_true, y_pred))
输出结果如下:
Accuracy: 0.625
Precision: 0.6666666666666666
Recall: 0.5
F1-score: 0.5714285714285714
以上便是 Python 中生成混淆矩阵和常见指标的示例代码。