【发布时间】:2020-06-07 20:49:50
【问题描述】:
我需要使用二元分类(用户 1 或 0 在每种情况下)对用户进行分类。
我有 30 个用户,有 30 组 FPR 和 TPR。
我没有使用roc_curve(y_test.ravel(), y_score.ravel()) 来获取 FPR 和 TPF(这是有原因的,我必须使用二进制分类对它们中的每一个进行分类,并使用我自己的代码生成 FPR A 和 TPF)。
实际上,我的设置是我没有将类标签存储为多类。我所做的是将一个用户作为正面类别,将其余用户作为负面类别。我对所有其他用户重复了一遍。然后我使用自己的代码计算了 FPR 和 TPF,而不使用 roc_auc_score。
假设我在 alist 中已经有了 FPR 和 TPF 的值。
我有这些代码:
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from scipy import interp
n_classes=30
# First aggregate all false positive rates
all_fpr = np.unique(np.concatenate([fpr_svc[i] for i in range(n_classes)])) # Classified using SVC
# Then interpolate all ROC curves at this points
mean_tpr = np.zeros_like(all_fpr)
for i in range(n_classes):
mean_tpr += interp(all_fpr, fpr_svc[i], tpr_svc[i])
# Finally average it and compute AUC
mean_tpr /= n_classes
fpr = all_fpr[:]
tpr = mean_tpr[:]
plt.figure()
lw = 2
plt.plot(fpr, tpr, color='darkorange',
lw=lw)
plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Acceptance Rate')
plt.ylabel('True Acceptance Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()
此外,我如何获得平均 AUC?
【问题讨论】: