标签:大小 标签 方法 utf-8 重复 get items like import
代码如下:
#-*- 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个点中,出现频率最高的类别作为测试数据的预测类型
标签:大小 标签 方法 utf-8 重复 get items like import
原文地址:http://www.cnblogs.com/chenyang920/p/7359468.html