微调的一种方法是手工调制超参数,直到找到一个好的超参数组合,这么做的话会非常冗长,你也可能没有时间探索多种组合,所以可以使用Scikit-Learn的GridSearchCV来做这项搜索工作。

GridSearchCV的名字其实可以拆分为两部分,GridSearch和CV,即网格搜索和交叉验证。这两个名字都非常好理解。网格搜索,搜索的是参数,即在指定的参数范围内,按步长依次调整参数,利用调整的参数训练学习器,从所有的参数中找到在验证集上精度最高的参数,这其实是一个训练和比较的过程。
GridSearchCV可以保证在指定的参数范围内找到精度最高的参数,但是这也是网格搜索的缺陷所在,他要求遍历所有可能参数的组合,在面对大数据集和多参数的情况下,非常耗时。
以分类树作为例子来说明其用法。

from sklearn.model_selection import GridSearchCV
from sklearn import tree
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_splitwine = load_wine()  # 178个数据,13个属性,三个分类种类。
# 把红酒数据进行切分,切分成训练集和测试集合,切分比例一般是7:3
data_train, data_test, target_train, target_test = train_test_split(wine.data, wine.target, test_size=0.3)# 建立一些超参数的网格,会自动帮我们取选择最好的搭配
param_grid = [{'criterion': ['entropy'], 'max_features': [2, 4, 6, 8], 'max_depth': [5, 6, 7, 8],'min_impurity_decrease': [0.01, 0.02]},  # 一共有 1x4x4x2 个超参数组合{'criterion': ['gini'], 'max_features': [3, 5, 7, 8], 'max_depth': [4, 5, 6, 7],'min_impurity_decrease': [0.01, 0.02]},  # 一共有 1x4x4x2 个超参数组合
]  # 一共有 1x4x4x2 + 1x4x4x2 个超参数组合dtc = tree.DecisionTreeClassifier(criterion='entropy', class_weight='balanced')  # 定义一个决策树的实例,决策树节点的分裂选择的是 根据信息熵划分
grid_search = GridSearchCV(dtc, param_grid, cv=5,scoring='accuracy')  # GridSearchCV的名字其实可以拆分为两部分,GridSearch和CV,即网格搜索和交叉验证。# 使用多种参数组合的网格来进行训练。
clf = grid_search.fit(data_train, target_train)  # 这一步也是最耗费时间的。
score = grid_search.score(data_test, target_test)
print(score)  # 得到最后的评价分数print(grid_search.best_params_)  # 找到最优的超参数,这里帮我自动选择好了最优的参数列表
print(grid_search.best_estimator_)  # 找到最优化的模型,甚至把初始化参数都打印出来了# 找到了最好的那个模型
estimator = grid_search.best_estimator_
estimator.fit(data_train, target_train)
score = estimator.score(data_test, target_test)
print(score)

《scikit-learn》通过GridSearchCV来进行超参数优化相关推荐

  1. 超参数优化 贝叶斯优化框架_10个超参数优化框架

    超参数优化 贝叶斯优化框架 Tune your Machine Learning models with open-source optimization libraries 使用开源优化库调整机器学 ...

  2. 【机器学习】五种超参数优化技巧

    转载:我不爱机器学习 超参数是用于控制学习过程的不同参数值,对机器学习模型的性能有显著影响. 超参数优化是找到超参数值的正确组合,以在合理的时间内实现数据的最大性能的过程 1 数据处理 import ...

  3. 机器学习模型的超参数优化 | 原力计划

    作者 | deephub 责编 | 王晓曼 出品 | CSDN博客 头图 | CSDN付费下载自东方IC 引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模 ...

  4. 【机器学习】算法模型自动超参数优化方法

    什么是超参数? 学习器模型中一般有两类参数,一类是可以从数据中学习估计得到,我们称为参数(Parameter).还有一类参数时无法从数据中估计,只能靠人的经验进行设计指定,我们称为超参数(Hyper ...

  5. 机器学习模型定点化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  6. 超参数优化 贝叶斯优化框架_mlmachine-使用贝叶斯优化进行超参数调整

    超参数优化 贝叶斯优化框架 机器 (mlmachine) TL; DR (TL;DR) mlmachine is a Python library that organizes and acceler ...

  7. 贝叶斯优化神经网络参数_贝叶斯超参数优化:神经网络,TensorFlow,相预测示例

    贝叶斯优化神经网络参数 The purpose of this work is to optimize the neural network model hyper-parameters to est ...

  8. tensorflow超参数优化_机器学习模型的超参数优化

    引言 模型优化是机器学习算法实现中最困难的挑战之一.机器学习和深度学习理论的所有分支都致力于模型的优化. 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数.超参数与一般 ...

  9. 机器学习模型的超参数优化用于分子性质预测

    在<预测化学分子的nlogP--基于sklearn, deepchem, DGL, Rdkit的图卷积网络模型>中简单介绍了sklearn模型的使用方法. 现在来介绍一下,如何对sklea ...

最新文章

  1. python中setup什么意思_Python unittest中setUp()和setUpClass()有什么区别?
  2. 在不同制作基础上该如何选择网页制作软件?
  3. JDK8之Stream新特性
  4. 项目管理杂谈-员工的积极性在哪里?
  5. 几维安全Javascript代码混淆(js加密)在线使用说明
  6. html新一代网页播放器源码 未加密
  7. Python学习之路—初识Python
  8. 《软件测试与质量保证》期末复习重点
  9. docker的源配置
  10. Tomcat日志配置远程rsyslog采集
  11. win10 32位和64位的区别,win10 32位和64位有什么区别
  12. 教学演示软件 模型十二 地理学的水循环模型
  13. Android 获取横竖屏状态
  14. 如何获取淘宝商品类目信息,通过商品ID获取商品类目?
  15. 卸载wps后office图标丢失变白,系统卡顿
  16. 90后都开始养生了,你怎么能少了这本宝典丨钛空舱
  17. PPT忘记加密密码的处理方式
  18. 第22次CSP认证 第4题 校门外的树(3种方法,非常详细)(类dp+数学)
  19. matlab如何去除图像白边_matlab 图像保存时去除白边
  20. YTU 2438: 三人三鬼

热门文章

  1. 《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 1.4 内容安排
  2. linux下安装php两种模式区别
  3. 容器编排技术 -- 使用Minikube集群
  4. Linux用一键安装包快速部署禅道项目管理平台
  5. NodeJS 使用官方oracledb库连接数据库教程
  6. 解决小程序图片在开发者工具能显示,测试时真机不显示问题
  7. native vlan(本征vlan)----vlan 1 与一般vlan的区别详细解答、tag字段简介、二层异vlan通信、双vlan tag跳跃攻击(附图,建议电脑观看)
  8. 牛逼哄哄的 MQ 到底有啥用?
  9. c语言 字符去重复以及冒泡排序
  10. windows常用指令