KNN算法实现手写数字识别的三种方法源码


KNN算法使用MNIST数据集、0-1二值图集、自写的数字图片集,做手写数字识别的代码,文件夹分类明确。
资源截图
代码片段和文件信息
# -*- coding:utf-8 -*-
# -*- author:zzZ_CMing
# -*- 2017/12/23
# -*- python3.5

import numpy as np
from image import image2onebit as it
import sys
from tensorflow.examples.tutorials.mnist import input_data
import math
import datetime

#KNN算法主体:计算测试样本与每一个训练样本的距离
def get_index(train_datatest_data i):
#1、 np.argmin(np.sqrt(np.sum(np.square(test_data[i]-train_data)axis=1)))
#2、a数组存入:测试样本与每一个训练样本的距离
all_dist = np.sqrt(np.sum(np.square(test_data[i]-train_data)axis=1)).tolist()
return all_dist

#KNN算法主体:计算查找最近的K个训练集所对应的预测值
def get_number(all_dist):
all_number = []
min_index = 0
#print(‘距离列表:‘ all_dist)
for k in range(Nearest_Neighbor_number):
# 最小索引值 = 最小距离的下标编号
min_index = np.argmin(all_dist)
#依据最小索引值(最小距离的下标编号),映射查找到预测值
ss = np.argmax((train_label[min_index])).tolist()
print(‘第‘k+1‘次预测值:‘ss)
#将预测值改为字符串形式存入新元组bb中
all_number = all_number + list(str(ss))
#在距离数组中,将最小的距离值删去
min_number = min(all_dist)
xx = all_dist.index(min_number)
del all_dist[xx]
print(‘预测值总体结果:‘all_number)
return all_number

#KNN算法主体:在K个预测值中,求众数,找到分属最多的那一类,输出
def get_min_number(all_number):
c = []
#将string转化为int,传入新列表c
for i in range(len(all_number)):
c.append(int(all_number[i]))
#求众数
new_number = np.array(c)
counts = np.bincount(new_number)
return np.argmax(counts)


t1 = datetime.datetime.now()      #计时开始
print(‘说明:训练集数目取值范围在[060000]K取值最好<10
‘ )
train_sum = int(input(‘输入训练集数目:‘))
Nearest_Neighbor_number = int(input(‘选取最邻近的K个值,K=‘))

#依照文件名查找,读取训练与测试用的图片数据集
mnist = input_data.read_data_sets(“./MNIST_data“ one_hot=True)
#取出训练集数据、训练集标签
train_data train_label = mnist.train.next_batch(train_sum)

#调用自创模块内函数read_image():依照路径传入图片处理,将图片信息转换成numpy.array类型
x1_tmp = it.read_image(“png/nnnn.png“)
test_data = it.imageToArray(x1_tmp)
test_data = np.array(test_data)
#print(‘test_data‘test_data)
#调用自创模块内函数show_ndarray():用字符矩阵打印图片
it.show_ndarray(test_data)

#KNN算法主体
all_dist = get_index(train_datatest_data0)
all_number = get_number(all_dist)
min_number = get_min_number(all_number )
print(‘最后的预测值为:‘min_number)

t2=datetime.datetime.now()
print(‘耗 时 = ‘t2-t1)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-12 15:59  监督学习——KNN算法28x28+图片+KNN算法手写数字识别
     目录           0  2018-03-16 10:58  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的
     文件        2855  2018-03-16 10:58  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的28x28+图片+KNN算法手写数字识别.py
     目录           0  2018-03-15 16:57  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image
     文件           0  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image\__init__.py
     文件         163  2017-11-02 00:12  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image\__init__.pyc
     目录           0  2018-03-15 17:05  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image\__pycache__
     文件         159  2017-11-02 15:13  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image\__pycache__\__init__.cpython-34.pyc
     文件         170  2017-12-15 09:13  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image\__pycache__\__init__.cpython-35.pyc
     文件        1945  2017-11-19 23:47  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image\__pycache__image2onebit.cpython-34.pyc
     文件        1965  2018-03-15 17:05  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的image\__pycache__image2onebit.cpython-35.pyc
     文件         830  2018-03-15 16:57  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的imageimage2onebit.py
     文件        1868  2017-11-02 00:12  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的imageimage2onebit.pyc
     目录           0  2018-03-08 15:46  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的MNIST_data
     文件     1648877  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的MNIST_data 10k-images-idx3-ubyte.gz
     文件        4542  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的MNIST_data 10k-labels-idx1-ubyte.gz
     文件     9912422  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的MNIST_data rain-images-idx3-ubyte.gz
     文件       28881  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的MNIST_data rain-labels-idx1-ubyte.gz
     目录           0  2018-03-16 10:58  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png
     文件         977  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的pngps.png
     文件         954  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png1ps.png
     文件         222  2017-12-20 17:55  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png2ps.png
     文件         242  2017-12-20 17:53  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png3ps.png
     文件         991  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png4ps.png
     文件         237  2017-12-20 18:00  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png5ps.png
     文件        1000  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png6ps.png
     文件         226  2017-12-20 17:50  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png7ps.png
     文件        1005  2017-11-01 23:26  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png8ps.png
     文件         426  2018-03-09 11:22  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png9kk.png
     文件         994  2017-11-07 20:24  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的png9ps.png
     文件         297  2018-03-15 17:40  监督学习——KNN算法28x28+图片+KNN算法手写数字识别A+自己做的pngaaaa.png
............此处省略93737个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)