一、scikit-learn库中的网格搜索调参

 

 1)网格搜索的目的:

  • 找到最佳分类器及其参数;

 

 2)网格搜索的步骤:

  1. 得到原始数据
  2. 切分原始数据
  3. 创建/调用机器学习算法对象
  4. 调用并实例化scikit-learn中的网格搜索对象
  5. 对网格搜索的实例对象fit(得到最佳模型及参数)
  6. 预测
  • 以kNN算法为例,Jupyter中运行;

    import numpy as np
    from sklearn import datasets # 得到原始数据
    digits = datasets.load_digits()
    X = digits.data
    y = digits.target # 根据自己编写的函数,对原始数据进行切分
    from ALG.train_test_split import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_train = 0.2, seed = 666) # 1)定义搜索的参数范围
    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)]
    }
    ] # 2)创建一个需要进行网格搜索的机器学习算法对象
    from sklearn.neighbors import KNeighborsClassifier knn_clf = KNeighborsClassifier() # 3)实例化scikit-learn中的网格搜索对象
    from sklearn.model_selection import GridSearchCV # 创GridSearchCV对应的实例对象,一般传入4个参数:
    grid_search = GridSearchCV(knn_clf, param_grid, n_jobs = -1, verbose = 2) # 4)对网格搜索的实例对象fit
    %%time
    grid_search.fit(X_train, y_train) # 5)查看结果
    # 查看网格搜索得到的最佳的分类器对应的参数(为最佳分类器的所有参数)
    grid_search.best_estimator_ # 查看准确度
    # 此处得到的准确度(0.9853963838664812)并没有之前(n_neighbors = 3时)得到的准确度高,因为评判标准改变了
    grid_search.best_score_ # 查看之前定义的网格搜索参数中最优的结果
    grid_search.best_params_
    # 返回:{'n_neighbors': 3, 'p': 3, 'weights': 'distance'} # 获取最佳分类器模型
    knn_clf = grid_search.best_estimator_ # 6)使用最佳分类器进行预测
    knn_clf.score(X_test, y_test)

 3)网格搜索对象的参数

  • grid_search = GridSearchCV(knn_clf, param_grid, n_jobs = -1, verbose = 2)
  • GridSearchCV的逻辑原理,根据定义的超参数范围生成很多模型,选出准确度最高的模型
  1. knn_clf:需要进行网格搜索的分类器对象,或者说是算法本身;
  2. param_grid:定义的网格搜索的参数的范围;
  3. n_jobs:
    作用:确定计算cpu内核的使用数量
    用法:为一个整数,整数是几运算过程中就使用cpu的几个内核
    默认n_jobs = 1,表示使用计算机的一个核进行处理;
    如果计算机的4核,可以让n_job = 2/3/4,使用2/3/4个核同时处理,提高运行效率
    n_jobs = -1,表示计算机有几个核就使用几个核进行运算
  4. verbose:
     作用:确定网格搜索过程中的中间信息,反应网格搜索的搜索状态;
    用法:为一个整数,整数越大,搜索过程中输出的中间信息越详细
    verbose = 0,默认为0,搜索过程中不输出中间信息
    一般verbose = 2,;(老师一般使用2)

二、机器学习的其它超参数

  1. 向量空间余弦相似度(Cosine Similarity)
  2. 调整余弦相似度(Adjusted Cosine Similarity)
  3. 皮尔森相关系数(pearson Correlation Coefficient)
  4. Jacard相似系数(Jaccard Coefficient)

