超参数之奇淫技巧--网格搜索(Grid Search)

Shanon ·
更新时间:2024-11-13
· 715 次阅读

网格搜索

  【前言】在调试超参数时,我们往往为了得到一个较好的参数,使模型得到提升,不断的去输入超参数,运行程序,这样调试是锻炼我们排列组合的能力?貌似这样并不合理,当然肯定有人会说,用for循环寻找超参数不就可以了吗?emmmm,你已经进阶了,可是依然不能满足我们的需求。于是,“懒惰”让今天的主角–网格搜索诞生了。

  【实践】接下来,到了我们最激动人心的代码部分了,我将以寻找KNN算法超参数为例,展示网格搜索的魅力!
  什么?你不懂KNN算法,没关系,在此我们关注的只是超参数的查找。

from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import GridSearchCV digits = datasets.load_digits() #下载数据集 X = digits.data #数据集特征 y = digits.target #数据集标签 X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666) #划分数据集 '''Grid Search''' #定义搜索的参数 '''每一个字典对应我们要进行的一组网格搜索 每个字典中要包含我们需要搜索的参数范围''' param_grid = [ { 'weights': ['uniform'], 'n_neighbors':[i for i in range(1,5)] }, { 'weights':['distance'], 'n_neighbors':[i for i in range(1,5)], 'p':[i for i in range(1,5)] } ] knn_clf = KNeighborsClassifier() #实例化一个KNN分类器 '''第一个参数:分类器 第二个参数:搜索对象 第三个参数:搜索时计算机工作的核,采用-1时所有核用于搜索 第四个参数:显示搜索时的数据,值越大信息越详细 ''' grid_search = GridSearchCV(knn_clf,param_grid,n_jobs=1,verbose=2) grid_search.fit(X_train,y_train) print("得到的最好的KNN分类器信息:\n",grid_search.best_estimator_) print('最好的分类器预测的结果:\n',grid_search.best_score_) print('网格搜索的最优参数:\n',grid_search.best_params_) knn_clf = grid_search.best_estimator_ acc = knn_clf.score(X_test,y_test) print('预测准确率为:\n',acc)

  网格搜索就分享到这了,欢迎各位小伙伴一起交流学习!


作者:Mingw_



grid 超参数 技巧 参数

需要 登录 后方可回复, 如果你还没有账号请 注册新账号