栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

auc的计算(auc值计算)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

auc的计算(auc值计算)

前言

auc的主要用于分析二分类的准确率,并且主要是对回归任务做分析,当然分类也阔以。

计算原理

一个原理是roc曲线的面积,但是比较复杂,代码不好实现所以基本上不会那么写,还一个是基于rank的公式计算,原理比较复杂,本文介绍最简单的实现。

计算原理:

遍历正负样本对正样本的概率大于负样本,auc += 1正样本的概率等于负样本,auc += 0.5正样本的概率小于负样本,auc += 0遍历完毕,auc = auc / 正负样本对数

举个例子:

label = [1, 0, 0,]
pre = [0.9, 0.8, 0.3]
正负样本对有:(label[0],label[1]),(label[0],label[2])
因为pre[0]>pre[1],所以auc += 1,
因为pre[0]>pre[2],所以auc += 1,
总对数为2:
所以auc = (1 + 1)/2 = 1

python代码-------算法手撕auc建议写这个!!!

# auc:遍历正负样本对
"""
1、正的概率大于负的,auc加1
2、正的概率等于负的,auc加0.5
3、正的概率小于负的,auc加0

"""


def AUC(label, pre):
    pos = []
    neg = []
    auc = 0
    for index,l in enumerate(label):
        if l == 0:
            neg.append(index)
        else:
            pos.append(index)
    for i in pos:
        for j in neg:
            if pre[i] > pre[j]:
                auc += 1
            elif pre[i] == pre[j]:
                auc += 0.5
    return auc * 1.0 / (len(pos)*len(neg))

if __name__ == '__main__':
    label = [1, 0, 0, 0, 1, 0, 1, 0]
    pre = [0.9, 0.8, 0.3, 0.1, 0.4, 0.9, 0.66, 0.7]
    print(AUC(label, pre))

    from sklearn import metrics
    auc = metrics.roc_auc_score(label, pre)
    print('sklearn',auc)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/772509.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号