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

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

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库的加持,是不是不太难呢,大家一起加油,继续后面的机器学习之路,欢迎大家点赞评论。


相关文章
|
9月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
10月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
462 26
|
9月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
252 5
|
10月前
|
监控 数据可视化 数据挖掘
Python Rich库使用指南:打造更美观的命令行应用
Rich库是Python的终端美化利器,支持彩色文本、智能表格、动态进度条和语法高亮,大幅提升命令行应用的可视化效果与用户体验。
931 0
|
9月前
|
数据可视化 关系型数据库 MySQL
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
本文详解基于Python的电影TOP250数据可视化大屏开发全流程,涵盖爬虫、数据存储、分析及可视化。使用requests+BeautifulSoup爬取数据,pandas存入MySQL,pyecharts实现柱状图、饼图、词云图、散点图等多种图表,并通过Page组件拖拽布局组合成大屏,支持多种主题切换,附完整源码与视频讲解。
884 4
【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
|
9月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
657 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
9月前
|
机器学习/深度学习 数据采集 人工智能
【机器学习算法篇】K-近邻算法
K近邻(KNN)是一种基于“物以类聚”思想的监督学习算法,通过计算样本间距离,选取最近K个邻居投票决定类别。支持多种距离度量,如欧式、曼哈顿、余弦相似度等,适用于分类与回归任务。结合Scikit-learn可高效实现,需合理选择K值并进行数据预处理,常用于鸢尾花分类等经典案例。(238字)
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1853 6
|
机器学习/深度学习 数据采集 人工智能
20分钟掌握机器学习算法指南
在短短20分钟内,从零开始理解主流机器学习算法的工作原理,掌握算法选择策略,并建立对神经网络的直观认识。本文用通俗易懂的语言和生动的比喻,帮助你告别算法选择的困惑,轻松踏入AI的大门。
998 8
|
机器学习/深度学习 存储 Kubernetes
【重磅发布】AllData数据中台核心功能:机器学习算法平台
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。

推荐镜像

更多