如何在python中计算auc(曲线下面积)


逻辑回归是一种统计方法,当响应变量是二元时,我们用它来拟合回归模型。

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

  • 敏感性:当结果实际上是积极的时,模型预测观察结果为积极的概率。这也称为“真阳性率”。
  • 特异性:当结果实际上为负时,模型预测观察结果为负的概率。这也称为“真负率”。

可视化这两个测量值的一种方法是创建ROC 曲线,它代表“接收器操作特性”曲线。

该图沿 y 轴显示灵敏度,沿 x 轴显示(1 – 特异性)。

量化逻辑回归模型在数据分类方面的有效性的一种方法是计算AUC ,它代表“曲线下面积”。

AUC 越接近 1,模型越好。

以下分步示例展示了如何在 Python 中计算逻辑回归模型的 AUC。

第1步:导入包

首先,我们将导入必要的包以在 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:拟合逻辑回归模型

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

 #import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/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 分数?

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注