如何在Python中计算AUC(曲线下面积)

518 阅读2分钟

Logistic回归是一种统计方法,当响应变量为二进制时,我们用它来拟合回归模型。

为了评估逻辑回归模型对数据集的拟合程度,我们可以看一下以下两个指标。

  • 敏感性: 当观察结果确实为阳性时,模型预测为阳性结果的概率。这也被称为 "真阳性率"。
  • 特异性: 当一个观察结果确实是阴性时,该模型预测阴性结果的概率。这也被称为 "真阴性率"。

视觉化这两个指标的一种方法是创建ROC曲线,即 "接受者操作特征 "曲线。

这是一个沿Y轴显示灵敏度,沿X轴显示(1-特异性)的图。

量化逻辑回归模型在数据分类方面表现如何的一种方法是计算AUC,它代表 "曲线下面积"。

AUC越接近于1,模型就越好。

下面的步骤显示了如何在Python中计算一个逻辑回归模型的AUC。

第一步:导入软件包

首先,我们将导入在Python中进行逻辑回归所需的软件包:

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import metrics

第2步:拟合Logistic回归模型

接下来,我们将导入一个数据集,并对其进行逻辑回归模型拟合:

#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/default.csv"
data = pd.read_csv(url)

#define the predictor variables and the response variable
X = data[['student', 'balance', 'income']]
y = data['default']

#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=0) 

#instantiate the model
log_regression = LogisticRegression()

#fit the model using the training data
log_regression.fit(X_train,y_train)

第3步:计算AUC

我们可以使用**metrics.roc_auc_score()**函数来计算模型的AUC:

#use model to predict probability that given y value is 1
y_pred_proba = log_regression.predict_proba(X_test)[::,1]

#calculate AUC of model
auc = metrics.roc_auc_score(y_test, y_pred_proba)

#print AUC score
print(auc)

0.5602104030579559

这个特定模型的AUC(曲线下面积)是0.5602

回顾一下,一个AUC分数为0.5的模型并不比一个进行随机猜测的模型好。

因此,在大多数情况下,一个AUC分数为0.5602的模型会被认为在将观测值分类到正确的类别方面很差。

其他资源

下面的教程提供了关于ROC曲线和AUC分数的额外信息:

如何解释ROC曲线(有例子)
什么被认为是好的AUC分数?