资源简介
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\n‘ )
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+自己做的\image\image2onebit.py
文件 1868 2017-11-02 00:12 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\image2onebit.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\t10k-images-idx3-ubyte.gz
文件 4542 2017-11-01 23:26 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\t10k-labels-idx1-ubyte.gz
文件 9912422 2017-11-01 23:26 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\train-images-idx3-ubyte.gz
文件 28881 2017-11-01 23:26 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\train-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+自己做的\png\0ps.png
文件 954 2017-11-01 23:26 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\1ps.png
文件 222 2017-12-20 17:55 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\2ps.png
文件 242 2017-12-20 17:53 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\3ps.png
文件 991 2017-11-01 23:26 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\4ps.png
文件 237 2017-12-20 18:00 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\5ps.png
文件 1000 2017-11-01 23:26 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\6ps.png
文件 226 2017-12-20 17:50 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\7ps.png
文件 1005 2017-11-01 23:26 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\8ps.png
文件 426 2018-03-09 11:22 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\9kk.png
文件 994 2017-11-07 20:24 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\9ps.png
文件 297 2018-03-15 17:40 监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\aaaa.png
............此处省略93737个文件信息
评论
共有 条评论