《KNN与K-means从入门到实战》

简介: 《KNN与K-means从入门到实战》

1. 基本概念


1.1 KNN


k 近邻法(k-nearest neighbor,k-NN)是一种基本分类与回归方法。


k 近邻法的输入为实例的特征向量对应于特征空间的点;输出为实例的类别,可以取多类。


k 近邻法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其k个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k 近邻法不具有显式的学习过程。


k 近邻法1968年由Cover和Hart提出。

1.2 K-means


K-means是一种聚类方法,聚类是针对给定的样本,依据它们特征的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。


聚类的目的是通过得到的类或簇来发现数据的特点或对数据进行处理。


聚类属于无监督学习,因为只是根据样本的相似度或距离将其进行归类,而类或簇事先并不知道。

1.3 KNN 和 K-means对比


KNN

分类算法

监督学习

数据集是带Label的数据

没有明显的训练过程,基于Memory-based learning

K值含义 - 对于一个样本X,要给它分类,首先从数据集中,在X附近找离它最近的K个数据点,将它划分为归属于类别最多的一类

K-means


聚类算法

非监督学习

数据集是无Label,杂乱无章的数据

有明显的训练过程

K值含义- K是事先设定的数字,将数据集分为K个簇,需要依靠人的先验知识

2. KNN原理、实现过程


2.1 KKN原理:


KNN算法最简单粗暴的就是将预测点与所有点距离进行计算,然后保存并排序,选出前面K个值看看哪些类别比较多,则预测的点属于哪类。

2.2 KNN过程:


对未知类别属性的数据集中的每个点依次执行以下操作:
(1) 计算已知类别数据集中的点与当前点之间的距离;
(2) 按照距离递增次序排序;
(3) 选取与当前点距离最小的k个点;
(4) 确定前k个点所在类别的出现频率;
(5) 返回前k个点出现频率最高的类别作为当前点的预测分类

2.2.1 距离度量(1)


image.png

image.png

2.2.2 K值选择(3)


2.2.2.1 K值选择过小:

如果选择较小的k值,就相当于用较小的邻域中的训练实例进行预测,“学习”的近似误差(approximation error)会减小,只有与输入实例较近的(相似的)训练实例才会对预测结果起作用。

但缺点是“学习”的估计误差(estimation error)会增大,预测结果会对近邻的实例点非常敏感。如果邻近的实例点恰巧是噪声,预测就会出错。

换句话说,k 值的减小就意味着整体模型变得复杂,容易发生过拟合。

2.2.2.2 K值选择过大:

如果选择较大的k值,就相当于用较大邻域中的训练实例进行预测。

优点是可以减少学习的估计误差,但缺点是学习的近似误差会增大。这时与输入实例较远的(不相似的)训练实例也会对预测起作用,使预测发生错误。

换句话说,k值的增大就意味着整体的模型变得简单。

如果k=N,那么无论输入实例是什么,都将简单地预测它属于在训练实例中最多的类。这时,模型过于简单,完全忽略训练实例中的大量有用信息,是不可取的。


2.2.2.3 那么该如何确定K取多少值好呢?

答案是通过交叉验证(将样本数据按照一定比例,拆分出训练用的数据和验证用的数据,比如6:4拆分出部分训练数据和验证数据),从选取一个较小的K值开始,不断增加K的值,然后计算验证集合的方差,最终找到一个比较合适的K值。


2.2.3 确定前k个点所在类别的出现频率(4)


eg.当K取4时候,包含3个红点和1个蓝点

image.png

image.png

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


因为3 / 4 3/43/4>1 / 4 1/41/4,所以预测的点的类别属于红色,KNN完成。

3. K-means原理、实现过程


3.1 K-means原理:


K-Means算法的特点是类别的个数是人为给定的,如果让机器自己去找类别的个数,通过一次次重复这样的选择质心计算距离后分类-再次选择新质心的流程,直到我们分组之后所有的数据都不会再变化了,也就得到了最终的聚合结果。

3.2K-means过程:


(1)随机选取k个质心(k值取决于你想聚成几类)
(2)计算样本到质心的距离,距离质心距离近的归为一类,分为k类
(3)求出分类后的每类的新质心
(4)再次计算计算样本到新质心的距离,距离质心距离近的归为一类
(5)判断新旧聚类是否相同,如果相同就代表已经聚类成功,如果没有就循环2-4步骤直到相同

3.2.1 随机选取k个质心(k值取决于你想聚成几类)


