[英]Getting best f1 score using Gridsearch
我目前正在運行 GridSearchCV 來尋找 f1 分數的最佳超參數。
from sklearn.metrics import f1_score, make_scorer
f1 = make_scorer(f1_score, average='micro')
grid = {'n_neighbors':np.arange(1,16),
'p':np.arange(1,3),
'weights':['uniform','distance'],
'algorithm':['auto']
}
knn = KNeighborsClassifier()
knn_cv = GridSearchCV(knn,grid,cv=3, verbose = 3, scoring= f1)
knn_cv.fit(X_train_res,y_train_res)
print("Hyperparameters:",knn_cv.best_params_)
print("Train Score:",knn_cv.best_score_)
result_train["GridSearch-Best-Train"] = knn_cv.best_score_
雖然我注意到在使用 f1 作為評分后,最佳超參數和最佳准確度保持不變,但我是不是用錯了?
這並不奇怪,特別是如果你的課程不是太不平衡的話。 而且我沒有立即看到您的代碼有任何問題。
要添加一些支持證據表明事情按預期工作,請查看兩個記分員的knn_cv.cv_results_
(如果您將該字典轉換為pandas
數據框,可能最容易檢查)。 事實上,您可以指定多個評分器,以便cv_results_
屬性將在同一個字典/框架中顯示兩個分數。 您可能想要輸入更連續的分數,例如對數損失。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.