AUC计算方法详解与Python实现代码

沈知远
沈知远
发布时间:2026-10-13| 4人浏览过
原创

本文详细介绍AUC(ROC曲线下面积)的计算原理及其在二分类模型评估中的应用。重点解析基于统计意义的AUC计算公式,即正样本排在负样本前的概率,并提供完整的Python实现代码。通过排序与秩和计算,帮助开发者快速掌握AUC的核心算法与编码技巧。

AUC计算方法

AUC的Python实现方式

AUC计算方法

AUC计算方法

AUC全称为ROC曲线下的面积,是机器学习领域中用于评估二分类模型性能的重要指标。AUC主要反映模型对样本的排序能力。从统计学角度解释,AUC表示从所有正样本中随机抽取一个正样本,同时从所有负样本中随机抽取一个负样本,当前模型预测的正样本得分高于负样本得分的概率。

AUC的计算主要采用以下几种方法:

第一种方法是直接计算ROC曲线下的面积。这种方法较为直观,可以通过近似计算ROC曲线上各个小梯形的面积来得到结果。然而,由于计算过程较为繁琐,实际应用中几乎不会采用这种方式。

第二种方法是从AUC的统计意义出发进行计算。该方法考察所有正负样本对,计算正样本排在负样本前面的样本对数占总样本对数的比例,即上述概率值。

具体操作步骤如下:首先对预测概率分数(prob score)从大到小进行排序,令最大概率分数对应的样本秩次(rank)为n,第二大概率分数对应的样本秩次为n-1,依此类推。

接着,将所有正类样本的秩次相加,然后减去M-1种两个正样本组合的情况(即减去正样本内部排序带来的偏差)。

经过上述计算,得到的结果即为所有样本中,正类样本的得分大于负类样本得分的对数。

最后,将该结果除以正样本数量M与负样本数量N的乘积(M×N),即可得到AUC值。

公式如下:

AUC的Python实现

AUC的Python实现

基于上述方法二的公式,AUC计算的Python实现代码如下:


def calAUC(prob,labels):
  f = list(zip(prob,labels))
  rank = [values2 for values1,values2 in sorted(f,key=lambda x:x[0])]
  rankList = [i+1 for i in range(len(rank)) if rank[i]==1]
  posNum = 0
  negNum = 0
  for i in range(len(labels)):
    if(labels[i]==1):
      posNum+=1
    else:
      negNum+=1
  auc = 0
  auc = (sum(rankList)- (posNum*(posNum+1))/2)/(posNum*negNum)
  print(auc)
  return auc

其中输入参数prob为模型得到的概率值,labels为分类标签(取值为1或-1)。

以上这篇AUC计算方法与Python实现代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。