python 机器学习knn识别数字1

1.首先要做数字识别的第一步是要收集数据,我们先来看看著名的MNIST数据集
数据集下载网址:http://yann.lecun.com/exdb/mnist/
train-images-idx3-ubyte.gz: training set images (9912422 bytes)
train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)
目录如图
python 机器学习knn识别数字1_第1张图片

注意:

下载的数据不要解压

2、此数据集中,
训练样本:共60000个,其中55000个用于训练,另外5000个用于验证
测试样本:共10000个
3、数据集中像素值
a)使用python读取二进制文件方法读取mnist数据集,则读进来的图像像素值为0-255之间;标签是0-9的数值。
b)采用TensorFlow的封装的函数读取mnist,则读进来的图像像素值为0-1之间;标签是0-1值组成的大小为1*10的行向量。

mnist=input_data.read_data_sets('MNIST',one_hot=True)#读取数据

2.我们要解析MNIST的数据情况

import  numpy as np
import cv2
from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets('MINST',one_hot=True)
print(mnist.train.images[1])#输出的是第二张图片的一维数组,因为它的数据是28*28大小的,然后它把
#二维的图片像素点数组通过变化变成一维是数组.
aa=mnist.train.images[1]
bb=np.reshape(aa,(28,28))#然后通过reshape将一维数组变成28*28的二维数组
print(bb)
cc=cv2.resize(bb,(128,128))#变化尺寸,因为28*28太小了看不清,所以放大成128*128,这里只是为了显示
#训练数据还是得按照它的大小28*28来
cv2.imshow("img1",cc*255)#之所以乘255是因为它的数据都是归一化的,就是它的像素数组里的值都是除过
#255的,所以我们要想查看这张图就得乘回255

如图
输出结果如下:
python 机器学习knn识别数字1_第2张图片

你可能感兴趣的:(机器学习,knn,knn识别数字,knn算法)