Python中的k—近邻算法(处理常见的分类问题)

K近邻算法(KNN)及案例(Python) 1 算法简介 K近邻算法(英文为K-Nearest Neighbor,因而又简称KNN算法)是非常经典的机器学习算法。 K近邻算法的原理非常简单:对于一个新样本,K近邻算法的目的就是在已有数据中寻找与它最相似的K个数据,或者说“离它最近”的K个数据,如果这K个数据大多数属于某个类别,则该样本也属于这个类别。 (K的含义)以下图为例,假设五角星代表爱情片,三角形代表科幻片。此时加入一个新样本正方形,需要判断其类别。当选择以离新样本最近的3个近邻点(K=3)为判断依据时,这3个点由1个五角星和2个三角形 阅读详情

最近买了一本机器学习的书,书名叫《机器学习实战》,刚学了第一个算法,k—近邻算法,所以写篇博客分享一下。

 

那么开始,我们假设平面坐标系上面有四个坐标点,坐标分别是

[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]

然后这四个点有两个分类,分别是:

['A', 'A', 'B', 'B']

那么如果出现第五个点,我们怎么确定它,是A类还是B类呢,这个问题我们就可以用到我们今天介绍的算法了。

我们看代码:

from numpy import *
import operator

def createDataSet():
    group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
    labels = ['A', 'A', 'B', 'B']
    return group, labels

代码中我们导入两个模块,numpy和operator,之后会用到,然后我们定义了一个样本集,放的正好是我们刚刚给出的数据。

然后,我们写一个函数,去处理数据,参数有四个,分别是我们要处理的第五个点的坐标,样本坐标集合,分类集合,和k值(即排序比对的前k个元素),下面是函数代码:

def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]#shape[0]取矩阵第二维的长度,4
    diffMat = tile(inX, (dataSetSize, 1)) - dataSet#tile函数,将制定数组按照行列数转换为矩阵4行1列
    sqDiffMat = diffMat**2#矩阵减去初始坐标做平方运算
    sqDistances = sqDiffMat.sum(axis=1)#横纵坐标求和并开方求出与四个样本点的距离
    distances = sqDistances**0.5
    sortedDistIndicies = distances.argsort()#距离排序,返回值为升序的索引数组
    classCount = {}

    for i in range(k):#遍历前K个元素
        voteIlabels = labels[sortedDistIndicies[i]]
        classCount[voteIlabels] = classCount.get(voteIlabels, 0) + 1#分类名作为字典的键,如果字典中不包含该元素,default值为0
    #sorted函数:把字典的iterator,通过第一个域的大小排序,是否降序,是
    sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]#返回分类名次数最多的类

注释中有讲到每一个函数的功能,然后我们讲一下原理:

1.首先我们将给定的坐标按照样本数量返回一个相同长度的列表

2.经过计算我们得到坐标到每一个点的距离,排序

3.排序以后截取前k个元素,获得对应索引的分类类名

4.根据分类类名的出现次数,再次排序,次数越多,排序越靠前

5.返回次数出现最多的类名,即排序后列表的[0][0]元素

 

函数写完了,以上代码我们保存为kNN.py作为一个模块使用

那我们看一下执行代码:

import kNN

group, labels = kNN.createDataSet()
result = kNN.classify0([0, 0], group, labels, 3)
print(result)

打印出结果是:

B

所以第五个点[0,0],应该分为B类

机器学习实战k-邻近算法(kNN)简单实施代码解读 一.概念k-邻近算法是最简单的机器学习算法之一。k-邻近算法采用测量不同特征值之间的距离(具体说是欧氏距离)的方法进行分类。输入待分类的数据后,计算输入特征与样本集数据对应特征的距离,选择样本集中与输入特征距离最小的前k个样本,统计这k个样本数据中出现次数最多的类别作为新数据的分类。二.kNN的简单实施代码及注释from numpy import * import operatordef creat 阅读详情

相关推荐