机器学习:使用scikit-learn库中的网格搜索调参的更多相关文章

  1. 机器学习算法中的网格搜索GridSearch实现(以k-近邻算法参数寻最优为例)

    机器学习算法参数的网格搜索实现: //2019.08.031.scikitlearn库中调用网格搜索的方法为:Grid search,它的搜索方式比较统一简单,其对于算法批判的标准比较复杂,是一种复合 ...

  2. python 机器学习中模型评估和调参

    在做数据处理时,需要用到不同的手法,如特征标准化,主成分分析,等等会重复用到某些参数,sklearn中提供了管道,可以一次性的解决该问题 先展示先通常的做法 import pandas as pd f ...

  3. 【机器学习】李宏毅机器学习-Keras-Demo-神经网络手写数字识别与调参

    参考: 原视频:李宏毅机器学习-Keras-Demo 调参博文1:深度学习入门实践_十行搭建手写数字识别神经网络 调参博文2:手写数字识别---demo(有小错误) 代码链接: 编程环境: 操作系统: ...

  4. 机器学习框架Scikit Learn的学习

    一   安装 安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=83 ...

  5. SVM流行库LIBSvm的使用和调参

    简介:Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. It ...

  6. 部署mongodb中需要注意的调参

    部署mongodb的生产服务器,给出如下相关建议: 使用虚拟化环境: 系统配置 1)推荐RAID配置 RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列 ...

  7. 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参

    上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...

  8. Python机器学习笔记 Grid SearchCV(网格搜索)

    在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就会出现欠拟合或者 ...

  9. 网格搜索与K近邻中更多的超参数

    目录 网格搜索与K近邻中更多的超参数 一.knn网格搜索超参寻优 二.更多距离的定义 1.向量空间余弦相似度 2.调整余弦相似度 3.皮尔森相关系数 4.杰卡德相似系数 网格搜索与K近邻中更多的超参数 ...

随机推荐

  1. unbunto关闭触摸屏

    sudo rmmod psmouse 这个是禁用的 sudo modprobe psmouse 这个是启用的

  2. mysql服务器3306端口不能远程连接的解决

    1.网络检测   1)ping主机可以:   2)telnet 主机3306端口不可以:     telnet 主机22端口可以:   说明与本机网络没有关系: 2.端口检测   1)netstat ...

  3. Codeforces 870E Points, Lines and Ready-made Titles:并查集【两个属性二选一】

    题目链接:http://codeforces.com/problemset/problem/870/E 题意: 给出平面坐标系上的n个点. 对于每个点,你可以画一条经过这个点的横线或竖线或什么都不画. ...

  4. ie 元素兼容性总结

    css 属性元素 2.z-index 正常按自身层级决定显示顺序,在ie6 7 还需要依赖于父级的层级决定,排布在后边的元素排在前面.后来者居上覆盖前者. IE6,7支持inline元素转换成inli ...

  5. VS Code快捷键

    主命令框 F1 或 Ctrl+Shift+P: 打开命令面板.在打开的输入框内,可以输入任何命令,例如: 按一下 Backspace 会进入到 Ctrl+P 模式 在 Ctrl+P 下输入 >  ...

  6. Unity3D-UGUI图集打包与动态使用(TexturePacker)

    参考地址: http://blog.csdn.net/cjsen/article/details/52487706 今天做项目大佬看我在做图集,就跟我说可以用工具打包图集,也就是TexturePack ...

  7. 利用ChromeOptions()加载用户配置

    一. 如何绕过页面登录 我们在登录网站的时候,通常需要输入用户名.密码和验证码,那么有没有办法绕过登录环节呢? 有两种方法可以解决这个问题,一种是利用chrome浏览器的用户配置,一种是利用cooki ...

  8. HTML DOM scrollTo()方法

    一. 作用 scrollTo()方法可把内容滚动到指定的坐标 二. 语法 scrollTo(x, y)   其中参数x为要在窗口文档显示区左上角显示的文档的x坐标, y为要在窗口文档显示区左上角显示的 ...

  9. JS中的“use strict” 严格模式

    1.介绍严格模式 2.严格模式影响范围 变量:  var.delete.变量关键字 对象: 只读属性. 对象字面量属性重复申明 函数:参数重名.arguments对象.申明 其他:this.eval. ...

  10. 如何下载中文语言包让Eclipse汉化?

    Eclipse软件是JAVA开发必备的软件,对于英语不好的人而言面对英文代码还好,但是软件也是英语的那就头疼了,怎么解决?可以去官网下载中文语言包解压到Eclipse安装目录就可以汉化了.   工具/ ...