sklearn: дать параметр для оценки F1 в gridsearchCV/Pipeline

Я установил sklearn.GridsearchCV с Pipeline в качестве оценщика. Моя проблема - мультиклассовая классификация. Я четко получаю эту ошибку:

ValueError: Target is multiclass but average='binary'. Please choose another average setting, one of [None, 'micro', 'macro', 'weighted'].

Это потому, что я использую оценку F1 без установки аргумента average. У меня вопрос: где именно я должен передать этот аргумент объекту?

мой код:

estimator = GridSearchCV(
    estimator=Pipeline(setting['layers']),
    param_grid=setting['hyper_parameters'],
    cv=cv,
    scoring=self.scoring,
    refit=self.refit_metric,
    n_jobs=n_jobs,
    return_train_score=True,
    verbose=True
)

а потом:

estimator.fit(
    self.x_train,
    self.y_train
)

Ошибка возникает в строке .fit(), но я думаю, что мне следует передать параметр при создании экземпляра GridsearchCV.


person Alireza    schedule 02.04.2020    source источник


Ответы (1)


Для вашего параметра scoring GridSearchCV вы можете просто передать, например. f1_weighted в виде строки. Это должно делать свое дело. Вы можете ознакомиться с sklearn docs для возможных значений.

person afsharov    schedule 02.04.2020
comment
Ах, я знал, что могу передать ему строку типа f1, но тогда я не был слишком умен, чтобы проверить список значений!!! Большое спасибо! - person Alireza; 02.04.2020