多分类roc曲线Python代码
时间: 2024-11-29 11:15:34 浏览: 42
在Python中,计算并绘制多分类ROC曲线通常涉及`sklearn.metrics.roc_curve()`函数以及`matplotlib`库。这里是一个基本的示例,假设你有一个多元分类问题,模型预测结果存储在`y_pred`,真实标签在`y_true`:
```python
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, roc_auc_score
import matplotlib.pyplot as plt
# 创建数据集并训练模型
X, y = make_classification(n_classes=3) # 假设我们有3个类别
model = LogisticRegression()
model.fit(X, y)
# 预测概率
y_scores = model.predict_proba(X)[:, 1:] # 获取每个类别的概率
# 计算每个类别的ROC曲线
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(3):
fpr[i], tpr[i], _ = roc_curve(y == i, y_scores[:, i]) # 比较每个类别与剩余类别的真阳性率和假阳性率
roc_auc[i] = roc_auc_score(y == i, y_scores[:, i])
# 绘制ROC曲线
plt.figure(figsize=(10, 6))
colors = ['blue', 'green', 'red']
for i, color in zip(range(3), colors):
plt.plot(fpr[i], tpr[i], color=color, lw=2,
label='ROC curve (area = %0.2f)' % roc_auc[i])
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('Multi-class ROC curves')
plt.legend(loc="lower right")
plt.show()
阅读全文