机器学习实战:kNN(k-近邻算法)
一、算法介绍
- 监督学习算法
- 分类算法
- 查找与已有数据中最接近的k个类别,分类为出现类别最大概率的类别
二、一般流程:
三、代码实现:
python3中已经废弃iteritems()函数,使用会报错:
关键代码如下:
def classify0(inX,dataSet,labels,k):
dataSetSize = dataSet.shape[0]
print('dataSetSize:')
print(dataSetSize)
diffMat=tile(inX,(dataSetSize,1))-dataSet
print('diffMat:')
print(diffMat)
sqDiffMat=diffMat**2
print('sqDiffMat:')
print(sqDiffMat)
sqDistances=sqDiffMat.sum(axis=1)
print('sqDistances:')
print(sqDistances)
distances=sqDistances**0.5
print('distances:')
print(distances)
sortedDistIndicies=distances.argsort()
print('sortedDistIndicies:')
print(sortedDistIndicies)
classCount={}
for i in range(k):
voteIlabel=labels[sortedDistIndicies[i]]
classCount[voteIlabel]=classCount.get(voteIlabel,0)+1
print('classCount:')
print(classCount)
sortedClassCount=sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
print('sortedClassCount:')
print(sortedClassCount)
return sortedClassCount[0][0]
使用Anaconda Navigator集成的JupyterLab软件运行:
传入参数,请求结果为:
详细问题可参考:
1.Python3字典中items()和python2.x中iteritems()有什么区别
2. Python 字典(Dictionary) get()方法