Область под RO C для задачи мультикласса в scikit-learn - PullRequest
0 голосов
/ 30 апреля 2020

Я работаю над программой анализа настроений. Но мне удается включить " нейтральный " в категории рядом с " положительный " и " отрицательный ". И это делает категорию мультиклассом.

Так можно ли заставить roc_auc_score работать в мультиклассе? Или есть другой способ выполнить измерение помимо использования roc_auc_score?

Моя roc_auc_score реализация:

print(roc_auc_score(y_test, clf.predict_proba(X_test)[:,1]))

1 Ответ

0 голосов
/ 30 апреля 2020

Да, конечно, вы можете.

См. здесь :

Примечание: эта реализация может использоваться с двоичной, мультиклассовой и многолинейной классификацией, но применяются некоторые ограничения (см. Параметры).

и здесь :

Функция sklearn.metrics.roc_auc_score может использоваться для классификации нескольких классов.

В качестве примера давайте воспользуемся набором данных iris:

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_auc_score

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data,
                                                    iris.target,
                                                    stratify = iris.target,
                                                    random_state = 42)


model = DecisionTreeClassifier()
model.fit(X_train, y_train)
print('roc auc score: {:.4f}'.format(roc_auc_score(y_test, model.predict_proba(X_test), multi_class='ovo')))  

и вы получите:

ro c au c оценка: 0,9808

...