machinelearninginaction机器学习——第二章k-近邻算法代码详解(代码片段)

lee&jim lee&jim     2022-12-22     761

关键词:

一、近邻算法的定义与作用也就是意义

k-近邻算法,近邻算法近邻算法顾名思义,找到最近的点然后进行归纳,距离哪些点最近这个点就属于那个类。这和线性回归算法有异曲同工之妙,但是我感觉还是一元线性回归算法更加精准。(有兴趣的小伙伴可以参阅《西瓜书》与《南瓜书》),当然就方便来说,可能k-近邻算法更加方便并且容易理解。

一般的,k-近邻算法可以应用的范围特别广,因为他本身就是一个分类问题。在书中介绍的就是有电影分类、择偶、识别手写数字。

二、近邻算法的代码详解

1、实施分类算法

def classify0(inX, dataSet, labels, k):
    dataSetSize = dataSet.shape[0]  # 代表的是dataSet数据集中的行数
    diffMat = tile(inX,(dataSetSize, 1)) - dataSet  # 计算未知类的数据集与已知数据集的差
    sqDiffMat = diffMat**2  # 差值平方化
    sqDistances = sqDiffMat.sum(axis=1)  # 把(未平方根化之前的)未知数据集与两个已知数据的距离分别计算出来
    distances = sqDistances**0.5  # 距离平方根化
    sortedDistIndicies = distances.argsort()  # 排序,返回下标
    classCount =   # 建立一个新的字典以便于之后将数据归纳其中
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]  # 遍历排序后的前 k 个标签
        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 # 记录这 k 个标签出现的次数
    sortedClassCount = sorted(classCount.items(),  key=operator.itemgetter(1), reverse=True)  # 按照出现次数对标签进行从大到小排序
    return sortedClassCount[0][0]  # 返回出现次数最多的那个标签

参数含义 

inX代表的是所需要分类的对象,也就是用于分类的输入向量

dataSet代表的是inX要被分类出来的依据对象,是依据dataSet这个数据组才把inX分为那些类,也就是书上的输入的训练样本集

labels也就是dataSet所对应的标签,比如说爱情片、恐怖片这种,用于将最多的标签复制给inX的标签,最后作为一个返回值。

k代表所抽取的前几个元素,进行分类之后会将标签与数据集依次排序排序之后的前k个元素中哪个标签所占数目比较多,就将inX分为这个标签。

到这里kNN的大概意思应该就解释清楚了(书中后面列举的是具体的实例),下面看具体的函数作用。

函数解析

shape:在这里用shape[0]来读取这个dataSet数据集的行数

tile:在这里用tile是将inX汇聚成dataSize行一列的数据集,因为矩阵的运算规律需要我们这么做。

sum:sum(axis=1)其中axis=1的意思是,将每一行的元素加起来,然后再进行接下来的开方。

argsort:就是分类函数了,对distance进行排序

sorted:对于classCount.items()进行排序,排序依据是operater(也就是classCount.item)的第二个元素,也就是上面循环中求出的每个标签的数字。从大到小进行排序。

难点解析

    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]  # 遍历排序后的前 k 个标签
        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1 # 记录这 k 个标签出现的次数

在这个循环之中,有一个问题,labels如何和以及分类排序之后的数据集找到一一对应的关系。所以上面使用了一个argsort函数

函数的具体效果如上图,这样根据大小排列之后,dataSet的标签依旧不会改变。也就解决了上述问题。

三、总结

以上就是kNN分类算法的大体解析,实例介绍我们放在之后的讲解中。

上面都是我学习之中遇到的一些困难以及疑惑,如果小伙伴们还有其他的问题也欢迎私信我进行交流。

代码出处出自于机器学习实战这本书中,其中对于python3.X与python2.X的不同进行了一些调整,例如:

python2与3的变动
python2python3
print “”print("")
iteritems()items()

 

机器学习实战[machinelearninginaction]

内容简介  机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存、谋发展的决定性手段,这使得这一过去为分析师和数学家所专... 查看详情

machinelearninginaction-chapter2-k近邻算法

一.numpy()函数  1.shape[]读取矩阵的长度  例:importnumpyasnpx=np.array([[1,2],[2,3],[3,4]])printx.shape//输出行列数(3,2)printx.shape[0]//输出行数3printx.shape[1]//输出列数22.tile()函数形式为tile(A,reps)reps的数字从 查看详情

机器学习很枯燥,不想继续学了怎么办?或许,这些建议值得一看

...阅读过去一个月时间里,我主要在看《机器学习实战》(MachineLearninginAction)这本书,作者为PeterHarring 查看详情

数据分析挖掘方面推荐的好书

