如何在sklearn cross_validate函数的评分属性中传递参数?

par*_*lou 4 python scikit-learn

我想更改精度指标的平均参数,因为发生此错误

“ValueError: Target is multiclass but average='binary'。请选择另一个平均设置。”

我已经阅读了官方网站,但在使用 cross_validate 函数方面找不到答案。

clf = RandomForestClassifier()
scoring = ['accuracy', 'precision']

scores = cross_validate(clf, X, Y, scoring=scoring, cv=10, return_train_score=False, n_jobs=-1)
Run Code Online (Sandbox Code Playgroud)

知道如何处理吗?

pan*_*ijk 6

使用make_scorer它允许您为各个评分指标指定参数,然后使用字典将多个指标映射到名称:

from sklearn.metrics import accuracy_score, precision_score, make_scorer
scoring = {'Accuracy': make_scorer(accuracy_score), 
           'Precision': make_scorer(precision_score, average='None')}

scores = cross_validate(clf, X, Y, scoring=scoring, ...)
Run Code Online (Sandbox Code Playgroud)

参考这个例子