首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Python中手工计算AUC

(Area Under the Curve)可以通过以下步骤实现:

  1. 首先,导入必要的库,如numpy和sklearn.metrics。
代码语言:python
代码运行次数:0
复制
import numpy as np
from sklearn.metrics import roc_auc_score
  1. 准备真实标签和预测概率值。假设真实标签为y_true,预测概率值为y_pred。
代码语言:python
代码运行次数:0
复制
y_true = np.array([0, 1, 1, 0, 1])
y_pred = np.array([0.2, 0.6, 0.8, 0.3, 0.9])
  1. 使用numpy.argsort函数根据预测概率值对真实标签进行排序。
代码语言:python
代码运行次数:0
复制
sorted_indices = np.argsort(y_pred)
  1. 根据排序后的真实标签计算正样本的秩次和负样本的秩次。
代码语言:python
代码运行次数:0
复制
positive_ranks = np.sum(y_true[sorted_indices] == 1)
negative_ranks = np.sum(y_true[sorted_indices] == 0)
  1. 计算AUC值。
代码语言:python
代码运行次数:0
复制
auc = (positive_ranks - (positive_ranks * (positive_ranks + 1)) / 2) / (positive_ranks * negative_ranks)
  1. 打印AUC值。
代码语言:python
代码运行次数:0
复制
print("手工计算的AUC值为:", auc)

完整代码如下:

代码语言:python
代码运行次数:0
复制
import numpy as np
from sklearn.metrics import roc_auc_score

y_true = np.array([0, 1, 1, 0, 1])
y_pred = np.array([0.2, 0.6, 0.8, 0.3, 0.9])

sorted_indices = np.argsort(y_pred)
positive_ranks = np.sum(y_true[sorted_indices] == 1)
negative_ranks = np.sum(y_true[sorted_indices] == 0)

auc = (positive_ranks - (positive_ranks * (positive_ranks + 1)) / 2) / (positive_ranks * negative_ranks)

print("手工计算的AUC值为:", auc)

AUC是评估二分类模型性能的常用指标,它代表了ROC曲线下的面积,范围在0到1之间,值越大表示模型性能越好。AUC值为0.5时表示模型性能等同于随机猜测,大于0.5时表示模型优于随机猜测。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券