k近邻算法识别手写数字Python实现
2016-05-10 21:49
956 查看
数据集:(参见python实战教程)
训练数据:trainingDigits 2000多个.txt文件
测试数据:testDigits 约900个.txt文件
均为32*32大小
test_handWritting.py:
knnOperator函数参见:http://blog.csdn.net/u013593585/article/details/51284537
主实现:
import test_handWritting
filepath = 'E:\\ZForWorks\\MLPython\\knn\\digits\\'
d = 32
handwritingClassTest(filepath,d)准确率:98.3%
训练数据:trainingDigits 2000多个.txt文件
测试数据:testDigits 约900个.txt文件
均为32*32大小
test_handWritting.py:
from numpy import * import os import knnOperator import pdb def img2vector(filename,d): #d=32 returnVector = zeros((1,d*d)) fr = open(filename) for i in range(d): linstr = fr.readline() for j in range(d): returnVector[0,i*d+j] = int(linstr[j]) return returnVector def handwritingClassTest(filepath,d): trainFilePath = filepath + 'trainingDigits\\' trainFileList = os.listdir(trainFilePath) nTrain = len(trainFileList) trainData = zeros((nTrain,d*d)) trainlabels = [] for i in range(nTrain): trainFilei = trainFileList[i] trainFileName = trainFilePath + trainFilei vector = img2vector(trainFileName,d) trainData[i,:] = vector trainFileClass = trainFilei.split('_')[0] trainlabels.append(trainFileClass) testFilePath = filepath + 'testDigits\\' testFileList = os.listdir(testFilePath) nTest = len(testFileList) k = 4 count = 0 for j in range(nTest): #pdb.set_trace() testFilej = testFileList[j] testFileName = testFilePath + testFilej testSample = img2vector(testFileName,d) test_label = knnOperator.knnOperator(testSample,trainData,trainlabels,k) truth_label = testFilej.split('_')[0] if (truth_label == test_label): count += 1 rate = float(count) / float(nTest) print rate
knnOperator函数参见:http://blog.csdn.net/u013593585/article/details/51284537
主实现:
import test_handWritting
filepath = 'E:\\ZForWorks\\MLPython\\knn\\digits\\'
d = 32
handwritingClassTest(filepath,d)准确率:98.3%
相关文章推荐
- 开发中常遇到的Python陷阱和注意点
- Python单例模式
- python删除安装的模块
- python删除安装的模块
- python删除安装的模块
- python with用法
- python的disutils创建分发包
- python的disutils创建分发包
- python的disutils创建分发包
- python random 生成随机数
- 关于python中将py文件转换成exe文件的问题(使用py2exe)
- 模块sys
- Python NumPy-快速处理数据
- python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典
- 感知哈希算法--python实现
- python 推导式
- 安装numpy
- python的编码问题2
- opencv-python 摄像头的简单应用
- Python读取、保存、查看.mat文件