首页 > 代码库 > KNN算法
KNN算法
代码如下:
#-*- coding :utf-8-*- from sklearn.neighbors import KNeighborsClassifier from numpy import * def createDataSet(): group = array([[1.0,0.9],[1.0,1.0],[0.1,0.2],[0.0,0.1]]) labels = [‘A‘,‘A‘,‘B‘,‘B‘] return group,labels #用欧氏距离算的距离的大小 def kNNClassify(newInput,dataset,labels,K): numSample = dataset.shape[0] #dataset的行数 diff = tile(newInput,(numSample,1)) - dataset ‘‘‘ 格式:tile(A,reps) * A:array_like * 输入的array * reps:array_like * A沿各个维度重复的次数 ‘‘‘ squarediff = diff ** 2 squaredis = sum(squarediff,axis = 1) #行之和 distance = squaredis ** 0.5 sortdistance = argsort(distance) classcount = {} for i in xrange(K): voteLable = labels[sortdistance[i]] classcount[voteLable] = classcount.get(voteLable,0) + 1 maxCount = 0 for key,values in classcount.items(): if values > maxCount: maxCount = values index = key return index
#取前k个出现频率最高的作为预测结果返回
实现一个小的KNN算法.
在kNNClassify()函数中
1 newInput表示的是输入的分类向量(1xN) 2 dataset表示输入的训练样本集(NxM) 3 labels表示标签向量 4 k表示选择最近邻居的数目
KNN算法的步骤:
1.计算测试数据与各个训练样本数据之间的距离,距离有两种计算方法,分别是欧式距离和曼哈顿距离
2.按照距离的递增关系进行排序
3.选取距离最近的前K个点
4.确定前K个点的所在类别的出现频率
5.返回前K个点中,出现频率最高的类别作为测试数据的预测类型
KNN算法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。