已知混淆矩阵,怎么计算AUC值并绘制ROC曲线,代码是什么?
时间: 2024-12-16 09:31:50 浏览: 5
计算AUC值和绘制ROC曲线通常需要先将混淆矩阵转化为真正例率(TPR)和假正例率(FPR)数据,然后使用一些库如Scikit-learn(Python)来完成。以下是一个简单的例子:
假设我们有一个二分类任务,混淆矩阵如下:
| | 实际正类 | 实际负类 |
|----------|---------|---------|
| 预测正类 | TP | FP |
| 预测负类 | FN | TN |
首先,我们需要计算TPR(召回率)和FPR:
```python
true_positives = cm[1, 1]
false_positives = cm[0, 1]
true_negatives = cm[0, 0]
false_negatives = cm[1, 0]
# TPR = TP / (TP + FN)
recall = true_positives / (true_positives + false_negatives)
# FPR = FP / (FP + TN)
fallout = false_positives / (false_positives + true_negatives)
```
然后可以使用`sklearn.metrics.roc_curve`生成FPR和TPR的数组,接着用`sklearn.metrics.auc`计算AUC:
```python
fpr, tpr, _ = sklearn.metrics.roc_curve(y_true, y_score) # y_true是实际类别,y_score是预测概率
auc = sklearn.metrics.auc(fpr, tpr)
```
最后,可以使用`matplotlib`或其他绘图库画出ROC曲线:
```python
import matplotlib.pyplot as plt
plt.plot(fpr, tpr, label=f'AUC = {auc:.2f}')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) curve')
plt.legend()
plt.show()
```
注意这里`y_true`和`y_score`分别是真实的标签和模型预测的概率。如果你已经有这些数据,就可以直接应用以上代码。如果混淆矩阵来自于某个分类器的输出,你需要先将其转换为这种形式。
阅读全文