sklearn之KNN详解+GridSearchCV使用方法
在了解了KNN的基本原理之后,我们需要学习如何在sklearn中调用KNN算法以及如何用GridSearchCV进行调参
首先导入必要的库以及我们所使用的数据集:iris
1 from sklearn.neighbors import KNeighborsClassifier 2 from sklearn import datasets 3 from sklearn.model_selection import GridSearchCV 4 from sklearn.model_selection import train_test_split 5 iris = datasets.load_iris() 6 data = iris.data 7 label = iris.target
由于KNN对极端数据比较敏感,所以一般会对数据进行归一化,此处数据集比较友好就没有归一化了
将整个的数据集分成训练集和测试集,并创建一个KNN分类器对象
1 X_train,X_test,y_train,y_test = train_test_split(data,label,test_size=0.3,random_state=2) 2 knn_clf = KNeighborsClassifier()
由于sklearn中的KNN方法有很多超参数,所以需要调参,这里只介绍常用的超参数:
weights:有两种参数:'uniform'和'distance',前者表示最原始的不带距离权重的KNN,后者指带有距离权重的KNN,比如说,A到B的距离为1,A到C的距离为2,A到D的距离为4,而且B属于M类,C和D属于N类,此时KNN算法的K如果等于3,则最终会将A判断为N类,但实际上A距离B最近,应该属于M类,故应该使用距离的倒数来表示距离,此时AB距离为1,AC距离为1/2,AD距离为1/4,AC+AD=3/4<1,故A点属于M类,此外,这种算法还能解决K个最近距离就有K类的问题。
n_neighbors:邻居个数,不再赘述
p:p=1表示曼哈顿距离,p=2表示欧式距离,p可以大于2,注意p参数只有在weights='distance'时才有
接下来介绍GridSearchCV的用法,先上代码:
1 param_grid = [ 2 { 3 'weights':['uniform'], 4 'n_neighbors':[i for i in range(1,11)] 5 }, 6 { 7 'weights':['distance'], 8 'n_neighbors':[i for i in range(1,11)], 9 'p':[i for i in range(1,6)] 10 } 11 ] 12 grid_search = GridSearchCV(knn_clf,param_grid,n_jobs=-1,verbose=2)
GridSearchCV常用超参数:
estimator:创建的对象,如上的knn_clf
param_grid:是一个列表,列表里是算法对象的超参数的取值,用字典存储
n_jobs:使用电脑的CPU个数,-1代表全部使用
verbose:每次CV时输出的格式
接下来就用grid_search对象训练数据
1 %%time 2 grid_search.fit(X_train,y_train)
训练结果如下
grid_search.best_estimator_
这是取出参数最好的一组对应的分类器
grid_search.best_score_
这是取出最好的超参数组合对应的准确率
grid_search.best_params_
这是取出最好的一组超参数
knn_clf = grid_search.best_estimator_ y_pre = knn_clf.predict(X_test) knn_clf.score(X_test,y_pre)
用最好的一组超参数的分类器对象去预测测试集,并计算准确率。
如有错误欢迎大家指出,谢谢
转载于:https://www.cnblogs.com/wf-ml/p/9615398.html
sklearn之KNN详解+GridSearchCV使用方法相关推荐
- python knnsearch_sklearn之KNN详解+GridSearchCV使用方法
在了解了KNN的基本原理之后,我们需要学习如何在sklearn中调用KNN算法以及如何用GridSearchCV进行调参 首先导入必要的库以及我们所使用的数据集:iris 1 from sklearn ...
- sklearn.linear_model.Perceptron详解
sklearn.linear_model.Perceptron详解 形式 class sklearn.linear_model.Perceptron(*, penalty=None, alpha=0. ...
- PHP开发中常见的安全问题详解和解决方法
PHP开发中常见的安全问题详解和解决方法 参考文章: (1)PHP开发中常见的安全问题详解和解决方法 (2)https://www.cnblogs.com/walblog/articles/83313 ...
- linux中date使用方法,linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例)...
linux命令详解date使用方法(计算母亲节和父亲节日期脚本示例) 发布于 2016-02-07 15:58:40 | 108 次阅读 | 评论: 0 | 来源: 网友投递 LinuxLinux是一 ...
- C语言中三个数比较大小详解——三种方法
C语言中三个数比较大小详解--三种方法 方法一:if-else法 方法二:函数法 方法三:三目运算符法 C语言中比较三个数的大小有很多方法,以下是我总结的三种方法: 首先我定义 int a = 1 ...
- csrf漏洞防御方案_CSRF 漏洞原理详解及防御方法
跨站请求伪造:攻击者可以劫持其他用户进行的一些请求,利用用户身份进行恶意操作. 例如:请求http://x.com/del.php?id=1是一个删除ID为1的账号,但是只有管理员才可以操作,如果攻击 ...
- python one hot编码_对python sklearn one-hot编码详解
one-hot编码的作用 使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点 将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类 ...
- 计算机网络ping所有用法,ping命令详解和使用方法【详解】
随着科技的发展,计算机的发展也非常快,如今已经进入大部分的家庭之中,成为人们日常生活中必不可少的一个部分.当计算机出现一些小问题,我们就可以通过ping命令来查看电脑出现问题的原因,从而找到解决问题的 ...
- findindex遍历 js_详解ES6数组方法find()、findIndex()的总结
本文主要讲解ES6数组方法find()与findIndex(),关于JS的更多数组方法,可参考以下: 1. find() 该方法主要应用于查找第一个符合条件的数组元素,即返回通过测试(函数内判断)的数 ...
最新文章
- 【综述专栏】从微分几何和代数拓扑的视角来重新探讨图神经网络
- ACM Computer Factory
- 【洛谷 P3194】 [HNOI2008]水平可见直线 (单调栈)
- python图片二进制流转换成图片_python将图片二进制数据转换成Django file对象
- Ubuntu 18.04 固定ip 设置方法
- 高职高考全国计算机证书查询,2017年广东3+证书(高职高考)录取结果查询入口:附广东3+证书(高...
- php5+init,PHP mysqli_stmt_init() 函数
- caffe︱cifar-10数据集quick模型的官方案例
- unix服务器上传文件,Unix lrzsz命令 上传本地文件到服务器 / 发送文件到客户端...
- js实现轮播图常规类(原生JS,没有任何框架)
- ubuntu etc文件夹在哪_嵌入式Linux开发学习之 Ubuntu 和 Windows 文件互传
- 基于C语言实现的遗传算法系统
- HTC全景视频,2D 3D视频播放器下载教程
- 最新版《神经网络和深度学习》中文版.pdf
- 掌握 3 个搜索技巧,在 GitHub 上快速找到实用软件资源
- 微信平台自动获取Token
- 用计算机如何绘制流程图,电脑上怎么绘制流程图?电脑小白也能学会的流程图制作方法...
- Jaca定时任务-01-进程级别的Timer,ScheduledExecutorService,springtask
- Firefox(火狐浏览器)常用插件
- js实现百度换肤效果
热门文章
- java object 判断null_java判断object为null
- php网址图片怎么转based4,Ionic4 Base64 转化成图片插件-Base64 转化成图片Base64 To Gallery - Ionic Native...
- SpringBoot日志logback-spring.xml分环境
- idea怎么调试jsp页面_JSP+Servlet+C3P0+Mysql实现的YCU movies电影网站
- php逆波兰表达式,PHP逆波兰示意与表达式计算
- 图像局部特征(十八)--BOW
- python纸牌游戏_《升级》扑克牌游戏——Python实现
- 为什么使用3msip2协议_TCP协议专场
- php redis sorted set,Redis 有序集合(sorted set)
- 中小型网络工程设计与实现_小型网络如何实现经济可靠的设计和部署 (一)...