Я решаю задачу мультиклассовой классификации и хочу оценить результат, используя кривую roc в sklearn.Как я знаю, это позволяет построить кривую в этом случае, если я установлю положительную метку.Я попытался построить кривую roc с использованием положительной метки и получил странные результаты: чем больше «положительная метка» класса, тем ближе к верхнему левому углу кривая roc стала.Затем я строю кривую roc с предыдущей двоичной маркировкой массивов.Эти 2 участка были разными!Я думаю, что второй был построен правильно, но в случае бинарных классов график имеет только 3 точки, и это не информативно.
Я хочу понять, почему кривая roc для бинарных классов и кривая roc с "положительный ярлык »выглядит иначе и как правильно построить кривую Рока с положительным ярлыком.
Вот код:
from sklearn.metrics import roc_curve, auc
y_pred = [1,2,2,2,3,3,1,1,1,1,1,2,1,2,3,2,2,1,1]
y_test = [1,3,2,2,1,3,2,1,2,2,1,2,2,2,1,1,1,1,1]
fp, tp, _ = roc_curve(y_test, y_pred, pos_label = 2)
from sklearn.preprocessing import label_binarize
y_pred = label_binarize(y_pred, classes=[1, 2, 3])
y_test = label_binarize(y_test, classes=[1, 2, 3])
fpb, tpb, _b = roc_curve(y_test[:,1], y_pred[:,1])
plt.plot(fp, tp, 'ro-', fpb, tpb, 'bo-', alpha = 0.5)
plt.show()
print('AUC with pos_label', auc(fp,tp))
print('AUC binary variant', auc(fpb,tpb))
Это пример графика
Красная кривая представляет roc_curve с pos_label, синяя кривая представляет roc_curve в «двоичном регистре»