简单的说,K-近邻算法就是采用测量不同特征值之间的距离 *** 来进行分类。它的工作原理是:存在一个样本数据 *** ,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系,输入没有标签的新数据之后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取出样本集中特征最相似数据的分类标签。一般来说,我们只选择样本数据集中前k个最相似的数据,这就是K-近邻算法名称的由来。
提问:亲,你造K-近邻算法是属于监督学习还是无监督学习呢?
从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-近邻算法的具体思想如下:
(1)计算已知类别数据集中的点与当前点之间的距离
(2)按照距离递增次序排序
(3)选取与当前点距离最小的k个点
(4)确定前k个点所在类别的出现频率
(5)返回前k个点中出现频率更高的类别作为当前点的预测分类
Python语言实现K-近邻算法的代码如下:
运算结果如下:
输出结果是B:说明我们新的数据([0%2c0])是属于B类。
相信有很多朋友们对上面这个代码有很多不理解的地方,接下来,我重点讲解几个此函数的关键点,以方便读者们和我自己回顾一下这个算法代码。
classify函数的参数:
inX:用于分类的输入向量 dataSet:训练样本 *** labels:标签向量 k:K-近邻算法中的kshape:是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)原理以及代码实现差不多就这样了,接下来的任务就是更加熟悉它,争取达到裸敲的地步。
Google已经为Windows、Mac和Linux用户发布了Chrome 99.0.4844.84,以解决一个在外部被利用的高严重性零日漏洞。浏览器供应商在周五发布的安全公告中说:”Google已经得知CVE-2022-1096的一个漏洞存在于外部。” 99.0.4844.84版本已经在稳定的桌...
据熟悉此事的人士透露,以色列阻止乌克兰购买NSO集团开发的飞马(Pegasus)间谍软件,因为其担心俄罗斯官员会因此而感到愤怒。在《卫报》和《华盛顿邮报》的联合调查之后,这一启示为以色列跟俄罗斯的关系有时会破坏乌克兰的进攻能力提供了新的见解–并跟美国的优先事项相矛盾。 自俄罗斯于2月24日对乌克兰...
微软今天宣布,它将默认阻止5个Office应用程序中VBA宏脚本的执行,这是近年来影响最大的变化之一。从2022年4月初开始,Access、Excel、PowerPoint、Visio和Word用户将不能在他们从互联网上下载的不受信任的文件中启用宏脚本。 安全研究人员多年来一直要求作出这一改变,这将...
公民实验室(Citizen Lab)的研究人员说,巴林人权活动家的iPhone今年早些时候被强大间谍软件悄悄入侵,打败了苹果公司为抵御秘密入侵而设计的新安全保护措施。这位仍在巴林并要求不透露姓名的活动人士是巴林人权中心的成员,该中心是一个获奖的非营利性组织,在海湾国家促进人权。 位于多伦多大学的互联...
一个黑客组织利用Conti恶意软件集团泄露的勒索软件源代码创建了他们自己的勒索软件,然后用于对俄罗斯组织进行网络攻击。虽然经常听到勒索软件攻击公司并加密数据,但我们很少听到位于俄罗斯的黑客组织受到类似的攻击。这种缺乏攻击的情况是由于俄罗斯黑客普遍认为,如果他们不影响俄罗斯的利益,那么该国的执法部门将...
微软宣布旗下的 BUG 悬赏项目新增覆盖 3 个产品,分别为 Exchange, SharePoint 和 Skype for Business。和 BUG 悬赏项目中的其他产品一样,针对这 3 个产品的 BUG 悬赏金额从 500 美元起步,根据 BUG 的危险等级最高上限为 3 万美元。 微软解...