sklearn分类指标auc返回ValueError

use*_*396 6 python machine-learning python-3.x scikit-learn auc

我正在使用 KNN 构建两类分类模型

我尝试计算 auc_score

from sklearn.metrics import auc

auc(y_test, y_pred)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-183-980dc3c4e3d7> in <module>
----> 1 auc(y_test, y_pred)

~/.local/lib/python3.6/site-packages/sklearn/metrics/ranking.py in auc(x, y, reorder)
    117             else:
    118                 raise ValueError("x is neither increasing nor decreasing "
--> 119                                  ": {}.".format(x))
    120 
    121     area = direction * np.trapz(y, x)

ValueError: x is neither increasing nor decreasing : [1 1 1 ... 1 1 1].
Run Code Online (Sandbox Code Playgroud)

然后我用了roc_auc_score

from sklearn.metrics import roc_auc_score
roc_auc_score(y_test, y_pred)
0.5118361429056588
Run Code Online (Sandbox Code Playgroud)

为什么它在工作的auc地方不起作用roc_auc_score。我以为他们都是一样的?我在这里缺少什么?

y_test是实际目标值,y_pred是我的预测值。

OmG*_*OmG 4

它们的实现和含​​义有所不同:

auc:

使用梯形规则计算曲线下面积 (AUC)。这是一个通用函数,给定曲线上的点。

roc_auc_score:

根据预测分数计算接收者操作特征曲线 (ROC AUC) 下的面积。

这意味着auc比 更通用,尽管您可以从 fromroc_auc_score获得相同的值。因此, 的输入参数是指定曲线的和坐标,而您的错误来自于所需输入类型的差异!此外,和必须按升序或降序排列。roc_auc_curveaucaucxyxy