Roc_curve pos_label混淆

时间:2018-07-11 09:53:26

标签: python scikit-learn keras deep-learning roc

我有一个与roc_curve中的scikit-learn有关的问题需要进行深度学习,我注意到我的数据以1作为肯定标签。经过我的训练后,测试准确率达到了74%左右,但是曲线下的roc得分(AUC)仅为0.24。

y_pred = model.predict([x_test_real[:, 0],x_test_real[:, 1]])
fpr, tpr, thresholds = metrics.roc_curve(y_test_real, y_pred,pos_label=1)
roc_auc = metrics.auc(fpr, tpr)
print("roc_auc:  %0.2f" % roc_auc)

如果我将pos_label更改为0,则auc分数变为0.76(显然)

y_pred = model.predict([x_test_real[:, 0],x_test_real[:, 1]])
fpr, tpr, thresholds = metrics.roc_curve(y_test_real, y_pred,pos_label=0)
roc_auc = metrics.auc(fpr, tpr)
print("roc_auc:  %0.2f" % roc_auc)

现在我进行了一个小实验,我更改了训练和测试标签(属于二进制分类)

y_train_real = 1 - y_train_real
y_test_real = 1 - y_test_real

像这样,应该将正负标签从1翻转到0。然后我再次运行代码。这次期望roc auc的行为也会发生变化。但不是!

fpr, tpr, thresholds = metrics.roc_curve(y_test_real, y_pred,pos_label=0)

仍给出0.80,而pos_label=1给出2.。

  • 如果我更改了训练目标中的肯定标签,它应该不会影响roc_curve auc值吗?
  • 哪种情况是正确的分析
  • 输出是否与所使用的损失函数有关?我正在使用“对比损失”解决匹配不匹配的二进制分类问题

有人可以在这里帮助我吗? :)

0 个答案:

没有答案