KNN算法原理 K Nearest Neighbour

2023-12-06 22:40

本文主要是介绍KNN算法原理 K Nearest Neighbour,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

K-临近算法原理

简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类。
存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据 与所属分类的对应关系。
输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的 特征进行比较,常用的是计算欧几里得距离,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。
一般来说,我们 只选择样本数据集中前K个最相似的数据,这就是K-近邻算法中K的出处,通常K是不大于20的整数。 最后 ,选择K个最相似数据中出现次数最多的分类,作为新数据的分类。

实例:选取鸢尾花数据进行分类

# load_iris是机器学习库提供给我们研究算法的数据
from sklearn.datasets import load_iris
iris = load_iris()
data = iris.data # 150个花的特征数据
target = iris.target # 每个数据对应的分类结果
target_names = iris.target_names # 每个结果对应的名字
feature_names = iris.feature_names # 所有的特征features = DataFrame(data=data,columns = feature_names)# 获取训练集和测试集,为了能够在图上显示,只选择两个特征进行features.iloc[:,0].std()
#0.828066127977863features.iloc[:,2].std()
#1.7652982332594662features.iloc[:,1].std()
#0.4358662849366982features.iloc[:,3].std()
#0.7622376689603465# 选区标准差较大的两个作为训练数据
# samples(训练集、测试集)
X_train = features.iloc[:130,2:4]
y_train = target[:130]# 测试集(验证训练模型的准确度)
X_test = features.iloc[130:,2:4]
y_test = target[130:]# 绘制图形
import matplotlib.pyplot as plt
%matplotlib inline
samples = features.iloc[:,2:4]# 展示真实数据的分类情况
plt.scatter(samples.iloc[:,0],samples.iloc[:,1],c=target)

鸢尾花

# 定义KNN分类器,训练数据,生成预测结果。
knnclf = KNeighborsClassifier(n_neighbors=5)
knnclf.fit(X_train,y_train)
y_ = knnclf.predict(X_test)# 获取所有预测点(满屏幕的点),将满屏幕的点最为预测数据
xmin,xmax = samples.iloc[:,0].min(),samples.iloc[:,0].max()
ymin,ymax = samples.iloc[:,1].min(),samples.iloc[:,1].max()x = np.linspace(xmin,xmax,100)
y = np.linspace(ymin,ymax,100)xx,yy = np.meshgrid(x,y)X_test = np.c_[xx.ravel(),yy.ravel()]
y_ = knnclf.predict(X_test)
# 显示数据
from matplotlib.colors import ListedColormapcmap = ListedColormap(['#aa00ff','#00aaff','#ffaa00'])# 展示预测数据的分类情况
plt.scatter(X_test[:,0],X_test[:,1],c=y_,cmap=cmap)
# 展示真实数据的分类情况
plt.scatter(samples.iloc[:,0],samples.iloc[:,1],c=target)

在这里插入图片描述

KNN算法还可用于回归分析

第一步:生成模型,并训练数据
第二步:使用模型,预测数据
大概思路,使用周围几个点(根据n_neighbors的取值)坐标的平均值作为线上的点

小结

  • 优点:精度高、对异常值不敏感、无数据输入假定。
  • 缺点:时间复杂度高、空间复杂度高。
  • 适用数据范围:数值型和标称型。

这篇关于KNN算法原理 K Nearest Neighbour的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/463605

相关文章

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

康拓展开(hash算法中会用到)

康拓展开是一个全排列到一个自然数的双射(也就是某个全排列与某个自然数一一对应) 公式: X=a[n]*(n-1)!+a[n-1]*(n-2)!+...+a[i]*(i-1)!+...+a[1]*0! 其中,a[i]为整数,并且0<=a[i]<i,1<=i<=n。(a[i]在不同应用中的含义不同); 典型应用: 计算当前排列在所有由小到大全排列中的顺序,也就是说求当前排列是第

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