混淆矩阵 绘制ROC曲线
时间: 2023-09-09 15:09:10 浏览: 118
混淆矩阵(Confusion Matrix)和ROC曲线(Receiver Operating Characteristic Curve)是评估分类模型性能常用的工具。
混淆矩阵是一个2x2的矩阵,记录了分类模型在测试集上的分类结果。具体来说,矩阵的四个元素分别表示真正例(True Positive,TP)、假正例(False Positive,FP)、真反例(True Negative,TN)和假反例(False Negative,FN)。对于二分类问题,TP表示模型正确将正样本分类为正类的样本数,FP表示模型错误将负样本分类为正类的样本数,TN表示模型正确将负样本分类为负类的样本数,FN表示模型错误将正样本分类为负类的样本数。
ROC曲线是一条以假正例率(False Positive Rate,FPR)为横轴、真正例率(True Positive Rate,TPR)为纵轴的曲线。其中,TPR等于TP/(TP+FN),表示正样本被正确分类为正类的比例;FPR等于FP/(FP+TN),表示负样本被错误分类为正类的比例。ROC曲线可以帮助我们在不同的分类阈值下绘制出模型的性能情况。
下面是绘制混淆矩阵和ROC曲线的示例代码(使用Python的sklearn库):
```python
from sklearn.metrics import confusion_matrix, roc_curve, auc
import matplotlib.pyplot as plt
# 计算混淆矩阵
y_true = [0, 1, 0, 1, 1, 0, 0, 1]
y_pred = [0, 1, 0, 0, 1, 0, 1, 0]
tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()
# 绘制混淆矩阵
plt.matshow(confusion_matrix(y_true, y_pred))
plt.colorbar()
plt.xlabel('Predicted')
plt.ylabel('True')
plt.show()
# 计算ROC曲线
fpr, tpr, thresholds = roc_curve(y_true, y_pred)
roc_auc = auc(fpr, tpr)
# 绘制ROC曲线
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--')
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()
```
这段代码中,我们首先使用confusion_matrix函数计算混淆矩阵,然后使用matshow函数将其可视化。接着,我们使用roc_curve和auc函数计算ROC曲线的横纵坐标和曲线下面积,最后使用plot函数将ROC曲线绘制出来。
阅读全文