假设我想聚4类,那我们随机选取四个五角星作为质心(大哥)

image.png

3.2.2 计算样本到质心的距离


距离质心距离近的归为一类,分为k类

计算除质心外的样本的欧式距离,样本离哪个质心近,该样本就跟哪个质心

换句话说就是,小圆点是小弟,五角星是大哥,小弟离哪个大哥近,那么这个小弟就跟哪个大哥混。

3.2.3 求出分类后的每类的新质心


上面我们已经分为4类了,这一步我们需要从4类中重新选出新的质心(新的大哥)。

3.2.4 再次计算计算样本到新质心的距离,距离质心距离近的归为一类


同样用上面方法计算样本到质心(新产生的大哥)的欧式距离,框起来的就是新大哥。

image.png

3.2.5 判断新旧聚类是否相同


当发现聚类情况并没有变化,这就说明我们的计算收敛已经结束了,不需要继续进行分组了,最终数据成功按照相似性分成了4组。即红、橙、绿、蓝,完成聚类。

4.总结:


4.1KNN


1.k 近邻法是基本且简单的分类与回归方法。k 近邻法的基本做法是∶对给定的训练实例点和输入实例点,首先确定输入实例点的k个最近邻训练实例点,然后利用这k个训练实例点的类的多数来预测输入实例点的类。


2.k 近邻模型对应于基于训练数据集对特征空间的一个划分。k 近邻法中,当训练集、距离度量、k值及分类决策规则确定后,其结果唯一确定。

3.k 近邻法三要素∶距离度量、k 值的选择和分类决策规则。常用的距离度量是欧氏距离及更一般的L。距离。k值小时,k 近邻模型更复杂;k值大时,k 近邻模型更简单。k 值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的k。常用的分类决策规则是多数表决,对应于经验风险最小化。

4.k 近邻法的实现需要考虑如何快速搜索k个最近邻点。kd树是一种便于对k 维空间中的数据进行快速检索的数据结构。kd树是二叉树,表示对k维空间的一个划分,其每个结点对应于k维空间划分中的一个超矩形区域。利用kd树可以省去对大部分数据点的搜索,从而减少搜索的计算量。

4.2K-means


1.聚类是针对给定的样本,依据它们属性的相似度或距离,将其归并到若干个“类”或“簇”的数据分析问题。一个类是样本的一个子集。直观上,相似的样本聚集在同类,不相似的样本分散在不同类。

2.距离或相似度度量在聚类中起着重要作用。

常用的距离度量有闵可夫斯基距离,包括欧氏距离、曼哈顿距离、切比雪夫距离以及马哈拉诺比斯距离。常用的相似度度量有相关系数、夹角余弦。

用距离度量相似度时,距离越小表示样本越相似;用相关系数时,相关系数越大表示样本越相似。


3.k 均值聚类是常用的聚类算法,有以下特点。基于划分的聚类方法;类别数k 事先指定;以欧氏距离平方表示样本之间的距离或相似度,以中心或样本的均值表示类别;以样本和其所属类的中心之间的距离的总和为优化的目标函数;得到的类别是平坦的、非层次化的;算法是迭代算法,不能保证得到全局最优。

4.k 均值聚类算法,首先选择k个类的中心,将样本分到与中心最近的类中,得到一个聚类结果;然后计算每个类的样本的均值,作为类的新的中心;重复以上步骤,直到收敛为止。

5.代码实战:


5.1 KNN实战:


(1)首先自制一个数据集:

image.png

(2)导入工具包

import pandas as pd
from sklearn.neighbors import KNeighborsClassifier  

(3)读取数据

data=pd.read_excel("knndata.xlsx")
data  #打印出来看一下 

image.png

(4)划分数据集

train_feature=data.iloc[0:9,1:4]#红色部分
train_label=data.iloc[0:9,4:5]#蓝色部分
test_feature=data.iloc[9:10,1:4]#绿色部分

image.png

(5)建模预测

knn=KNeighborsClassifier(n_neighbors=4)#n_neighbors=4即指定K值为4
knn.fit(train_feature,train_label)#模型训练
knn.predict(test_feature)#模型预测

输出:

image.png

5.2 K-means代码实战:

(1)自制个数据集

image.png

(2)导入工具包

import pandas as pd
from sklearn.cluster import KMeans

(3)读取数据

data=pd.read_excel("kmeans.xlsx")
data#打印看一下

image.png

