sklearn.metric.auc函数计算出的结果很奇怪

  统计/机器学习 模型验证 Python 损失函数    浏览次数:7398        分享
0

我用sklearn.metric.auc计算二元分类的roc auc,但是结果非常诡异,居然是小于0.5的。

然后我随便试了一个

>>> from sklearn.metrics import auc

>>> y_actual = [0, 0, 1]

>>> y_pred = [0.1, 0.2, 0.9]

>>> auc(y_actual, y_pred)

0.34999999999999

这个分类结果的auc明明是1才对,返回了一个小于0.5的数。有谁知道为什么吗?

 

魏哲   2017-03-30 11:37



   1个回答 
3

sklearn.metric.roc_auc_score才是计算ROC AUC的。

>>> y_actual, y_pred = [0, 0, 1], [0.2, 0.1, 0.9]

>> sklearn.metric.roc_auc_score(y_actual, y_pred)

1

你所用的sklearn.metrics.auc(x,y)是计算折线与x轴之间的面积,x是折线上点的横坐标,y是折线上点的纵坐标。

>>> x = [0, 1]

>>> y = [1, 1]

>>> sklearn.metrics.auc(x, y)

1


SofaSofa数据科学社区DS面试题库 DS面经

派大星   2017-03-31 09:38



  相关讨论

sklearn.metrics.auc里提到的梯形法则是什么意思?

精度召回precision recall auc是什么?

sklearn里计算roc_auc_score,报错ValueError: bad input shape

python里什么模块可以计算精度-召回(precision-recall)的AUC?

多元分类的roc auc

二元分类什么时候用LogLoss、什么时候用ROC AUC?如何选择?

有什么损失函数是直接优化roc auc的?

sklearn.preprocessing.StandardScaler采用的是哪种标准化的方法?

roc space是什么意思?

如何利用python画分类器的ROC曲线?

  随便看看

'str' object has no attribute 'decode' 代码运行时有错误呢?请高手帮忙解决

如何重命名pandas的dataframe的列名

python或者numpy求数值的中位数、四分位数

训练集中有的特征含有缺失值,一般怎么处理

怎么把dataframe的一列转成整数类型