Python 模型评估:从准确率到混淆矩阵

2023-04-13 00:00:00 混淆 矩阵 准确率

模型评估是机器学习中非常重要的一部分,它可以帮助我们了解模型的优劣和适用性。在 Python 中进行模型评估可以使用各种指标和方法,下面我们介绍一些常用的模型评估方法。

  1. 准确率

准确率是最常用的模型评估指标,它表示模型预测正确的样本比例。在 Python 中,可以使用 sklearn 库中的 accuracy_score 方法来计算准确率,示例代码如下:

from sklearn.metrics import accuracy_score

y_true = [0, 1, 0, 1, 1]
y_pred = [0, 1, 1, 1, 0]

accuracy = accuracy_score(y_true, y_pred)
print("Accuracy: {:.2f}".format(accuracy))

输出结果为:

Accuracy: 0.60
  1. 混淆矩阵

混淆矩阵是一种可视化模型性能的方法,它可以将模型的预测结果与真实标签进行比较,并展示出分类中的真阳性、假阳性、真阴性和假阴性。在 Python 中,可以使用 sklearn 库中的 confusion_matrix 方法来计算混淆矩阵,示例代码如下:

from sklearn.metrics import confusion_matrix

y_true = [0, 1, 0, 1, 1]
y_pred = [0, 1, 1, 1, 0]

confusion = confusion_matrix(y_true, y_pred)
print("Confusion Matrix:\n", confusion)

输出结果为:

Confusion Matrix:
 [[1 1]
 [1 2]]

混淆矩阵的行表示真实标签类别,列表示模型预测类别。矩阵中的每个元素代表了真实标签和模型预测结果的组合,如上面的混淆矩阵表示,真阳性为1个,真阴性为2个,假阳性为1个,假阴性为0个。

  1. 精度、召回率和 F1 值

精度、召回率和 F1 值是常用的分类问题评估指标,它们可以帮助我们进一步了解模型的性能。在 Python 中可以使用 sklearn 库中的 precision_score、recall_score 和 f1_score 方法来计算精度、召回率和 F1 值,示例代码如下:

from sklearn.metrics import precision_score, recall_score, f1_score

y_true = [0, 1, 0, 1, 1]
y_pred = [0, 1, 1, 1, 0]

precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)

print("Precision: {:.2f}".format(precision))
print("Recall: {:.2f}".format(recall))
print("F1 Score: {:.2f}".format(f1))

输出结果为:

Precision: 0.67
Recall: 0.67
F1 Score: 0.67
  1. ROC 曲线和 AUC

ROC 曲线和 AUC 是评估二分类模型性能的常用方法,它们可以帮助我们了解模型对于正例和负例的分类准确性。在 Python 中,可以使用 sklearn 库中的 roc_curve 和 auc 方法来计算 ROC 曲线和 AUC 值,示例代码如下:

from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt

y_true = [0, 1, 0, 1, 1]
y_score = [0.1, 0.8, 0.3, 0.6, 0.7]

fpr, tpr, thresholds = roc_curve(y_true, y_score)

roc_auc = auc(fpr, tpr)

plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic')
plt.legend(loc="lower right")
plt.show()

输出结果为:

ROC Curve

ROC 曲线的横轴为假阳性率(FPR),纵轴为真阳性率(TPR),AUC 值越大代表模型的性能越好。

以上就是Python模型评估中常用的几种方法,它们可以帮助我们了解模型性能、优化模型并提升模型预测能力。

相关文章