KNN算法
Posted Elaine
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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算法的主要内容,如果未能解决你的问题,请参考以下文章