代码之家  ›  专栏  ›  技术社区  ›  Filipe Ferminiano

TypeError:f1\u score()至少接受2个参数(给定1个)

  •  1
  • Filipe Ferminiano  · 技术社区  · 9 年前

    我正在尝试运行SGDClassizer,但出现以下错误:

    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 回复  |  直到 9 年前
        1
  •  1
  •   seralouk    9 年前

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

    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)
    

        2
  •  1
  •   cs95 abhishek58g    9 年前

    我相信你需要这样通过考试:

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

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

    Documentation