一、交叉驗證
目的:為了讓被評估的模型更加準确可信
做法:所有資料分成n份,其中一份作為驗證集,其他份作為訓練集。經過n次的資料輪換測試,得到n組模型的結果,取平均值作為最終結果,稱為n折交叉驗證。
意義:使所有資料既有當訓練集的機會,也有當驗證集的機會。最後将求出平均值模型結果。
https://blog.csdn.net/qq_32419125/article/details/114212101
二、網格搜尋
由于部分模型中有超參數,即需要手動指定的參數,而手動過程繁雜,是以我們對模型預設幾種超參數組合,并使用網格搜尋進行超參數尋優。每組超參數都采用交叉驗證來進行評估,最後選出最優參數組合建立模型。
目的:尋找最優參數,也稱為超參數調整
超參數:需要手動指定的參數
需要調整參數的模型:k近鄰等具有超參數的模型

knn = KNeighborsClassifier() #k近鄰
param = {"n_neighbors": [3, 5, 10]} #超參數組合
gc = GridSearchCV(knn, param_grid=param, cv=2) #兩折交叉驗證+網格尋優
gc.fit(x_train, y_train)
print("在測試集上準确率:", gc.score(x_test, y_test))
print("在交叉驗證當中最好的結果:", gc.best_score_)
print("選擇最好的模型是:", gc.best_estimator_)
print("每個超參數每次交叉驗證的結果:", gc.cv_results_)