网格搜索与k近邻算法中更多超参数

网格搜索与k近邻算法中更多超参数

网络搜索

前笔记中使用的for循环进行的网格搜索的方式,我们可以发现不同的超参数之间是存在一种依赖关系的,像是p这个超参数,只有在 weights="uniform"才有意义

在sklearn中有一种封装好的网格搜索,grid search

我们首先设置一个数组,其内容可以当成字典来看待

对于第一组参数而言

   'weights':["uniform"],
'n_nrightbors':[i for i in range (1,11)]

对于第二组参数而言

   'weights':['distance'],
'n_neightbors':[i for i in range(1,11)],
'p': [i for i in range (1,6)]

这样我们就定义好了我们需要的参数的集合,我们也不难发现,超参数的依赖被我们通过这个集合中放在同一个字典中,来表示这种依赖关系

先创建出一个默认的不传任何参数的KNeighborsClassifier(),然后我们创建出一个knn_clf,通过调用sklearn中的网格搜索方法

  from sklearn.model_selection import GridSearchCV

待加载进来之后,再创建一个对应的实例对象,其中我们需要传入两个参数

  grid_search = GridSearchCV(knn_clf, param_grid)

然后我们就要基于训练数据集来尝试的寻找最佳的模型(fit操作)

  grid_search.fit(X_train,y_train)

使用grid_search.best_estimator_即可查看到最佳的模型所对应的参数

与之前结果不一样的原因是因为网格搜索的方式更加的复杂,还有交叉验证的方式参与其中,准确度更高

其他的情况还有

我们要想拿到最佳参数对应的分类器可以直接

  knn_clf = grid_search.best_estimator_

这样我们就可以直接使用knn_clf来进行预测了

结果:

  knn_clf.predict(X_test)

准确率:

  knn_clf.score(X_test, y_test)

GridSearchCV中的重要参数

n_jobs参数

在并行处理的时候,是可以给你的计算机来分配几个核来处理,默认为1,可以直接传入-1,代表直接将全部的核心都用于操作

verbose参数

这是一个输出参数,可以在你运行的情况下进行输出运行的情况,其可以传入一个整数,值越大,信息越详细

更多的超参数

事实上,knn还有更多的超参数

比如更多的距离定义

●向量空间余弦相似度Cosine Similarity

●调整余弦相似度Adjusted Cosine Similarity

●皮尔森相关系数Pearson Correlation Coefficient

●Jaccard相似系数Jaccard Coefficient

我们可以修改metric来更改对距离的定义,其默认的是明科夫斯基距离

【笔记】KNN之网格搜索与k近邻算法中更多超参数的更多相关文章

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

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

  2. GridSearchCV网格搜索得到最佳超参数, 在K近邻算法中的应用

    最近在学习机器学习中的K近邻算法, KNeighborsClassifier 看似简单实则里面有很多的参数配置, 这些参数直接影响到预测的准确率. 很自然的问题就是如何找到最优参数配置? 这就需要用到 ...

  3. 1.K近邻算法

    (一)K近邻算法基础 K近邻(KNN)算法优点 思想极度简单 应用数学知识少(近乎为0) 效果好 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 图解K近邻算法 上图是以 ...

  4. 机器学习(四) 机器学习(四) 分类算法--K近邻算法 KNN (下)

    六.网格搜索与 K 邻近算法中更多的超参数 七.数据归一化 Feature Scaling 解决方案:将所有的数据映射到同一尺度 八.scikit-learn 中的 Scaler preprocess ...

  5. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  6. 机器学习——KNN算法(k近邻算法)

    一 KNN算法 1. KNN算法简介 KNN(K-Nearest Neighbor)工作原理:存在一个样本数据集合,也称为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分 ...

  7. Python3入门机器学习 - k近邻算法

    邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代 ...

  8. 02-18 scikit-learn库之k近邻算法

    目录 scikit-learn库之k近邻算法 一.KNeighborsClassifier 1.1 使用场景 1.2 代码 1.3 参数详解 1.4 方法 1.4.1 kneighbors([X, n ...

  9. KNN K~近邻算法笔记

    K~近邻算法是最简单的机器学习算法.工作原理就是:将新数据的每一个特征与样本集中数据相应的特征进行比較.然后算法提取样本集中特征最相似的数据的分类标签.一般来说.仅仅提取样本数据集中前K个最相似的数据 ...

随机推荐

  1. Mysql:报错message from server: "Too many connections"(连接太多)

    报错信息 Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Data source re ...

  2. PDO之MySql持久化自动重连导致内存溢出

    前言 最近项目需要一个常驻内存的脚本来执行队列程序,脚本完成后发现Mysql自动重连部分存在内存溢出,导致运行一段时间后,会超出PHP内存限制退出 排查 发现脚本存在内存溢出后排查了一遍代码,基本确认 ...

  3. Mybatis学习(8)动态sql语句

    Mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类: 1. if 语句 (简单的条件判断) 2. ...

  4. Java | 标识符 & 关键字

    标识符是什么? 标识符 标识符是指在程序中,我们自己定义的内容.比如类的名字.方法的名字和变量的名字等等,都是标识符.在我们写的第一个程序当中,我们给类起名叫做Hello 也叫做标识符. 命名规则 标 ...

  5. Django基础012--接口开发

    全局参数(get,post,put,delete) 接口:/api/parameter GET:获取全局参数的所有数据 POST:创建全局参数 PUT:更新全局参数 DELETE:删除全局参数 1.创 ...

  6. ADB命令 连接WIFI检测序列号

    利用ADB 电脑与手机相连 查看序列号: adb shell  getprop ro.serialno 查看机器的SN号 adb shell getprop 查看机器的全部信息参数 查看IP地址: a ...

  7. android体温登记APP开发过程+问题汇总+源码

    源码上传至https://github.com/durtime/myproject下的temperature 实际效果:   开发过程 1.首先进行布局文件的编写,布局前台页面 2.布置两个按钮,一个 ...

  8. 简单梳理 ES6 函数

    箭头函数 箭头函数提供了一种更加简洁的函数书写方式.基本语法是 参数 => 函数体 基本用法: var f = v => v; //等价于 var f = function(a){ ret ...

  9. element ui table表头动态筛选条件

    本文主要实现:根据el-table表格数据自动生成表头筛选条件的方法,可根据表格数据动态调整. el-table表格的表头增加筛选功能,大家平时都是怎么实现的呢?先看看官方文档的例子: 1 <t ...

  10. 传统.NET 4.x应用容器化体验(5)

    前面几篇都是基于阿里云ECS直接玩的,有童鞋问直接用Windows Server 2019可以玩不,本篇就为你介绍一下如何给Windows Server 2019配置Docker环境. 1 准备工作 ...