用python通过输入混淆矩阵画多分类的roc曲线
时间: 2023-11-11 22:04:30 浏览: 333
基于python实现的评价模型好坏指标,混淆矩阵等
首先,为了绘制ROC曲线,我们需要得到多分类的真阳性率(TPR)和假阳性率(FPR)数据。混淆矩阵是一个2x2(对于二分类问题)或NxN(对于多分类问题)的矩阵,其中行表示真实类别,列表示预测类别。在多分类问题中,我们可以将每个类别都作为正类,计算它们的TPR和FPR数据来绘制ROC曲线。
以下是通过输入混淆矩阵画多分类的ROC曲线的Python代码示例:
```
import numpy as np
import matplotlib.pyplot as plt
# 定义混淆矩阵
confusion_matrix = np.array([[14, 2, 1],
[3, 15, 3],
[1, 2, 17]])
# 计算TPR和FPR数据
n_classes = confusion_matrix.shape[0]
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
fpr[i], tpr[i], _ = roc_curve(
y_true=(confusion_matrix[i, :] == 1).astype(int),
y_score=confusion_matrix[:, i])
roc_auc[i] = auc(fpr[i], tpr[i])
# 绘制ROC曲线
plt.figure(figsize=(8, 6))
colors = ['blue', 'red', 'green']
for i, color in zip(range(n_classes), colors):
plt.plot(fpr[i], tpr[i], color=color,
lw=2, label='ROC curve of class {0} (area = {1:0.2f})'
''.format(i+1, roc_auc[i]))
plt.plot([0, 1], [0, 1], 'k--', lw=2)
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
```
在此示例中,我们使用了一个3x3的混淆矩阵,分别代表三个类别的真实标签和预测标签。我们计算每个类别的TPR和FPR数据,并使用`roc_curve`和`auc`函数计算ROC曲线。最后,我们绘制每个类别的ROC曲线,并标注每条曲线的AUC(面积)。ROC曲线的对角线代表随机猜测的水平,我们绘制了这条对角线以进行比较。
阅读全文