数据处理和分析之分类算法:K近邻算法(KNN):数据科学导论

问题定义:明确项目目标,确定需要解决的问题。数据收集:从各种来源收集相关数据。数据清洗:处理缺失值、异常值,确保数据质量。数据探索:通过统计和可视化手段理解数据的特征和分布。特征工程:选择、构建和优化用于模型训练的特征。模型选择与训练:选择合适的算法,训练模型以预测或分类。模型评估:使用测试数据评估模型的性能。模型部署:将模型应用到实际场景中,进行实时或批量预测。结果解释与报告:解释模型结果,撰写报告,向非技术团队成员传达发现。

2401_87715305的博客 1487

1779. 找到最近的有相同 X 或 Y 坐标的点 python

1779. 找到最近的有相同 X 或 Y 坐标的点 给你两个整数 x 和 y ,表示你在一个笛卡尔坐标系下的 (x, y) 处。同时,在同一个坐标系下给你一个数组 points ,其中 points[i] = [ai, bi] 表示在 (ai, bi) 处有一个点。当一个点与你所在的位置有相同的 x 坐标或者相同的 y 坐标时,我们称这个点是 有效的 。 请返回距离你当前位置 曼哈顿距离 最近的 有效 点的下标(下标从 0 开始)。如果有多个最近的有效点,请返回下标 最小 的一个。如果没有有效点,请返回 -

小白的博客 778

基于Python的kNN手写数字识别实践

k近邻算法的概念源自人类的直觉判断,当我们无法确定一个对象的类别时,往往通过观察它与哪些已知类别的对象相似来做出判断。在算法中,这个“相似”通常通过计算特征空间中两点之间的距离来实现,欧氏距离是最常见的度量方式。机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等众多学科。它主要研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

weixin_35750483的博客 804

python 学习笔记(相似性计算方法)

实在不能理解为啥搜狗输入法每次我打biji的时候总是给我跳出荸荠(qi) (づ ̄ 3 ̄)づ,还有biaoshi,总是出标识(zhi)..╭(╯^╰)╮哼 基于距离的相似度计算 prefs[person][item] 数据集格式如下: example: aaaa={‘WANG’:{‘Lady in the Water’:3,’HAHA story’:2},…} from math imp

大锅八十小锅四十 4248

K-近邻分类器,python实现

用python实现k-近邻分类,包括约会网站配对效果和手写体识别。

HDMI 2.1超高清传输背后的“隐形功臣”:深入浅出图解VESA DSC压缩核心流程

本文深入解析HDMI 2.1超高清传输中的VESA DSC压缩技术,揭示其如何在不损失画质的前提下实现带宽减半。通过切片并行处理和智能算法,DSC技术有效解决了8K/4K高帧率视频的传输瓶颈,成为现代显示设备不可或缺的“隐形功臣”。

weixin_30615767的博客 423

python数据分类聚类案例_用Python进行系统聚类分析

在进行机器学习时,我们往往要对数据进行聚类分析,聚类,说白了就是把相似的样品点/数据点进行归类,相似度高的样品点会放在一起,这样一个样本就会被分成几类。而聚类分析也有很多种方法,比如分解法、加入法、有序样品的聚类、模糊聚类法以及系统聚类法等。而本文要介绍的就是系统聚类法,以及如何用python来进行系统聚类分析。首先来看一下系统聚类法的定义。系统聚类法(hierarchical clusterin...

weixin_39802962的博客 3366

用迅为RK3588开发板DIY无人机飞控:从电路设计到PID调参全记录

本文详细记录了使用迅为RK3588开发板DIY无人机飞控的全过程,从硬件选型、PCB设计到实时系统构建和PID调参。RK3588核心板凭借其强大的AI算力和丰富接口,成为高性能无人机控制解决方案的理想选择。文章还分享了视觉导航系统集成和实际飞行测试经验,为硬件爱好者提供实用参考。

weixin_29053577的博客 434

基于Python的K邻近分类法(KNN)+ 稠密SIFT + 手势识别

一、KNN原理分析 在分类方法中,最简单也用的最多的就是KNN(K邻近分类法)算法。这种算法把要分类的对象与训练集中,已知类标记的所有对象进行对比,并由k近邻对指派到哪一类进行投票。 这种方法通常分类效果很好,但也有很多弊端,例如:与K-menas聚类算法类似,需要预先设定k值,k值的选择会影响分类的性能。而且,这种方法要求整个训练集存储起来,如果训练集非常大时,就...

sinat_37751993的博客 1055

AU混响终极指南:从‘干声’到‘空间感’,用总音轨和发送技巧打造专业人声

本文详细介绍了如何在Adobe Audition(AU)中使用混响效果器,通过总音轨和发送技巧将‘干声’转化为具有专业‘空间感’的人声。从混响基础原理到总线架构设置,再到精细控制和自动化调整,全面解析了提升音频质量的实用技巧,适用于音乐制作、播客和内容创作。

weixin_30512089的博客 333

使用Android GPS api 实现一个轨迹记录的小功能

引入 市场上的跑步软件已经是非常多了,如咕咚和悦跑圈还有其他,很多大厂也在涉足这个方面。而最简单的运动跑步,最近几年也因简单,不限场地,运动效果出众备受大众喜欢。 我的这篇文章的内容很多也是从网上学习其他的博客内容,外加利用android自身的提供的api实现的,希望能对有这方面需求的朋友有所帮助。 介绍 先上两张图,界面比较丑,不过一些数据基本都有了,这个图片是临时要用截取的,所以轨迹线很短,之前

尝试着去了解代码 1万+

python实现一个简单的【图像中物体坐标】标注小工具

有时候需要对于数据集进行预处理,通过标注获取坐标信息,再进行后续的操作。使用python能够快速读取图片,并能够通过人工标注,记录一下每个点的横竖坐标,如下记录学习笔记。 参考链接:https://lcqbit11.blog.youkuaiyun.com/article/details/69951249 参考链接:https://blog.youkuaiyun.com/wuzuyu365/article/details/52523061?utm_medium=distribute.pc_relevant.none-task-b

简简单单 3516

S32K144之芯片锁死解锁——关闭debug端口

S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在...

weixin_41935674的博客 1万+

K-近邻算法

KNN(K-Nearest Neighbor)算法是机器学习算法中最基础、最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。KNN算法的核心思想是:在已知训练集数据及其标签的情况下,对于一个新输入的测试数据,算法会在训练集中找到与这个测试数据最相似的K个邻居,然后根据这K个邻居的类别来决定测试数据的类别。计算距离:计算测试数据与训练集中每个数据点之间的距离。选择邻居:按照距离大小对训练数据进行排序,选择距离最小的K个数据点作为邻居。投票决策。

m0_74043999的博客 1068

从报错到优化:一次Gauss JDBC参数限制排查实录(32767参数上限避坑指南)

本文详细记录了排查GaussDB JDBC驱动因绑定参数数量超过32767上限而抛出`PSQLException`(报错信息为`Tried to send an out-of-range integer as a 2-byte value`)的全过程。文章深入分析了该限制的底层协议原理,并提供了应用层分批查询、使用临时表以及优化业务逻辑等多种解决方案,旨在帮助开发者规避此参数上限陷阱,构建更稳健的数据访问层。

rgv23456789的博客 220

学Simulink--基础储能管理场景实例:基于Simulink的储能SOC均衡控制策略仿真

本文完成了基于 Simulink 的储能 SOC 均衡控制策略仿真,实现了:✅掌握并联系统 SOC 分化机理✅构建基于电流重分配的主动均衡架构✅验证均衡对系统可用容量的显著提升✅实现 SOC 偏差 < 2% 的高精度控制。

amy_mhd的博客 85

K 近邻算法(KNN)从入门到实战

KNN 是机器学习的 “Hello World” 算法,其核心在于 **“近邻即相似”** 的哲学思想。数据标准化:避免尺度影响。K 值调参:通过交叉验证选择最优值。距离度量:根据数据类型选择合适的距离公式。性能优化:处理大规模数据时使用近似算法。

yu1455256260的博客 1031

快速卷积结构FIR数字滤波器的设计与ARM平台实现

本文提出了一种基于快速卷积结构的FIR数字滤波器设计与实现方案。通过Matlab设计了满足特定指标的低通FIR滤波器,采用重叠-保存法和重叠-相加法两种快速卷积算法,将计算复杂度从O(N·M)降低到O(NlogN)。详细介绍了滤波器系数生成、性能验证流程,并提供了ARM平台C语言实现的关键技术,包括定点量化处理。实验结果表明,该方法能有效滤除混合信号中的高频干扰,保留目标1kHz正弦信号,验证了设计方案的有效性。

huanghm88的专栏 125

机器学习实战之分类篇 一 k-近邻算法(从电影分类到海伦约会)

k-近邻算法(kNN): 存在一个样本数据集合,也称作为训练样本集(trainSet),并且样本集中每个数据都存在标签(label),即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据(testSet)后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就...

qq_37172182的博客 1010

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

机器学习算法一——k-近邻算法(1)

机器学习算法一——k-近邻算法(1) 采用测量不同特征值之间的距离方法进行分类。 kNN工作原理:训练样本集中每个数据有一个一一对应的所属分类的标签。需要分类的新数据没有标签,将新数据的每个特征与样本集中数据对应的特征进行比较,然后将样本集中与其特征最相似(最近邻)的数据标签作为新数据的标签。 一般来说,我们选择样本集中前k个最相似的数据(通常k&amp;amp;lt;=20)中,出现次数最多的,作为新数据的分类...

Blog 310

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【亲测免费】 k-近邻算法实现鸢尾花分类

k-近邻算法实现鸢尾花分类 去发现同类优质开源项目:https://gitcode.com/ 项目简介 本项目使用k-近邻算法(KNN)对鸢尾花数据集进行分类。鸢尾花数据集是一个经典的机器学习数据集,包含150个样本,每个样本有4个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度,以及一个标签,表示鸢尾花的种类(Setosa、Versicolor、Virginica)。 算法原理 k-近邻算法是一种基...

gitblog_06514的博客 923

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

KNN邻近算法与python实践

k邻近算法(k-NearestNeighbor)又成为KNN,属于分类算法中的一种。KNN通过计算新数据与历史样本数据中不同类别数据点间的距离,从而对新数据进行分类。换句话说,就是通过新数据与最邻近的k个数据点,来对新数据进行分析和分类。环境:mac + python3.6.3(另外需要的第三方库请自行下载) python KNN算法原理demo代码如下:from numpy import * f

罗小辉的专栏 7340

01-k近邻算法

KNN - k 近邻算法(k-Nearest Neighbors) 先对 k 近邻算法里有个大概印象。 思想极度简单 应用数学知识少(近乎为零) 效果好(缺点?) 可以解释机器学习算法使用过程中的很多细节问题 更完整的刻画机器学习应用的流程 下面用一个肿瘤病人来举例说明 k 近邻算法。下图在一个二维空间中描述了肿瘤大小与时间的关系,红色表示良性肿瘤,蓝色表示恶性肿瘤。 上图描述了初始信息。如果又新来了一个病人,下图绿色的点表示,那么问题是我们怎么通过以上给出的信息判断这个病人是良性肿瘤还是恶性肿瘤?

qq_41033011的博客 344

python - 分类KNN

工作原理是:存在一个样本数据集合,也称作为训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一个数据与所属分类的对应关系。输入没有标签的新数据后,将新的数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是k-近邻算法中k的出处,通常k是不大于20的整数。最后,选择k个最相似数据中出现...

rojyang的博客 412
上一篇: Lua中使用协程
下一篇: Python处理数据—生成散点图
OneWord233
码龄9年 64粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值