Python绘制ROC曲线

ROC曲线(Receiver Operating Characteristic curve)是一种常用的性能评估工具,用于衡量二分类模型的准确性。在Python中,我们可以使用scikit-learn库中的函数来绘制ROC曲线和计算曲线下面积(AUC)。

Python绘制ROC曲线
Python绘制ROC曲线 图片来源:matplotlib - How to plot ROC curve in Python - Stack Overflow

Python绘制ROC曲线

以下是绘制ROC曲线的步骤:

1. 导入所需的库和模块

import pandas as pd
import numpy as np
from sklearn.metrics import roc_auc_score, roc_curve, auc
import matplotlib.pyplot as plt

2. 加载数据集

data = pd.read_csv('diabetes.csv')
X = data.drop('target', axis=1)
y = data['target']

3. 划分训练集和测试集

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4. 训练分类模型

这里以逻辑回归为例,你也可以选择其他分类算法。

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X_train, y_train)

5. 预测测试集的概率

y_score = model.predict_proba(X_test)[:, 1]

6. 计算fpr和tpr以及阈值

fpr, tpr, thresholds = roc_curve(y_test, y_score)

7. 计算AUC

roc_auc = auc(fpr, tpr)

8. 绘制ROC曲线

plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
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()

通过以上步骤,我们可以使用Python绘制出ROC曲线,并计算出曲线下面积(AUC)。ROC曲线可以直观地展示分类模型的性能,AUC值越接近1,模型的性能越好。

希望以上内容能够帮助你理解如何使用Python绘制ROC曲线。