• 大小: 34KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Python
  • 标签: KNN  

资源简介

kNN(python实现)http://blog.csdn.net/u011067360/article/details/45937327

资源截图

代码片段和文件信息

#-*-coding:utf-8-*-
from numpy import *
import operator
from os import listdir

def classify0(inX dataSet labels k):
    dataSetSize = dataSet.shape[0]
    #tile(A(mn))   
    #print dataSet
    #print “----------------“
    #print tile(inX (dataSetSize1))
    #print “----------------“
    diffMat = tile(inX (dataSetSize1)) - dataSet      
    #print diffMat
    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(voteIlabel0) + 1
    sortedClassCount = sorted(classCount.iteritems() key=operator.itemgetter(1) reverse=True)
    return sortedClassCount[0][0]

def img2vector(filename):
    returnVect = zeros((11024))
    fr = open(filename)
    for i in range(32):
        lineStr = fr.readline()
        for j in range(32):
            returnVect[032*i+j] = int(lineStr[j])
    return returnVect

def handwritingClassTest():

    hwLabels = []
    trainingFileList = listdir(‘trainingDigits‘)  
    print trainingFileList        
    m = len(trainingFileList)
    trainingMat = zeros((m1024))
    for i in range(m):
        fileNameStr = trainingFileList[i]          
        fileStr = fileNameStr.split(‘.‘)[0]
        classNumStr = int(fileStr.split(‘_‘)[0]) 
        hwLabels.append(classNumStr)
        #print hwLabels
        #print fileNameStr   
        trainingMat[i:] = img2vector(‘trainingDigits/%s‘ % fileNameStr)
        #print trainingMat[i:] 
        #print len(trainingMat[i:])
     
    testFileList = listdir(‘testDigits‘)       
    errorCount = 0.0
    mTest = len(testFileList)
    for i in range(mTest):
        fileNameStr = testFileList[i]
        fileStr = fileNameStr.split(‘.‘)[0]     
        classNumStr = int(fileStr.split(‘_‘)[0])
        vectorUnderTest = img2vector(‘testDigits/%s‘ % fileNameStr)
        classifierResult = classify0(vectorUnderTest trainingMat hwLabels 3)
        print “the classifier came back with: %d the real answer is: %d“ % (classifierResult classNumStr)
        if (classifierResult != classNumStr): errorCount += 1.0
    print “\nthe total number of errors is: %d“ % errorCount
    print “\nthe total error rate is: %f“ % (errorCount/float(mTest))
    
handwritingClassTest()    

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        2464  2015-05-23 21:28  kNN.py
     文件        1056  2015-05-10 16:26  testDigits\0_1.txt
     文件        1056  2015-05-10 16:26  testDigits\0_2.txt
     文件        1056  2015-05-10 16:26  testDigits\0_3.txt
     文件        1056  2015-05-10 16:26  testDigits\0_4.txt
     文件        1056  2015-05-10 16:26  testDigits\0_5.txt
     文件        1056  2015-05-10 16:26  testDigits\1_1.txt
     文件        1056  2015-05-10 16:26  testDigits\1_2.txt
     文件        1056  2015-05-10 16:26  testDigits\1_3.txt
     文件        1056  2015-05-10 16:26  testDigits\1_4.txt
     文件        1056  2015-05-10 16:26  testDigits\1_5.txt
     文件        1056  2015-05-10 16:26  testDigits\2_1.txt
     文件        1056  2015-05-10 16:26  testDigits\2_2.txt
     文件        1056  2015-05-10 16:26  testDigits\2_3.txt
     文件        1056  2015-05-10 16:26  testDigits\2_4.txt
     文件        1056  2015-05-10 16:26  testDigits\2_5.txt
     文件        1056  2015-05-10 16:26  testDigits\3_1.txt
     文件        1056  2015-05-10 16:26  testDigits\3_2.txt
     文件        1056  2015-05-10 16:26  testDigits\3_3.txt
     文件        1056  2015-05-10 16:26  testDigits\3_4.txt
     文件        1056  2015-05-10 16:26  testDigits\3_5.txt
     文件        1056  2015-05-10 16:26  testDigits\4_1.txt
     文件        1056  2015-05-10 16:26  testDigits\4_2.txt
     文件        1056  2015-05-10 16:26  testDigits\4_3.txt
     文件        1056  2015-05-10 16:26  testDigits\4_4.txt
     文件        1056  2015-05-10 16:26  testDigits\4_5.txt
     文件        1056  2015-05-10 16:26  testDigits\5_1.txt
     文件        1056  2015-05-10 16:26  testDigits\5_2.txt
     文件        1056  2015-05-10 16:26  testDigits\5_3.txt
     文件        1056  2015-05-10 16:26  testDigits\5_4.txt
     文件        1056  2015-05-10 16:26  testDigits\5_5.txt
............此处省略120个文件信息

评论

共有 条评论