TypeError:f1_score()至少需要2个参数(给定1个)

时间:2017-07-23 13:33:57

标签: python scikit-learn

我正在尝试运行SGDClassifier,但是我收到了这个错误:

TypeError: f1_score() takes at least 2 arguments (1 given)

这是我的代码:

pipeline = Pipeline([
 ('clf', SGDClassifier())
])

parameters = {
    'clf__loss': ('log', 'hinge'),
    'clf__penalty': ['l1', 'l2', 'elasticnet'],
    'clf__alpha': [0.001, 0.0001, 0.00001, 0.000001]
}

score_func = make_scorer(metrics.f1_score(average='weighted'))

grid_search = GridSearchCV(pipeline, parameters, n_jobs=3,
verbose=1, scoring=score_func)



grid_search.fit(X, Y)

我该如何解决?

2 个答案:

答案 0 :(得分:1)

我相信你需要像这样传递它:

make_scorer(metrics.f1_score, average='weighted')

您应该分别传递函数名称和任何关联的关键字参数。

Documentation供参考。

答案 1 :(得分:1)

您需要按如下方式定义评分函数:

from sklearn.metrics import f1_score


f1_scorer = make_scorer(f1_score,average='weighted')

grid_search =GridSearchCV(pipeline, parameters, n_jobs=3,verbose=1, scoring=f1_scorer)

这很好,可以做你想要的。

希望这有帮助。