步骤1:准备,使用python导入数据
创建kNN.py文件,代码如下:
注意格式!注意格式!注意格式!
#numpy为科学计算包
from numpy import *
#operator为运算符模块,提供排序操作的函数
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 classify0(inX,dataSet,labels,k):
dataSetSize=dataSet.shape[0]
diffMat=tile(inX, (dataSetSize,1))-dataSet
sqDiffMat=diffMat**2
sqDistances=sqDiffMat.sum(axis=1)
distances=sqDistances**0.5
sortedDistIndicies=distances.argsort()
classCount={}
for i in range(k):
voteIlabel=labels[sortedDistIndicies[i]]
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
sortedClassCount=sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)
return sortedClassCount[0][0]
导入kNN模块,并检验是否导入成功
>>> import kNN
>>> group,labels=kNN.createDataSet()
>>> group
array([[ 1. , 1.1],
[ 1. , 1. ],
[ 0. , 0. ],
[ 0. , 0.1]])
>>> labels
['A', 'A', 'B', 'B']
>>>
步骤2:实施kNN分类算法
即我们在kNN.py中编写的第二个函数classify0(),解析如下:
测试分类结果:
>>> kNN.classify0([0,0],group,labels,3)
'B'
>>> kNN.classify0([0,1],group,labels,3)
'B'