机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

文章目录

  • 1.K-近邻算法思想
  • 2.K-近邻算法(KNN)概念
  • 3.电影类型分析
  • 4.KNN算法流程总结
  • 5.k近邻算法api初步使用
    • 机器学习库scikit-learn
      • 1 Scikit-learn工具介绍
      • 2.安装
      • 3.Scikit-learn包含的内容
      • 4.K-近邻算法API
      • 5.案例
        • 5.1 步骤分析
        • 5.2 代码过程

1.K-近邻算法思想

假如你有一天来到北京,你有一些朋友也在北京居住,你来到北京之后,你也不知道你在北京的哪个区,假如你来到了北京南站。
分别问朋友在哪个区,距离多远。
根据最近朋友所在区比如丰台区,来判断自己是不是也在丰台区。
这就是K近邻算法的思想,根据最近距离来判断你属于哪个类别。

在这里插入图片描述

根据你的“邻居”来推断出你的类别

2.K-近邻算法(KNN)概念

K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法

定义
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。

来源:KNN算法最早是由Cover和Hart提出的一种分类算法

距离公式
两个样本的距离可以通过如下公式计算,又叫欧式距离 ,关于距离公式会在后面进行讨论
在这里插入图片描述
在这里插入图片描述

3.电影类型分析

假设我们现在有几部电影
在这里插入图片描述

其中? 号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想
我们这里时三列数据,属于三维数据的求解过程
比如我们求唐人街探案与二次曝光的距离,根据欧氏距离计算如下
在这里插入图片描述

分别计算每个电影和被预测电影的距离,然后求解
在这里插入图片描述

然后根据最小距离,或最小的几个距离的众数得到唐人街探案属于哪种片子
K=5表示,根据5部最小距离的电影来判断,从这8个样本里面拿其中的5个
在距离最小的5部电影里面,3部属于喜剧片,2部属于爱情片,由众数得知,唐人街探案属于喜剧片

4.KNN算法流程总结

1)计算已知类别数据集中的点与当前点之间的距离

2)按距离递增次序排序

3)选取与当前点距离最小的k个点

4)统计前k个点所在的类别出现的频率

5)返回前k个点出现频率最高的类别作为当前点的预测分类

5.k近邻算法api初步使用

机器学习流程:
在这里插入图片描述

1.获取数据集
2.数据基本处理
3.特征工程
4.机器学习
5.模型评估

机器学习库scikit-learn

1 Scikit-learn工具介绍

在这里插入图片描述

机器学习有很多库,为什么我们要选这个scikit-learn库呢?
1.它是Python语言的机器学习工具
2.Scikit-learn包括许多知名的机器学习算法的实现
3.Scikit-learn文档完善,容易上手,有丰富的API

2.安装

pip install scikit-learn
在这里插入图片描述

安装好之后可以通过以下命令查看是否安装成功
import sklearn

注:安装scikit-learn需要Numpy, Scipy等库

3.Scikit-learn包含的内容

在这里插入图片描述

分类、聚类、回归
特征工程
模型选择、调优

4.K-近邻算法API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
在这里插入图片描述

参数解析:
n_neighbors:所选用的近邻数(默认= 5),相当于K.weights:预测的权函数,概率值。weights的参数设置‘uniform’:同一的权重,即每个邻域中的所有点都是平均加权的。‘distance’ :这种情况下,距离越近权重越大,反之,距离越远其权重越小。[callable](可调用):用户定义的函数,它接受一个距离数组,并返回一个包含权重的相同形状的数组algorithm :用于计算最近邻居的算法,。有{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}‘auto’      :根据样本数据自动刷选合适的算法。‘ball_tree’:构建“球树”算法模型。‘kd_tree’ :‘’kd树‘’算法。‘brute’     :使用蛮力搜索,即或相当于Knn算法,需遍历所有样本数据与目标数据的距离,进而按升序排序从而选取最近的K个值,采用投票得出结果。leaf_size:叶的大小,针对算法为球树或KD树而言。这个设置会影响构造和查询的速度,以及存储树所需的内存。最优值取决于问题的性质。metric:用于树的距离度量。默认度量是Minkowski,p=2等价于标准的欧几里德度量。有关可用度量的列表,可以查阅距离度量类的文档。如果度量是“预先计算的”,则假定X是距离矩阵,在拟合期间必须是平方。p:Minkowski度量参数的参数来自sklearn.emeics.pairwise.pairwise_距离。当p=1时,这等价于使用曼哈顿距离(L1),欧几里得距离(L2)等价于p=2时,对于任意的p,则使用Minkowski_距离(L_P)。metric_params:度量函数的附加关键字参数,设置应为dict(字典)形式。n_jobs:要为邻居搜索的并行作业的数量。None指1,除非在 joblib.parallel_backend背景。-1意味着使用所有处理器,若要了解相关的知识应该具体查找一下。
拥有的方法:
fit(self, X[, y]): 以X为训练数据,y为目标值拟合模型get_params(self[, deep])
: 获取此估计器的参数。kneighbors(self[, X, n_neighbors, …])
: 找到点的K邻域。kneighbors_graph(self[, X, n_neighbors, mode])
: 计算X中点的k-邻域(加权)图predict(self, X)
: 预测提供的数据的类标签predict_proba(self, X)
: 返回测试数据X的概率估计。score(self, X, y[, sample_weight])
: 返回给定测试数据和标签的平均精度。set_params(self, \*\*params)
: 设置此估计器的参数。

5.案例

5.1 步骤分析

1.获取数据集
2.数据基本处理(该案例中省略)
3.特征工程(该案例中省略)
4.机器学习
5.模型评估(该案例中省略)