...法,浅显易懂,还有可执行的Python代码。难易程度:中。MachineLearninginAction(豆瓣) 用人话把复杂难懂的机器学习算法解释清楚了,其中有零星的数学公式,但是是以解释清楚为目的的。而且有Python代码,大赞!目前 查看详情

有哪些数据分析、数据挖掘的书推荐下

...,浅显易懂,还有可执行的Python代码。难易程度:中。5.MachineLearninginAction(豆瓣)用人话把复杂难懂的机器学习算法解释清楚了,其中有零星的数学公式,但是是以解释清楚为目的的。而且有Python代码,大赞!目前中科院的王斌老... 查看详情

朴素贝叶斯-numpy-对数似然

《MachineLearninginAction》为防止连续乘法时每个乘数过小,而导致的下溢出(太多很小的数相乘结果为0,或者不能正确分类) 训练:deftrainNB0(trainMatrix,trainCategory):numTrainDocs=len(trainMatrix)numWords=len(trainMatrix[0])pAbusive=sum(trainCategor 查看详情

机器人的功能都有哪些

机器人的功能有哪些诞生于科幻小说之中一样,人们对机器人充满了幻想。也许正是由于机器人定义的模糊,才给了人们充分的想象和创造空间。操作型机器人:能自动控制,可重复编程,多功能,有几个自由度,可固定或运动... 查看详情

《机器学习实战》-机器学习基础(代码片段)

目录机器学习基础什么是机器学习机器学习应用场景海量数据机器学习的重要性机器学习的基本术语监督学习和非监督学习监督学习:supervisedlearning非监督学习:unsupervisedlearning机器学习工具介绍Python非PythonNumPy函数库基础测试Nu... 查看详情

工业机器人(11)-串联机器人并联机器人和混联机器人

机器人从机构学的角度可以分为串联机器人和并联机器人两大类。串联机器人以开环机构为机器人机构原型;并联机器人为有一个或几个闭环组成的关节点坐标相互关联的机器人。  串联机器人串联机器人是一种开式运动链... 查看详情

工业机器人(11)-串联机器人并联机器人和混联机器人

机器人从机构学的角度可以分为串联机器人和并联机器人两大类。串联机器人以开环机构为机器人机构原型;并联机器人为有一个或几个闭环组成的关节点坐标相互关联的机器人。  串联机器人串联机器人是一种开式运动链... 查看详情

机器学习机器学习的经典算法

【机器学习】机器学习的经典算法 https://mp.weixin.qq.com/s/CxSG9l_dxA4G-SZKOGI1ng  本文为整篇文章第二部分,整篇文章主要目录如下: 1:一个故事说明什么是机器学习2:机器学习的定义3:机器学习的经典算法4:机器学... 查看详情

一文读懂什么是机器学习--1.机器学习是什么?

一文读懂什么是机器学习--1.机器学习是什么?  一文读懂什么是机器学习--1.机器学习是什么?一文读懂什么是机器学习--2.机器学习的范围?一文读懂什么是机器学习--3.机器学习的方法?一文读懂什么是机器学习--4.机器学习的... 查看详情

[noi2002]m号机器人

3030年,Macsy正在火星部署一批机器人。第1秒,他把机器人1号运到了火星,机器人1号可以制造其他的机器人。第2秒,机器人1号造出了第一个机器人——机器人2号。第3秒,机器人1号造出了另一个机器人——机器人3... 查看详情

机器学习:azure机器学习模型搭建实验

文章目录Azure机器学习模型搭建实验前言Azure平台简介Azure机器学习实验Azure机器学习模型搭建实验前言了解Azure机器学习平台,知道机器学习流程。Azure平台简介AzureMachineLearning(简称“AML”)是微软在其公有云Azure上... 查看详情

通过机器域名查看机器ip

使用ping命令去ping这个机器的域名就可以找到对应的ip地址。例如 查看详情

通过机器域名查看机器ip

使用ping命令去ping这个机器的域名就可以找到对应的ip地址。例如 查看详情

机器学习入门

目录​​1机器学习概述​​​​2机器学习过程​​​​2.1机器学习与人类学习​​​​3机器学习的分类​​​​3.1无监督学习​​​​3.2监督学习​​​​3.3深度学习​​​​3.4强化学习​​​​4机器学习应用​​1机器学习... 查看详情

机器学习第一篇初识机器学习

一、什么是机器学习?对于机器学习,没有一个明确的定义。从广义上来说,机器学习是一种能够赋予机器学习的能力以此让它完成直接编程无法完成的功能的方法。但从实践的意义上来说,机器学习是一种通过利用数据,训练... 查看详情