我很难理解scikit-learnroc_auc_score()
和auc()
scikit-learn之间的区别(如果有)。
试图预测具有不平衡类的二进制输出(Y = 1时约为1.5%)。
model_logit = LogisticRegression(class_weight='auto')
model_logit.fit(X_train_ridge, Y_train)
false_positive_rate, true_positive_rate, thresholds = roc_curve(Y_test, clf.predict_proba(xtest)[:,1])
auc(false_positive_rate, true_positive_rate)
Out[490]: 0.82338034042531527
和
roc_auc_score(Y_test, clf.predict(xtest))
Out[493]: 0.75944737191205602
有人可以解释这种差异吗?我以为两者都只是在计算ROC曲线下的面积。可能是因为数据集不平衡,但我不知道为什么。
谢谢!
AUC并不总是在ROC曲线的曲线下方。曲线下面积为下(抽象)地区 的一些
曲线,所以它比AUROC更一般的事情。对于不平衡的类,最好为精确调用曲线找到AUC。
请参阅sklearn来源roc_auc_score
:
def roc_auc_score(y_true, y_score, average="macro", sample_weight=None):
# <...> docstring <...>
def _binary_roc_auc_score(y_true, y_score, sample_weight=None):
# <...> bla-bla <...>
fpr, tpr, tresholds = roc_curve(y_true, y_score,
sample_weight=sample_weight)
return auc(fpr, tpr, reorder=True)
return _average_binary_score(
_binary_roc_auc_score, y_true, y_score, average,
sample_weight=sample_weight)
如您所见,这首先获得roc曲线,然后调用auc()
获得面积。
我想你的问题是predict_proba()
电话。对于普通predict()
的输出总是相同的:
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc, roc_auc_score
est = LogisticRegression(class_weight='auto')
X = np.random.rand(10, 2)
y = np.random.randint(2, size=10)
est.fit(X, y)
false_positive_rate, true_positive_rate, thresholds = roc_curve(y, est.predict(X))
print auc(false_positive_rate, true_positive_rate)
# 0.857142857143
print roc_auc_score(y, est.predict(X))
# 0.857142857143
如果为此更改以上内容,有时会得到不同的输出:
false_positive_rate, true_positive_rate, thresholds = roc_curve(y, est.predict_proba(X)[:,1])
# may differ
print auc(false_positive_rate, true_positive_rate)
print roc_auc_score(y, est.predict(X))
这是我的代码: null
我正在用人脸图像数据集训练一个卷积神经网络。该数据集有10,000个尺寸为700x700的图像。我的模型有12层。我正在使用生成器函数将图像读取到Keras fit_generator函数中,如下所示。 train_file_names==>包含训练实例文件名的Python列表 train_class_labels==>一个热编码类标记的数组([0,1,0],[0,0,1]等) train_dat
本文向大家介绍AUC的理解相关面试题,主要包含被问及AUC的理解时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Auc体现出容忍样本倾斜的能力,只反应模型对正负样本排序能力的强弱,而其直观含以上是任意取一个正样本和负样本,正样本的得分大于负样本的概率。
问题内容: 我正在使用HSM和PKCS11处理密钥派生问题,目前我无法理解为什么我会看到完全不同的结果,这取决于我是否使用generateKey()方法,而不是使用crypto()方法。在这两种情况下,我都尝试将DESede / ECB / NoPadding算法用于结果,但是根据我用来生成结果的方法(deriveKey与加密),我看到了不同的结果。 退后一会儿,以给出高层次的概述…我正在使用Gl
我正在加密字符串“AAAAAAAAAAAAAAAAAAAAAAAA”(一个16字节的UTF8字符串)使用AES 128 CBC与空白iv和密钥(16 0),并得到不同的结果 在PHP中: 第一位(粗体)与PHP相同,但PHP值有一个额外的“a=”,然后节点值有一个额外的“heuidae8z4dk0hu7p2z+1c” 我承认我对这里发生的事情很不确定--我错过了什么? 编辑...但不是那么不稳定,
我正在使用neo4j来计算一个数据集上的一些统计数据。为此,我经常在浮点值上使用sum。我得到不同的结果取决于环境。例如,执行以下操作的查询: 差别很小(与)。但使简单的等式检查失败就足够了。另一个例子是数据库的不同实例,使用相同的加载过程加载相同的数据可能会产生相同的问题(dbs可能不是1:1,某些关系的加载顺序可能不同)。我取了neo4j求和的原始值(通过简单地移除),并验证它们在所有情况下都