如何在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 分数的其他信息: