Мне нужно выполнить классификацию пользователей, используя двоичную классификацию (Пользователь 1 или 0 в каждом случае).
У меня 30 пользователей и 30 наборов FPR и TPR.
Я не использовал roc_curve(y_test.ravel(), y_score.ravel())
для получения FPR и TPF (есть причина для этого, я должен классифицировать каждый из них, используя двоичную классификацию, и генерировать FPR A и TPF, используя мой собственный код).
На самом деле, мой установка была я не хранить метки класса как мультикласс. Я выбрал одного пользователя как положительный класс, а остальных - как отрицательный. Я повторил для всех других пользователей. Затем я вычислил FPR и TPF, используя мой собственный код без использования roc_auc_score
.
Допустим, у меня уже есть значения FPR и TPF в alist.
У меня есть эти коды:
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()
Но он вывел эту цифру, которая выглядит странно ,
Кроме того, как мне получить среднее значение AU C?