python k-近邻算法实例分享
来源:易贤网 阅读:1328 次 日期:2014-06-11 21:13:39
温馨提示:易贤网小编为您整理了“python k-近邻算法实例分享”,方便广大网友查阅!

这个算法主要工作是测量不同特征值之间的距离,有个这个距离,就可以进行分类了。简称kNN。

简单说明

这个算法主要工作是测量不同特征值之间的距离,有个这个距离,就可以进行分类了。

简称kNN。

已知:训练集,以及每个训练集的标签。

接下来:和训练集中的数据对比,计算最相似的k个距离。选择相似数据中最多的那个分类。作为新数据的分类。

python实例

代码如下:

#-*-coding:cp936-*-

#win系统中应用cp936编码,linux中最好还是utf-8比较好。

fromnumpyimport*#引入科学计算包

importoperator#经典python函数库。运算符模块。

#创建数据集

defcreateDataSet():

group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])

labels=['A','A','B','B']

returngroup,labels

#算法核心

#inX:用于分类的输入向量。即将对其进行分类。

#dataSet:训练样本集

#labels:标签向量

defclassfy0(inX,dataSet,labels,k):

#距离计算

dataSetSize=dataSet.shape[0]#得到数组的行数。即知道有几个训练数据

diffMat=tile(inX,(dataSetSize,1))-dataSet#tile:numpy中的函数。tile将原来的一个数组,扩充成了4个一样的数组。diffMat得到了目标与训练数值之间的差值。

sqDiffMat=diffMat**2#各个元素分别平方

sqDistances=sqDiffMat.sum(axis=1)#对应列相乘,即得到了每一个距离的平方

distances=sqDistances**0.5#开方,得到距离。

sortedDistIndicies=distances.argsort()#升序排列

#选择距离最小的k个点。

classCount={}

foriinrange(k):

voteIlabel=labels[sortedDistIndicies[i]]

classCount[voteIlabel]=classCount.get(voteIlabel,0)+1

#排序

sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)

returnsortedClassCount[0][0]

意外收获

把自己写的模块加入到python默认就有的搜索路径:在python/lib/-packages目录下建立一个xxx.pth的文件,写入自己写的模块所在的路径即可。

更多信息请查看IT技术专栏

更多信息请查看脚本栏目
易贤网手机网站地址:python k-近邻算法实例分享
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:易贤网
云南网警报警专用图标