python - 在 GridSearchCV 中使用多指标评估

标签 python scikit-learn gridsearchcv

我正尝试在 GridSearchCV 中使用多个指标。我的项目需要多个指标,包括“准确性”和“f1 分数”。但是,在遵循 sklearn 模型和在线帖子之后,我似乎无法正常工作。这是我的代码:

from sklearn.model_selection import GridSearchCV
from sklearn.metrics import f1_score
clf = KNeighborsClassifier()

param_grid = {'n_neighbors': range(1,30), 'algorithm': ['auto','ball_tree','kd_tree', 'brute'], 'weights': ['uniform', 'distance'],'p': range(1,5)}

#Metrics for Evualation:
met_grid= ['accuracy', 'f1'] #The metric codes from sklearn

custom_knn = GridSearchCV(clf, param_grid, scoring=met_grid, refit='accuracy', return_train_score=True)

custom_knn.fit(X_train, y_train)
y_pred = custom_knn.predict(X_test)

我的错误发生在 custom_knn.fit(X_train,y_train) 上。此外,如果您注释掉 scoring=met_grid, refit='accuracy', return_train_score=True,它会起作用。 这是我的错误:

ValueError: Target is multiclass but average='binary'. Please choose another average setting.

此外,如果您能解释多重指标评估或将我介绍给可以做到这一点的人,我们将不胜感激!
谢谢

最佳答案

f1 是二元分类指标。对于多类分类,您必须根据不同的聚合使用 averaged f1。您可以在 Sklearn 中找到详尽的评分列表 here .

试试这个!

scoring = ['accuracy','f1_macro']

custom_knn = GridSearchCV(clf, param_grid, scoring=scoring, 
                          refit='accuracy', return_train_score=True,cv =3)

关于python - 在 GridSearchCV 中使用多指标评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53973563/

相关文章:

python - 如何在 GridSearchCV 中保存最佳估计器?

python - 使用 GridSearchCV 进行目标缩放

python - django-elasticsearch错误: [Errno -2] Name or service not known

python - 在我的 Web 应用程序中为架构做 302 是否可以?

python - scikit-learn - 我应该用 TF 还是 TF-IDF 拟合模型?

python - 如何将 KNeighborsRegressor 与半正矢度量一起使用?

python - 使用 Scikit-Learn 在 RegressorChain 上进行 GridSearch?

python - 如何允许用户在 Django Rest Framework 中仅修改他的数据

Python挑战: distinct combination of prime numbers in a given range

python - sklearn的KNeighborsClassifier中如何根据最高精度选择K