機器學習算法參數的網格搜索實現:
//2019.08.03
1、scikitlearn庫中調用網格搜索的方法為:Grid search,它的搜索方式比較統一簡單,其對於算法批判的標准比較復雜,是一種復合交叉批判方式,不僅僅是准確率。其具體的實現方式如下(以KNN算法的三大常用超參數為例):
#使用scikitlearn中的gridsearch來進行機器學習算法的超參數的最佳網格搜索方式
#1-1首先使用字典的方式對KNN算法中的不同超參數組合進行定義
param_grid=[{
"weights":["uniform"],
"n_neighbors":[i for i in range(1,11)]
},
{"weights":["distance"],
"n_neighbors":[i for i in range(1,11)],
"p":[i for i in range(1,6)]
}
] #首先定義機器學習算法的不同超參數組合,使用字典的方式,二對於具體的超參數采用列表的數據結構
#1-2其次定義一個所需要調參的機器學習算法
knn_clf=KNeighborsClassifier()
#1-3導入scikitlearn中的網格搜索函數GridSearchCV,並且定義相應網格搜索方式(輸入初始化參數:1機器學習算法、2超參數組合列表、3n_jobs(選擇並行內核數目,-1表示全部是用),4verbose=2表示輸出相應搜索過程)
from sklearn.model_selection import GridSearchCV
grid_search=GridSearchCV(knn_clf,param_grid,n_jobs=-1,verbose=2)
#1-4使用訓練數據集進行網格搜索過程
grid_search.fit(x_train,y_train)
#1-5輸出相應胡玩網格搜索最佳參數組合結果和最佳參數組合時的准確率
print(grid_search.best_estimator_)
print(grid_search.best_params_)
print(grid_search.best_score_)
具體的實現代碼及其結果如下: