当前位置:首页 > 网络黑客 > 正文内容

k近邻算法的原理(knn算法例题经典)

访客3年前 (2022-01-26)网络黑客562

什么是K-近邻算法?

简单的说,K-近邻算法就是采用测量不同特征值之间的距离 *** 来进行分类。它的工作原理是:存在一个样本数据 *** ,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的新数据之后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取出样本集中特征最相似数据的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是K-近邻算法名称的由来。

提问:亲,你造K-近邻算法是属于监督学习还是无监督学习呢?

使用Python导入数据

从K-近邻算法的工作原理中我们可以看出,要想实施这个算法来进行数据分类,我们手头上得需要样本数据,没有样本数据怎么建立分类函数呢。所以,我们之一步就是导入样本数据 *** 。

建立名为kNN.py的模块,写入代码:

from numpy import *

import operator

def createDataSet:

group = array([[1.0%2c1.1]%2c[1.0%2c1.0]%2c[0%2c0]%2c[0%2c0.1]])

labels = [‘A’%2c’A’%2c’B’%2c’B’]

return group%2c labels

代码中,我们需要导入Python的两个模块:科学计算包NumPy和运算符模块。NumPy函数库是Python开发环境的一个独立模块,大多数Python版本里没有默认安装NumPy函数库,因此这里我们需要单独安装这个模块。大家可以从sourceforge上下载安装。

有很多的版本,这里我选择的是
numpy-1.7.0-win32-superpack-python2.7.exe。

实现K-近邻算法

K-近邻算法的具体思想如下:

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

(2)按照距离递增次序排序

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

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

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

Python语言实现K-近邻算法的代码如下:

运算结果如下:

输出结果是B:说明我们新的数据([0%2c0])是属于B类。

代码详解

相信有很多朋友们对上面这个代码有很多不理解的地方,接下来,我重点讲解几个此函数的关键点,以方便读者们和我自己回顾一下这个算法代码。

classify函数的参数:

inX:用于分类的输入向量 dataSet:训练样本 *** labels:标签向量 k:K-近邻算法中的k

shape:是array的属性,描述一个多维数组的维度。

tile(inX%2c (dataSetSize%2c1)):把inX二维数组化,dataSetSize表示生成数组后的行数,1表示列的倍数。整个这一行代码表示前一个二维数组矩阵的每一个元素减去后一个数组对应的元素值,这样就实现了矩阵之间的减法,简单方便得不让你佩服不行!

axis=1:参数等于1的时候,表示矩阵中行之间的数的求和,等于0的时候表示列之间数的求和。

argsort:对一个数组进行非降序排序

classCount.get(numOflabel%2c0) + 1:这一行代码不得不说的确很精美啊。get:该 *** 是访问字典项的 *** ,即访问下标键为numOflabel的项,如果没有这一项,那么初始值为0。然后把这一项的值加1。所以Python中实现这样的操作就只需要一行代码,实在是很简洁高效。

后话

K-近邻算法(KNN)原理以及代码实现差不多就这样了,接下来的任务就是更加熟悉它,争取达到裸敲的地步。

扫描二维码推送至手机访问。

版权声明:本文由黑客技术发布,如需转载请注明出处。

本文链接:http://w-123.com/90706.html

标签: 网站随笔

“k近邻算法的原理(knn算法例题经典)” 的相关文章

Cloudflare 成功阻止针对其客户最大规模的 HTTPS DDoS 攻击

Cloudflare 透露公司已经阻止了来自多个国家的大规模 HTTPS DDoS 攻击。该公司表示,该僵尸网络每秒发出 1530 万个请求(rps),使其成为针对其客户的最大 HTTPS DDoS 攻击。 Cloudflare 表示本次攻击的目标是针对一家 The Crypto Launchp...

Google 发布第 3 个紧急更新 修复 Chrome 中另一个零日漏洞

Google 今天发布了第 3 个紧急更新,修复了存在于 Chrome 浏览器中的另一个零日漏洞。周四,Google 面向 macOS、Windows 和 Linux 发布了 Chrome 100.0.4898.127 更新,会在未来几天内完成部署。 本次更新修复了追踪为 CVE-2022-1364...

黑客组织 Lapsus$ 发起投票:根据结果公开公司数据

在攻破 NVIDIA 之后,嚣张的黑客组织 Lapsus$ 近日在 Telegram 上发出投票帖,通过投票结果来决定接下来公开哪家公司的数据。在投票选项中包括运营商 Vodafone 的源代码、Impresa 的源代码和数据库、MercadoLibre 和 MercadoPago 的数据库。投票...

泄露的 Facebook 工程师文件承认违法使用用户数据 或将面临全球收入 4% 的罚款

Facebook正面临一场世界各地隐私法规“海啸”,这将迫使该公司大幅改变处理用户个人数据的方式。根据外媒获得的一份从Facebook泄露的文件,Facebook这场“劫难”的根源在于,他们自己都搞不清楚用户数据的用途和去向。 这份泄露的文件是由Facebook广告和商业产品团队的隐私工程师去...

BlackMatter 团伙窃取1tb数据,勒索新合作社590万美元

BlackMatter勒索软件团伙袭击了爱荷华州的一家农业企业“新合作社”,并要求590万美元的赎金。 周一,几名安全研究人员最先关注了对这次黑客攻击事件,该公司也坦诚自己遭到了网络攻击,并相应地关闭了自己的系统。这是继5月份REvil团伙对JBS发起勒索软件攻击之后,对农业行业的又一次重大打击。研...

一项调查发现大多数人仍然在多个网站上重复使用密码

一项新的调查显示,70%成年人仍在使用同一个密码做一件以上事情。在对1041名18岁或以上美国居民的调查中,PCMag发现,25%的人承认有时会重复使用同一个密码,24%的人说他们大部分时间都这样做,而21%的人承认一直这样做。 重复使用密码是黑客喜欢的事情,尤其是许多网站和服务使用电子邮件地址作为...

评论列表

辞眸婉绾
2年前 (2022-07-04)

import *import operatordef createDataSet:group = array([[1.0%2c1.1]%2c[1.0%2c1.0]%2c[0%2c0]%2c[0%2c0.1]])labels = [‘A’%2c’A’

青迟未芩
2年前 (2022-07-04)

关键点,以方便读者们和我自己回顾一下这个算法代码。classify函数的参数:inX:用于分类的输入向量 dataSet:训练样本集合 labels:标签向量 k:K-近邻算法中的kshape:是array的属

孤鱼野の
2年前 (2022-07-04)

两个模块:科学计算包NumPy和运算符模块。NumPy函数库是Python开发环境的一个独立模块,大多数Python版本里没有默认安装NumPy函数库,因此这里我们需要单独安装这个模块。大家可以从sourceforge上下载安装。有很多的版本,这里我选择的是numpy-1.

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。