вычисление ROC AUC со случайным лесом

Я использую классификатор случайного леса в задаче с несколькими классами.

rf = RandomForestClassifier(()
rf.fit(train_X, train_y)

А затем для предсказания:

pred = rf.predict(test_X)

Итак, я хочу вычислить roc_auc_score так:

roc_value = roc_auc_score(test_y, pred, average='weighted', 
    multi_class='ovr',labels=[0,1,2,3,4])

Но это дает ошибку:

numpy.AxisError: axis 1 is out of bounds for array of dimension 1

Как я могу это исправить?


person super_ask    schedule 15.03.2021    source источник


Ответы (1)


Если вас интересует ROC AUC, pred должны быть вероятности, а не предсказанные метки. В вашем случае это проблема мультиклассовой классификации, поэтому pred должна быть матрицей формы (n_samples, n_classes). Чтобы получить его, вам просто нужно использовать predict_proba вместо predict:

pred = rf.predict_proba(test_X)
person MaximeKan    schedule 15.03.2021