(4)划分数据集

train_feature=data.iloc[0:10,1:4]#红色部分

image.png

(5)建模预测

kmeans = KMeans(n_clusters=3)#n_clusters=3即指定划分为3个类型
kmeans.fit(train_feature)#模型训练
label_kmeans = kmeans.predict(train_feature)#模型预测
label_kmeans

输出:

image.png

如果对您有帮助,请点赞支持一下。😀


相关文章
|
机器学习/深度学习 算法 数据挖掘
08 机器学习 - Kmeans聚类算法原理
08 机器学习 - Kmeans聚类算法原理
1064 0
|
存储 算法 数据库
一起聊聊图像质量和美学评估的数据集
图像质量和美学评估是计算机视觉领域中热点的研究问题,并且极具应用前景,可与众多实际应用深度结合。评价一张图片,主要从两个方向,一个是图像的质量,如像素、清晰度、有无噪声等,一个是图像的感觉,也就是美学,如构图、颜色、内容主体等。通过这两个方面就可以评价一张图片的好坏,通过计算机视觉算法,可以为图片自动评分,得分高的图片被认为较好,可以用于推荐和搜索等应用场景。本文主要聊聊一些关于图像质量和美学评估
14609 1
|
10月前
|
机器学习/深度学习 数据采集 人工智能
100_RLHF(人类反馈强化学习)原理与实践
在大型语言模型(LLM)的发展历程中,我们见证了模型从简单的文本生成工具,逐渐演变为能够理解复杂指令、进行多轮对话、甚至展示创造性思维的智能系统。然而,这一进化并非仅仅依靠模型规模的增大和数据量的增加,更重要的是训练方法的创新。其中,人类反馈强化学习(Reinforcement Learning from Human Feedback, RLHF)作为一种革命性的训练范式,在2022年随着ChatGPT的问世而广受关注,并在随后的GPT-4、Claude、Gemini等先进模型中得到广泛应用。
1160 3
|
传感器 存储 人工智能
ChatGPT让AI展现‘智能’魅力,函数调用和RAG如何助力迈向AI Agent?
本文由AI产品专家三桥君探讨了AI从被动响应到主动决策的演进路径,重点分析了函数调用和RAG技术在构建AI Agent中的关键作用。文章梳理了大模型能力的迭代(原生能力与涌现能力),技术演进的三个阶段(提示工程→函数调用→RAG),并提出AI Agent需具备环境感知、推理决策和行动执行的核心要素。AI产品专家三桥君认为,未来AGI需突破跨领域学习、实时更新和安全性挑战,最终实现如"贾维斯"般的智能伙伴。
465 1
ChatGPT让AI展现‘智能’魅力,函数调用和RAG如何助力迈向AI Agent?
|
机器学习/深度学习 存储 缓存
【机器学习】随机森林、AdaBoost、GBDT、XGBoost从零开始理解
介绍了机器学习中的几种集成学习算法,包括随机森林、AdaBoost、梯度提升决策树(GBDT)和XGBoost,解释了它们的概念、优缺点、算法过程以及系统设计。
2893 5
【机器学习】随机森林、AdaBoost、GBDT、XGBoost从零开始理解
|
机器学习/深度学习 人工智能 算法
【机器学习】K-means和KNN算法有什么区别?
【5月更文挑战第11天】【机器学习】K-means和KNN算法有什么区别?
|
Ubuntu
Ubuntu编译安装、卸载Boost
Ubuntu编译安装、卸载Boost
1703 0
|
存储 缓存 NoSQL
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
大数据-38 Redis 高并发下的分布式缓存 Redis简介 缓存场景 读写模式 旁路模式 穿透模式 缓存模式 基本概念等
642 4
|
存储 算法 索引
k-近邻算法(kNN)
k-近邻算法(kNN)
379 5
|
数据采集 监控 安全
网络爬虫是什么,它有什么作用?
网络爬虫是自动化工具,用于从网站中提取信息,通过追踪超链接和分析网页内容,实现互联网数据的自动搜集与整理。其工作流程包括选择起始URL、下载网页、解析HTML、跟踪链接、提取和存储数据及定期更新。主要用途涵盖数据挖掘、内容聚合、搜索引擎索引、价格比较、网站监控、学术研究及安全合规性等方面。然而,使用时需注意隐私、版权等法律问题。使用动态IP可避免触发网站反爬机制,如选用优质海外代理IP服务提高效率。

热门文章

最新文章