Sklearn fbeta_score 默认平均参数不适用于多类目标变量
Sklearn fbeta_score default average parameter not working with multiclass target variable
我想用f2-score来评估我的模型,但是有一个错误。
from sklearn.metrics import fbeta_score, make_scorer
ftwo_scorer = make_scorer(fbeta_score, beta=2) # beta=2
你可以看到,我使用 fbeta_score
和 make_scorer
来定义我的指标。但是,当我将此指标应用于 fit
时,出现错误。
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
svc = SVC()
parameters = { 'C':[100,1000]}
#'gamma':[1e-5,1e-4,1e-3]}}
clf = GridSearchCV(svc, parameters, scoring=ftwo_scorer,cv=5)
clf.fit(Xtrain, Ytrain,)
Yval_pred = clf.predict(Xval)
错误信息:
ValueError Traceback (most recent call last)
<ipython-input-600-ebf059724dd4> in <module>
4 #'gamma':[1e-5,1e-4,1e-3]}
5 clf = GridSearchCV(svc, parameters, scoring=ftwo_scorer,cv=5)
----> 6 clf.fit(Xtrain, Ytrain)
7 Yval_pred = clf.predict(Xval)
……
ValueError: Target is multiclass but average='binary'. Please choose
another average setting, one of [None, 'micro', 'macro', 'weighted'].
你能帮帮我吗?
发生这种情况是因为您的目标变量 Y
可能超过两个 类。默认情况下 fbeta_score
将平均值设置为二进制目标。
因此,正如错误建议将这些选项 [None, 'micro', 'macro', 'weighted']
的不同 average
值传递给 make_scorer
函数,即
from sklearn.metrics import fbeta_score, make_scorer
ftwo_scorer = make_scorer(fbeta_score, beta=2, average='weighted')
我想用f2-score来评估我的模型,但是有一个错误。
from sklearn.metrics import fbeta_score, make_scorer
ftwo_scorer = make_scorer(fbeta_score, beta=2) # beta=2
你可以看到,我使用 fbeta_score
和 make_scorer
来定义我的指标。但是,当我将此指标应用于 fit
时,出现错误。
from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
svc = SVC()
parameters = { 'C':[100,1000]}
#'gamma':[1e-5,1e-4,1e-3]}}
clf = GridSearchCV(svc, parameters, scoring=ftwo_scorer,cv=5)
clf.fit(Xtrain, Ytrain,)
Yval_pred = clf.predict(Xval)
错误信息:
ValueError Traceback (most recent call last)
<ipython-input-600-ebf059724dd4> in <module>
4 #'gamma':[1e-5,1e-4,1e-3]}
5 clf = GridSearchCV(svc, parameters, scoring=ftwo_scorer,cv=5)
----> 6 clf.fit(Xtrain, Ytrain)
7 Yval_pred = clf.predict(Xval)
……
ValueError: Target is multiclass but average='binary'. Please choose
another average setting, one of [None, 'micro', 'macro', 'weighted'].
你能帮帮我吗?
发生这种情况是因为您的目标变量 Y
可能超过两个 类。默认情况下 fbeta_score
将平均值设置为二进制目标。
因此,正如错误建议将这些选项 [None, 'micro', 'macro', 'weighted']
的不同 average
值传递给 make_scorer
函数,即
from sklearn.metrics import fbeta_score, make_scorer
ftwo_scorer = make_scorer(fbeta_score, beta=2, average='weighted')