什么是K-最近邻算法?简单来说,K-近邻算法就是衡量不同特征值之间的距离来进行分类。它的工作原理是:有一个样本数据集,也叫训练样本集,样本集中的每一个数据都有一个标签,即我们知道样本集中每一个数据与其分类的对应关系。在输入无标签的新数据后,我们将新数据的每个特征与样本集中数据的相应特征进行比较,然后算法提取样本集中特征最相似的数据的分类标签。一般来说,我们只选取样本数据集中最相似的前K个数据,这就是K-最近邻算法名字的由来。
问题:亲爱的,你构建K-最近邻算法是监督学习还是非监督学习?
使用Python导入数据从K近邻算法的工作原理可以看出,要实现这种算法进行数据分类,手头需要样本数据,没有样本数据怎么建立分类函数?因此,我们的第一步是导入样本数据集。
设置一个名为kNN.py的模块,并编写代码:
来自numpy import *
进口经营者
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1])
labels = ['A ',' A ',' B ',' B']
返回组,标签
在代码中,我们需要导入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个点中出现频率最高的类别作为当前点的预测分类。
实现K-最近邻算法的Python语言代码如下:
计算结果如下:
输出是B:表示我们的新数据([0,0])属于B类。
代码详解相信有很多朋友不理解上面的代码。接下来,我将重点介绍这个函数的几个关键点,以便读者和我自己复习这个算法代码。
分类功能的参数:
inX:用于分类的输入向量dataSet:训练样本集合labels:标签向量k:K-近邻算法中的kShape:是array的一个属性,描述了多维数组的维度。
Tile(inX,(dataSetSize,1)):二维的数组inX,dataSetSize表示数组生成后的行数,1表示列数的倍数。这一整行代码表示的是前一个二维数组矩阵的每个元素减去后一个数组对应的元素值,从而实现了矩阵之间的减法。简单方便到不能不佩服!
Axis=1:当参数等于1时,表示矩阵中行之间的数字之和,当参数等于0时,表示列之间的数字之和。
Argsort():按非降序对数组进行排序。
ClassCount.get(numOflabel,0)+1:这行代码真好看。Get():这个方法是访问字典项的方法,也就是用下标键numOflabel访问项。如果没有此项,则初始值为0。然后在该项的值上加1。所以用Python实现这样的 *** 作只需要一行代码,真的简洁高效。
后话K近邻算法(KNN)的原理和代码实现几乎相同。接下来的任务就是多熟悉一下,尽量达到裸敲的地步。
郑重声明:本文版权归原作者所有。转载文章只是为了传播更多的信息。如作者信息标注有误,请第一时间联系我们修改或删除。谢谢你。
转载:感谢您对网站平台的认可,以及对我们原创作品和文章的青睐。非常欢迎大家分享到个人站长或朋友圈,但转载请注明文章来源“蝶芒网”。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)