机器学习:使用scikit-learn库中的网格搜索调参
一、scikit-learn库中的网格搜索调参
1)网格搜索的目的:
- 找到最佳分类器及其参数;
2)网格搜索的步骤:
- 得到原始数据
- 切分原始数据
- 创建/调用机器学习算法对象
- 调用并实例化scikit-learn中的网格搜索对象
- 对网格搜索的实例对象fit(得到最佳模型及参数)
- 预测
- 以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的逻辑原理,根据定义的超参数范围生成很多模型,选出准确度最高的模型
- knn_clf:需要进行网格搜索的分类器对象,或者说是算法本身;
- param_grid:定义的网格搜索的参数的范围;
- n_jobs:
作用:确定计算cpu内核的使用数量
用法:为一个整数,整数是几运算过程中就使用cpu的几个内核
默认n_jobs = 1,表示使用计算机的一个核进行处理;
如果计算机的4核,可以让n_job = 2/3/4,使用2/3/4个核同时处理,提高运行效率
n_jobs = -1,表示计算机有几个核就使用几个核进行运算 - verbose:
作用:确定网格搜索过程中的中间信息,反应网格搜索的搜索状态;
用法:为一个整数,整数越大,搜索过程中输出的中间信息越详细
verbose = 0,默认为0,搜索过程中不输出中间信息
一般verbose = 2,;(老师一般使用2)
二、机器学习的其它超参数
- 向量空间余弦相似度(Cosine Similarity)
- 调整余弦相似度(Adjusted Cosine Similarity)
- 皮尔森相关系数(pearson Correlation Coefficient)
- Jacard相似系数(Jaccard Coefficient)
机器学习:使用scikit-learn库中的网格搜索调参的更多相关文章
- 机器学习算法中的网格搜索GridSearch实现(以k-近邻算法参数寻最优为例)
机器学习算法参数的网格搜索实现: //2019.08.031.scikitlearn库中调用网格搜索的方法为:Grid search,它的搜索方式比较统一简单,其对于算法批判的标准比较复杂,是一种复合 ...
- python 机器学习中模型评估和调参
在做数据处理时,需要用到不同的手法,如特征标准化,主成分分析,等等会重复用到某些参数,sklearn中提供了管道,可以一次性的解决该问题 先展示先通常的做法 import pandas as pd f ...
- 【机器学习】李宏毅机器学习-Keras-Demo-神经网络手写数字识别与调参
参考: 原视频:李宏毅机器学习-Keras-Demo 调参博文1:深度学习入门实践_十行搭建手写数字识别神经网络 调参博文2:手写数字识别---demo(有小错误) 代码链接: 编程环境: 操作系统: ...
- 机器学习框架Scikit Learn的学习
一 安装 安装pip 代码如下:# wget "https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz#md5=83 ...
- SVM流行库LIBSvm的使用和调参
简介:Libsvm is a simple, easy-to-use, and efficient software for SVM classification and regression. It ...
- 部署mongodb中需要注意的调参
部署mongodb的生产服务器,给出如下相关建议: 使用虚拟化环境: 系统配置 1)推荐RAID配置 RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列 ...
- 【Python机器学习实战】决策树与集成学习(七)——集成学习(5)XGBoost实例及调参
上一节对XGBoost算法的原理和过程进行了描述,XGBoost在算法优化方面主要在原损失函数中加入了正则项,同时将损失函数的二阶泰勒展开近似展开代替残差(事实上在GBDT中叶子结点的最优值求解也是使 ...
- Python机器学习笔记 Grid SearchCV(网格搜索)
在机器学习模型中,需要人工选择的参数称为超参数.比如随机森林中决策树的个数,人工神经网络模型中隐藏层层数和每层的节点个数,正则项中常数大小等等,他们都需要事先指定.超参数选择不恰当,就会出现欠拟合或者 ...
- 网格搜索与K近邻中更多的超参数
目录 网格搜索与K近邻中更多的超参数 一.knn网格搜索超参寻优 二.更多距离的定义 1.向量空间余弦相似度 2.调整余弦相似度 3.皮尔森相关系数 4.杰卡德相似系数 网格搜索与K近邻中更多的超参数 ...
随机推荐
- mysql服务器3306端口不能远程连接的解决
1.网络检测 1)ping主机可以: 2)telnet 主机3306端口不可以: telnet 主机22端口可以: 说明与本机网络没有关系: 2.端口检测 1)netstat ...
- 【P3957】跳房子(单调队列+DP+二分)
终于把这个题缸出来了,话说这题也不是想的那么难... 因为最小的最大,所以二分,因为由前面推出后面,所以DP,因为输入单调,朴素DP会T,所以单调队列.要注意的是,这个题数据很大,要开LL,然后DP数 ...
- (转)Openstack Cascading和Nova Cell
Openstack是看着AWS成长起来的,这点毋庸置疑:所以AWS大规模商用已成事实的情况下,Openstack也需要从架构和产品实现上进行优化,以满足大规模商用的要求.从已有的实现来看其中两种方式值 ...
- java从小白到架构师大牛必看书籍
一.基础类 1.<ThinkingJava>,入门第一位是建立正确的概念. 2.<Core Java>,我没系统读过,这本书更贴近实践,更多API的介绍,同样,更新也更频繁. ...
- delphi 数据连接规范
建议大家采用另外一种编码风格,不要在程序中到处都有这种LZ程序生成的代码: begin with qryMain do begin try Close; SQL.Clear; SQL.Add('Del ...
- 目标检测 — NMS
1.非极大值抑制步骤 非极大值抑制算法(Non-maximum suppression,NMS)在目标检测中经常用到.我们的检测算法可能对同一目标产生多次检测的结果,非极大值抑制算法可以保证每个目标只 ...
- webdriver处理鼠标右键菜单栏
selenium中ActionChains类提供了鼠标操作的常用方法,但对于鼠标右键的菜单栏,无论是send_keys(Keys.ARROW_DOWN)还是send_keys("K" ...
- iOS-使用ALAssetsLibrary获取相册图片视频
用ALAssetsLibrary获取相册图片视频 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library enumera ...
- 分布式_理论_04_ 3PC
一.前言 五.参考资料 1.分布式理论(四)—— 一致性协议之 3PC 2.分布式理论(四) - 3PC协议 3.
- Linux-监控与安全运维之Nagios
1. Nagios 简介是一个开源软件,可以监控网络设备网络流量.Linux/windows主机状态,甚至可以监控打印机它可以运行在Linux上或windows上基于浏览器的web界面方便运维人员查看 ...