eclipse.exe
python2.7
k-近邻算法的一般流程 1)收集数据:可以使用任何方法 2)准备数据:距离计算所需要的数值,最好是结构化的数据格式 3)分析数据:可以使用任何方法 4)训练数据:无 5)测试数据:计算错误率 6)使用数据:首先输入样本数据和结构化的输出结果,然后运行k-近邻算法判定输入数据分别属于哪个分类,最后应用对计算出的分类执行后续的处理
K-近邻算法的理解测试from numpy import *import operatorfrom os import listdir#准备的测试数据def creatData():gxroup=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])labels=['A','A','B','B']return group,labels#根据测试数据获得分类结果def classify0(inX,dataSet,labels,k):dataSetSize=dataSet.shape[0]diffMat=tile(inX,(dataSetSize,1))-dataSetsqDiffMat=diffMat**2sqDistances=sqDiffMat.sum(axis=1)distances=sqDistances**0.5print distancessortedDistIndices=distances.argsort()print sortedDistIndicesclassCount={}for i in range(k):voteIlabel=labels[sortedDistIndices[i]]classCount[voteIlabel]=classCount.get(voteIlabel,0)+1sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)return sortedClassCount[0][0]classify0 有四个参数 inX:用于分类的输入向量inX ,dataSet:样本数据集 ,labels:标签向量 ,k:选择最近的邻居数目需要使用一个公式来计算两个向量点的距离 见图
之后就可以直接输入测试数据,进行测试s=classify0([0,0], group, labels, 3)print 'Result', s结果为:B
需要提前 导入numpy模块,如果安装python2.7有最好,如果没有,需要自己下载