KNN之手写数字识别

代码

  1. '''
  2. Created on Sep 16, 2010
  3. kNN: kNearest Neighbors
  4. Input:     inX: vector to compare to existing dataset (1xN)
  5.             dataSet: size m data set of known vectors (NxM)
  6.            labels: data set labels (1xM vector)
  7.             k: number of neighbors to use for comparison (should be an odd number)
  8.             
  9. Output:    the most popular class label
  10. @author: pbharrin
  11. '''
  12. from numpy import *
  13. import operator
  14. from os import listdir
  15. def classify0(inX, dataSet, labels, k):
  16.     dataSetSize = dataSet.shape[0]
  17.     diffMat = tile(inX, (dataSetSize,1)) - dataSet
  18.     sqDiffMat = diffMat**2
  19.     sqDistances = sqDiffMat.sum(axis=1)
  20.     distances = sqDistances**0.5
  21.     sortedDistIndicies = distances.argsort()     
  22.     classCount={}          
  23.     for i in range(k):
  24.         voteIlabel = labels[sortedDistIndicies[i]]
  25.         classCount[voteIlabel] =classCount.get(voteIlabel,0) + 1
  26.     sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
  27.     return sortedClassCount[0][0]
  28. def createDataSet()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值