超参数网格搜索

在机器学习的上下文中,超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。

我们需要使用一些工具和方法找出最优超参数,网格搜索是一种。
sklearn 提供了一个 GridSearchCV 类,可实现网络搜索。

from sklearn.model_selection import GridSearchCV

网格搜索的建立在交叉验证的基础上。
交叉验证对训练集等分成N份,N为用户指定的值,比如可指定为10,即为10折交叉验证
将其中一份作为验证集,其余N-1份作为训练集,经过N次测试,每次都更换不同的验证集,得到N个模型结果,取最优结果。

例如对KNN的K值进行参数调优,把一组K值传入网格搜索中,找出最优值:

# 加载iris数据集,并构建knn模型,此处省略
# 超参数组
params = {"n_neighbors": [3, 5, 8, 12]}
# param_grid为参数组字典,cv为多少折交叉验证
search = GridSearchCV(knn, param_grid=params, cv=10)
search.fit(data_train, target_train)
# 交叉验证中最好的准确率
print(search.best_score_)
# 最好的模型
print(search.best_estimator_)
# 最好的参数
print(search.best_params_)
# 网格搜索准确率
print(search.score(data_test, target_test))

输出:

****************************** 交叉验证中最好的准确率 ******************************
0.9732142857142857
****************************** 最好的模型 ******************************
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
           metric_params=None, n_jobs=1, n_neighbors=8, p=2,
           weights='uniform')
****************************** 最好的参数 ******************************
{'n_neighbors': 8}
****************************** 网格搜索准确率 ******************************
0.9473684210526315
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本内容为Udacity课程波士顿房价预测项目,欢迎阅读,有错的地方请留言。仅参考不建议作为其他用途。 优达学城毕业...
    MrMiaow阅读 14,438评论 1 18
  • 正常用idea创建web项目时,添加tomcat,一般都会有artifact,一个是war,一个是war expl...
    祖国de花朵阅读 5,707评论 0 0
  • 没有灿烂的灯光 找不到心中的激荡 闻不到美味的花香 让我在这城市中缥缈 在很久以前的时候 我就是一只孤独的飞鸟 不...
    亦沐北风阅读 249评论 0 1
  • 前几日 有幸读到一篇文章 便下定决心说走就走 于是乎 顺着那条轨道 就来到了 这里 可能算不上严格意义上的旅行 却...
    朤朤朤朤朤阿岳阅读 293评论 0 1