一、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. Android系统--输入系统(一)必备的Linux知识_inotify和epoll

    Android系统--输入系统(一)必备的Linux知识_inotify和epoll 引入 1. 笔记本电脑插入外接键盘,两个键盘都可以使用 a. 键盘即插即用--如何检测键盘的接入和拔出 hotpl ...

  2. linux内核调试+qemu+eclipse【转】

    本文转载自:https://blog.csdn.net/WANG__RONGWEI/article/details/54922727 一.调试环境: 在ubuntu16.04下,在虚拟机里边运行的ub ...

  3. 斯坦福机器学习视频笔记 Week4 & Week5 神经网络 Neural Networks

    神经网络是一种受大脑工作原理启发的模式. 它在许多应用中广泛使用:当您的手机解释并理解您的语音命令时,很可能是神经网络正在帮助理解您的语音; 当您兑现支票时,自动读取数字的机器也使用神经网络. Non ...

  4. DP问题分类总结

    http://m.blog.csdn.net/y990041769/article/details/24194605 此博客总结了动态规划相关问题,学习一下!

  5. codeforces 439D 思维

    题意:两个数组a,b,每次操作可将其中一个数组的一个数字加1或减1,求最小操作次数使得a数组的最小值大于等于b数组的最大值. 思路: 解法一:考虑最终状态,假设a为数组a中最小的数,b为数组b中最大的 ...

  6. java深入探究15-SpringMVC

    测试代码:链接:http://pan.baidu.com/s/1c1QGYIk 密码:q924 回顾spring+struts web.xml配置;struts核心过滤器;spring监听器-> ...

  7. Google Chrome 未响应。是否立即重新启动?

    不当的退出会造成 Google Chrome 无法启动.出现“Google Chrome 未响应.是否立即重新启动?”的错误.要解决这个问题:      1.同时按住Windows旗帜键 + R键,调 ...

  8. 批处理之IPC连接工具

    由于自己需要重复一些工作,闲来没事发个搞个批处理玩玩. 功能介绍:建立IPC连接,IPC磁盘映射,断开IPC连接等 @echo off color 0A echo Welcome!!! echo 本机 ...

  9. iOS定位和位置信息获取

    要实现地图.导航功能,往往需要先熟悉定位功能,在iOS中通过Core Location框架进行定位操作.Core Location自身可以单独使用,和地图开发框架MapKit完全是独立的,但是往往地图 ...

  10. CDN,内容分发网络。

    CDN,内容分发网络. 就近获取内容,提高用户访问网站响应速度. 广州的用户,访问广州的节点.北京的用户,访问北京的节点. 图片CDN,提高图片访问,方便数据迁移. DNS,域名系统.处理域名和IP地 ...