我正在尝试运行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)
我该如何解决?
答案 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)
这很好,可以做你想要的。
希望这有帮助。