Использование множественной оценки метрик с GridSearchCV
Я пытаюсь использовать несколько метрик в 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 ответ
f1
является метрикой двоичной классификации. Для классификации нескольких классов, вы должны использовать averaged f1
на основе различной агрегации. Вы можете найти исчерпывающий список оценок, доступных в Sklearn здесь.
Попробуй это!
scoring = ['accuracy','f1_macro']
custom_knn = GridSearchCV(clf, param_grid, scoring=scoring,
refit='accuracy', return_train_score=True,cv =3)