我想去做机器学习 接下来发一些机器学习实战的算法
kNN算法 K近邻 简单说就是找出最近的K个点然后找出他们的分类最多的就是本身
from numpy import * #导入包numpy import operator #运算符 def createDataSet(): #这个是生成一开始的点以及他们的类型 也可以叫做参照 group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]); labels=['A','A','B','B']; return group,labels; def classify(inX,dataSet,labels,k): #kNN 输入向量 数据集 数据集对应的类型 K个 dataSetSize=dataSet.shape[0]; #算出来有几个点 diffMat=tile(inX,(dataSetSize,1))-dataSet; #用输入的点填满 然后去减掉数据集对应的位子 sqDiffMat=diffMat**2; #平方 sqDistances=sqDiffMat.sum(axis=1); #把每一行加起来 distances=sqDistances**0.5; #对每一个结果开根号 sortedDisIndicies=distances.argsort(); #排序 返回他们的下标 classCount={}; #map存类型和数目 for i in range(k): voteIlabel=labels[sortedDisIndicies[i]]; classCount[voteIlabel]=classCount.get(voteIlabel,0)+1; #数目增加 sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True) #对数目排序 降序 return sortedClassCount[0][0]; #返回值
posted on 2018-03-06 20:52 HelloWorld!--By-MJY 阅读(115) 评论(0) 编辑 收藏 举报