5.2 代码过程

导入模块

from sklearn.neighbors import KNeighborsClassifier#构造数据集
#x是原始数据,特征。y是类别标签,目标x = [[0], [1], [2], [3]]   #x是二维数据,dataframe数据结构
y = [0, 0, 1, 1]           #y是series数据结构#机器学习 -- 模型训练
# 实例化API
estimator = KNeighborsClassifier(n_neighbors=2)
# 使用fit方法进行训练,这行代码执行了,模型就训练好了estimator.fit(x, y)res = estimator.predict([[1]])
print(res)res2 = estimator.predict([[50]])
print(res2)

根据训练好的模型,预测未知数据所属类别:
在这里插入图片描述
由上可知,达到预期效果。大家觉得机器学习有了python库的加持,是不是不太难呢,大家一起加油,继续后面的机器学习之路,欢迎大家点赞评论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/459404.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】JAVA+Vue+SpringBoot实现房屋出售出租系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 房屋销售模块2.2 房屋出租模块2.3 预定意向模块2.4 交易订单模块 三、系统展示四、核心代码4.1 查询房屋求租单4.2 查询卖家的房屋求购单4.3 出租意向预定4.4 出租单支付4.5 查询买家房屋销售交易单 五、免责说明 一、摘…

2 月 7 日算法练习- 数据结构-树状数组

树状数组 lowbit 在学习树状数组之前,我们需要了解lowbit操作,这是一种位运算操作,用于计算出数字的二进制表达中的最低位的1以及后面所有的0。 写法很简单: int lowbit(int x){return x &am…

Android Compose 一个音视频APP——Magic Music Player

Magic Music APP Magic Music APP Magic Music APP概述效果预览-视频资源功能预览Library歌曲播放效果预览歌曲播放依赖注入设置播放源播放进度上一首&下一首UI响应 歌词歌词解析解析成行逐行解析 视频播放AndroidView引入Exoplayer自定义Exoplayer样式横竖屏切换 歌曲多任…

单选全选功能实现

单选框&#xff1a; // v-for"i in carStore.cartList" i 是购物车里的单类商品 <el-checkbox :model-value"i.selected" change"(selected)>singeCheck(i,selected)"/>全选框&#xff1a; <el-checkbox :model-value"carSto…

基于Skywalking开发分布式监控(二)

续上篇&#xff0c;上一篇主要是讲了为啥选skywalking&#xff0c;以及怎么有针对性改造SW Agent&#xff0c;现在我们继续看看如何构建自定义Trace跟踪链 要对SW Agent插件做适当剪裁&#xff0c;原来包括customize插件在内SW 8.9有100多个插件&#xff0c;如果没有作用也就罢…

Android:国际化弹出框

3.13 风格与主题、国际化 1、应用国际化 应用国际化&#xff0c;通过修改系统语言&#xff0c;应用显示语言跟着改变。 选择Locale,点击>>符号。 创建多个国家&#xff0c;地区strings.xml文件&#xff0c;有一个默认strings.xml文件&#xff0c;各个stirngs.xml中<…

本地安全策略 | 服务器管理 | 配置项

本地安全策略 Windows 本地安全策略是一组在本地计算机上配置的安全设置&#xff0c;用于管理计算机的安全性和访问控制。这些策略是针对单个计算机的&#xff0c;与域策略不同&#xff0c;本地安全策略不通过域控制器进行集中管理。本地安全策略通过本地组策略编辑器进行配置…

mac电脑flutter环境配置,解决疑难问题

准备工作 首先搭建flutter的环境需要使用到flutter的sdk&#xff0c;可以直接跳去官网下载&#xff1a;Choose your first type of app - Flutter 中文文档 - Flutter 中文开发者网站 - Flutter&#xff0c;下载时要注意你电脑所使用的芯片是Intel的还是苹果的芯片。 下载好的…

C#调用WechatOCR.exe实现本地OCR文字识别

最近遇到一个需求&#xff1a;有大量的扫描件需要还原为可编辑的文本&#xff0c;很显然需要用到图片OCR识别为文字技术。本来以为这个技术很普遍的&#xff0c;结果用了几个开源库&#xff0c;效果不理想。后来&#xff0c;用了取巧的方法&#xff0c;直接使用了WX的OCR识别模…

Elasticsearch:使用 LangChain 文档拆分器进行文档分块

使用 Elasticsearch 嵌套密集向量支持 这个交互式笔记本将&#xff1a; 将模型 “sentence-transformers__all-minilm-l6-v2” 从 Hugging Face 加载到 Elasticsearch ML Node 中使用 LangChain 分割器将段落分块成句子&#xff0c;并使用嵌套密集向量将它们索引到 Elasticse…

07:Kubectl 命令详解|K8S资源对象管理|K8S集群管理(重难点)

Kubectl 命令详解&#xff5c;K8S资源对象管理&#xff5c;K8S集群管理 kubectl管理命令kubectl get 查询资源常用的排错命令kubectl run 创建容器 POD原理pod的生命周期 k8s资源对象管理资源文件使用资源文件管理对象Pod资源文件deploy资源文件 集群调度的规则扩容与缩减集群更…

Python tkinter树状目录窗口实现

通过tkinter GUI实现读取特定目录下所有目录及文件并在窗口中可选择显示。 通过左右布局实现&#xff0c;左侧为树状目录&#xff0c;右侧为输入框和显示文本框。 目录 tkinter树状目录 左侧树状目录 右侧显示 调用实现窗口 打开目录 打开py文件 总结 tkinter树状目录 …