AUC,ROC快速计算——Python代码

本文主要介绍如何使用Python快速计算AUC值,通常基于混淆矩阵计算tpr和fpr绘制ROC曲线,然后求其面积。sklearn库的roc_auc_score函数需要预测概率,但若只有评分和标签,可以采用近似方法,该方法统计预测正确超过错误的概率,实测与实际AUC相差极小。文章提供了一段Python代码示例。
摘要由CSDN通过智能技术生成

我们在建模过程需要通过KS,AUC等指标评估模型的效果,关于KS,AUC怎么来的这里就不介绍了,网上有大量的资料介绍。本篇博文重点介绍AUC值怎么快速计算得到。
我们一般计算AUC的时候是根据混淆矩阵先计算出tpr,fpr,通过tpr和fpr可以得到ROC曲线,类似下面的ROC图。
ROC曲线
AUC值就是ROC曲线下面的面积,问题是怎么计算呢?可以采用积分方法求得,不过未免有些麻烦。Python的skearn库中也有计算AUC的函数,sklearn.metrics.roc_auc_score,不过需要通过预测概率来计算的,如果只有评分和好坏标签该怎么快速计算呢?
这里有一个近似计算的方法,大概的思想就是:AUC的含义是模型预测正确大于预测错误的概率,从概率的角度出发,统计给出的数据(好坏标签和预测概率或分数)中预测正确比预测错误大的概率是多大。具体的介绍可以参考AUC近似计算,这里虽然是近似计算,但经过验证计算结果跟实际差别非常小,我验证的差别是千分位的级别,可以说非常准确了。
下面直接给出Python代码吧:

import pandas as pd
import numpy as np

def auc(df, label='label', predict='predict', prob=False):
    """
    功能:根据样本实际标签和预测概率(分数)快速计算auc值。
    参数:
        df: pd.DataFrame,至少包含标签号预测结果列;
        label: 样本实际标签(0, 1);
        predict: 预测结果(分数或概率均可);
        prob: predict是否为概率,根据实际情况设置,默认False;
    输出:auc值。
    """
    if prob:
        df.sort_values(by=predict, ascending=False, inplace
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值