Использование множественной оценки метрик с GridSearchCV - PullRequest
0 голосов
/ 30 декабря 2018

Я пытаюсь использовать несколько метрик в GridSearchCV.Мой проект нуждается в нескольких показателях, включая «точность» и «оценка f1».Однако, следуя моделям sklearn и онлайн-сообщениям, я не могу заставить свою работу работать.Вот мой код:

from sklearn.model_selection import GridSearchCV
from sklearn.metrics import f1_score
clf = KNeighborsClassifier()

param_grid = {'n_neighbors': range(1,30), 'algorithm': ['auto','ball_tree','kd_tree', 'brute'], 'weights': ['uniform', 'distance'],'p': range(1,5)}

#Metrics for Evualation:
met_grid= ['accuracy', 'f1'] #The metric codes from sklearn

custom_knn = GridSearchCV(clf, param_grid, scoring=met_grid, refit='accuracy', return_train_score=True)

custom_knn.fit(X_train, y_train)
y_pred = custom_knn.predict(X_test)

Моя ошибка возникает на custom_knn.fit(X_train,y_train).Более того, если вы закомментируете scoring=met_grid, refit='accuracy', return_train_score=True, это работает.Вот моя ошибка:

ValueError: Target is multiclass but average='binary'. Please choose another average setting.

Кроме того, если бы вы могли объяснить множественную оценку метрики или отослать меня к кому-то, кто может, это было бы очень признательно!
Спасибо

1 Ответ

0 голосов
/ 30 декабря 2018

f1 - метрика двоичной классификации.Для многоклассовой классификации вы должны использовать averaged f1 на основе различных агрегаций.Вы можете найти исчерпывающий список оценок, доступных в Sklearn здесь .

Попробуйте это!

scoring = ['accuracy','f1_macro']

custom_knn = GridSearchCV(clf, param_grid, scoring=scoring, 
                          refit='accuracy', return_train_score=True,cv =3)
...