使用Python绘制ROC曲线并计算AUC值

本代码使用Python和sklearn库,利用Logistic回归模型,绘制ROC曲线并计算AUC值,用于评估模型的性能。

1. 导入库

# 导入需要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc
from sklearn.model_selection import train_test_split

2. 读取数据

# 读取数据
data = pd.read_csv('mdcrime.csv')

3. 划分训练集和测试集

# 划分训练集和测试集
X=data.iloc[:,3:4] # 取'MEDAGE'这一列作为自变量
y=data.iloc[:,-1] # 取'Crime'这一列作为因变量
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=10)

4. 训练模型

# 训练模型
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression()
clf.fit(X_train, y_train)

5. 预测测试集结果并计算预测概率

# 预测测试集结果并计算预测概率
probas_ = clf.predict_proba(X_test)

6. 计算ROC曲线和AUC值

# 计算ROC曲线和AUC值
fpr, tpr, thresholds = roc_curve(y_test, probas_[:, -1])
roc_auc = auc(fpr, tpr)

7. 绘制ROC曲线

# 绘制ROC曲线
plt.figure(figsize=(8, 6)) # 设置画布尺寸
lw = 2 # 设置线宽
plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc) # 绘制ROC曲线
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') # 绘制对角线
plt.xlim([0.0, 1.0]) # 设置x轴范围
plt.ylim([0.0, 2]) # 设置y轴范围
plt.xlabel('False Positive Rate') # 设置x轴标签
plt.ylabel('True Positive Rate') # 设置y轴标签
plt.title('Receiver Operating Characteristic') # 设置标题
plt.legend(loc="lower right") # 设置图例位置
plt.show() # 显示图形

代码说明:

  • roc_curve(y_test, probas_[:, -1]):计算ROC曲线的三个参数:假阳性率(fpr)、真阳性率(tpr)和阈值(thresholds)。
  • auc(fpr, tpr):计算AUC值。
  • plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc):绘制ROC曲线。
  • plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--'):绘制对角线,代表随机分类器的性能。

代码运行结果:

运行代码后,将生成一个包含ROC曲线的图形。该图形显示了模型在不同阈值下的性能,以及AUC值。AUC值越高,模型的性能越好。

注意:

  • 本代码使用的数据集mdcrime.csv需要自行准备。
  • 该代码仅供参考,需要根据实际情况进行调整。
ROC曲线绘制及AUC值计算 - 基于Logistic回归模型

原文地址: https://www.cveoy.top/t/topic/oxYd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录