假设有两个不同的数据,且标签不同,使用logistic模型对数据进行训练测试,得到两个ROC曲线,将其画在同一张图中
时间: 2024-02-27 15:57:55 浏览: 66
好的,下面提供一个完整的示例代码,假设有两个数据集分别为`X1`和`X2`,对应的标签分别为`y1`和`y2`,我们将它们分别划分为训练集和测试集,然后使用`LogisticRegression`模型对它们进行训练和预测,得到两个ROC曲线并将它们画在同一张图中。
```python
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
# 第一个数据集
X1_train, X1_test, y1_train, y1_test = train_test_split(X1, y1, test_size=0.3, random_state=0)
model1 = LogisticRegression()
model1.fit(X1_train, y1_train)
y_score1 = model1.predict_proba(X1_test)[:, 1]
fpr1, tpr1, _ = roc_curve(y1_test, y_score1)
roc_auc1 = auc(fpr1, tpr1)
# 第二个数据集
X2_train, X2_test, y2_train, y2_test = train_test_split(X2, y2, test_size=0.3, random_state=0)
model2 = LogisticRegression()
model2.fit(X2_train, y2_train)
y_score2 = model2.predict_proba(X2_test)[:, 1]
fpr2, tpr2, _ = roc_curve(y2_test, y_score2)
roc_auc2 = auc(fpr2, tpr2)
# 画 ROC 曲线
plt.figure(figsize=(8,6), dpi=100)
plt.plot(fpr1, tpr1, color='darkorange', lw=2, label='ROC curve 1 (AUC = %0.2f)' % roc_auc1)
plt.plot(fpr2, tpr2, color='green', lw=2, label='ROC curve 2 (AUC = %0.2f)' % roc_auc2)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
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()
```
这里我们使用了`LogisticRegression`模型对两个数据集进行训练和测试,计算每个数据集的ROC曲线和AUC值,并使用`matplotlib`库将它们画在同一张图中。你可以根据需要修改代码来适应你的具体情况,比如增加更多数据集的ROC曲线。
阅读全文