• 大小: 2.07MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-09
  • 语言: 其他
  • 标签: 机器学习  

资源简介

整合了KNN算法与Tensorflow对手写识别系统的实现代码,以及训练与测试数据集

资源截图

代码片段和文件信息

‘‘‘
Created on Sep 16 2010
kNN: k Nearest Neighbors

Input:      inX: vector to compare to existing dataset (1xN)
            dataSet: size m data set of known vectors (NxM)
            labels: data set labels (1xM vector)
            k: number of neighbors to use for comparison (should be an odd number)
            
Output:     the most popular class label

@author: pbharrin
‘‘‘
from numpy import *
import operator
from os import listdir


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

def createDataSet():
    group = array([[1.01.1][1.01.0][00][00.1]])
    labels = [‘A‘‘A‘‘B‘‘B‘]
    return group labels

def file2matrix(filename):
    love_dictionary={‘largeDoses‘:3 ‘smallDoses‘:2 ‘didntLike‘:1}
    fr = open(filename)
    arrayOLines = fr.readlines()
    numberOfLines = len(arrayOLines)            #get the number of lines in the file
    returnMat = zeros((numberOfLines3))        #prepare matrix to return
    classLabelVector = []                       #prepare labels return   
    index = 0
    for line in arrayOLines:
        line = line.strip()
        listFromLine = line.split(‘\t‘)
        returnMat[index:] = listFromLine[0:3]
        if(listFromLine[-1].isdigit()):
            classLabelVector.append(int(listFromLine[-1]))
        else:
            classLabelVector.append(love_dictionary.get(listFromLine[-1]))
        index += 1
    return returnMatclassLabelVector

    
def autoNorm(dataSet):
    minVals = dataSet.min(0)
    maxVals = dataSet.max(0)
    ranges = maxVals - minVals
    normDataSet = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - tile(minVals (m1))
    normDataSet = normDataSet/tile(ranges (m1))   #element wise divide
    return normDataSet ranges minVals
   
def datingClassTest():
    hoRatio = 0.50      #hold out 10%
    datingDataMatdatingLabels = file2matrix(‘datingTestSet2.txt‘)       #load data setfrom file
    normMat ranges minVals = autoNorm(datingDataMat)
    m = normMat.shape[0]
    numTestVecs = int(m*hoRatio)
    errorCount = 0.0
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i:]normMat[numTestVecs:m:]datingLabels[numTestVecs:m]3)
        print “the classifier came back with: %d the real answer is: %d“ % (classifierResult datingLabels[i])
        if (classifierResult != datingLabels[i]): errorCount += 1.0
    print “the total 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2017-12-11 16:35  Ch02\
     文件      300040  2017-12-11 15:34  Ch02\testY
     文件    30110934  2017-12-11 15:34  Ch02\testX
     文件      613237  2017-12-11 15:34  Ch02\trainY
     文件    61541556  2017-12-11 15:34  Ch02\trainX
     文件        5353  2017-11-26 11:10  Ch02\kNN.pyc
     文件        5350  2017-11-26 09:46  Ch02\kNN.py
     文件      739988  2017-09-18 14:58  Ch02\digits.zip
     文件       27067  2017-09-18 14:58  Ch02\datingTestSet2.txt
     文件       35725  2017-09-18 14:58  Ch02\datingTestSet.txt
     文件         242  2017-09-18 14:58  Ch02\README.txt
     文件        3937  2017-12-11 16:35  Ch02\tensorForDigits.py
     目录           0  2011-05-04 08:38  Ch02\trainingDigits\
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_139.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_136.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_135.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_133.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_132.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_129.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_128.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_127.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_126.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_124.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_122.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_120.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_12.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_118.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_116.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_114.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_111.txt
     文件        1088  2010-10-06 11:32  Ch02\trainingDigits\1_108.txt
............此处省略2875个文件信息

评论

共有 条评论