pandas绘制多分类问题的ROC曲线
时间: 2023-07-28 10:15:50 浏览: 94
ROC曲线绘制
要绘制多分类问题的ROC曲线,需要将问题转化为多个二分类问题,并分别计算每个类别的ROC曲线。以下是一个示例代码:
```python
import pandas as pd
import numpy as np
from sklearn.metrics import roc_curve, auc
from sklearn.preprocessing import label_binarize
import matplotlib.pyplot as plt
# 读取数据
data = pd.read_csv('data.csv')
# 分离标签和特征
X = data.drop('label', axis=1)
y = data['label']
# 将标签二值化
y_bin = label_binarize(y, classes=np.unique(y))
# 计算每个类别的ROC曲线和AUC值
n_classes = y_bin.shape[1]
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
fpr[i], tpr[i], _ = roc_curve(y_bin[:, i], X.iloc[:, i])
roc_auc[i] = auc(fpr[i], tpr[i])
# 绘制ROC曲线
plt.figure()
lw = 2
colors = ['red', 'blue', 'green'] # 为每个类别选择颜色
for i, color in zip(range(n_classes), colors):
plt.plot(fpr[i], tpr[i], color=color, lw=lw,
label='ROC curve of class {} (AUC = {})'.format(i, roc_auc[i]))
plt.plot([0, 1], [0, 1], color='black', lw=lw, linestyle='--')
plt.xlim([-0.05, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Multi-class ROC curve')
plt.legend(loc="lower right")
plt.show()
```
这个示例代码假设数据集中有三个类别。你需要根据你的数据集中类别的数量进行相应的修改。
阅读全文