sklearn:在 gridsearchCV/Pipeline 中将参数赋予 F1 分数

sklearn: give param to F1 score in 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时传递参数。

对于 GridSearchCVscoring 参数,您可以只传递例如f1_weighted 作为一个字符串。这应该够了吧。您可以查看 sklearn docs 以了解可能的值。