除了一些有标准格式(如csv)的数据集是可以直接通过python或numpy、pandas模块读取外,也有很多数据集是无法直接读取的,因为这些文件不是任何标准的格式而是以字节的形式进行存储的,必须编写程序来打开它。
例如:MNIST数据集是机器学习领域中非常经典的一个数据集,由60000个训练样本和10000个测试样本组成,每个样本都是一张28 * 28像素的灰度手写数字图片。
如果还没有从网上下载到本地的数据集,可以使用TensorFlow中的input_data方法下载数据再提取数据,这种方式不用事先下载好数据集,它会自动下载并存放到指定的本地位置。
from tensorflow.examples.tutorials.mnist import imput_data #导入tensorflow库
导入数据集到mnist实例会自动下载数据
mnist = input_data.read_data_sets('mnist_data') #mnist_data是指定存放数据的本地文件夹路径,在文件夹中有下载的扩展名(后缀名)是gz的数据集
读取数据需要根据实例内的变量结构(mnist -> mnist.train(或mnist.test) -> mnist.train.images和mnist.train.labels(或mnist.test.images和mnist.test.labels))来获取数据集
x_train = mnist.train.images
y_train = minist.train.labels
查看mnist实例类型 type(mnist) 得到的mnist实例的类型是<class 'tensorflow.contrib.learn.python.learn.datasets.base.Datasets'> 查看mnist数据集类型 type(mnist.train) 得到的mnist实例中数据集的类型是<class 'tensorflow.contrib.learn.python.learn.datasets.mnist.DataSet'> type(mnist.train.images) 得到的mnist实例中数据的类型是<class 'numpy.ndarray'>
如果已经从网上下载到本地的数据集扩展名(后缀名)是npz压缩包,可以使用numpy中的load方法解压再提取数据:
import numpy as np #导入numpy库
加载数据集压缩包需要用到numpy的load方法
MNIST = np.load('MNIST.npz') #加载数据集压缩包到MNIST实例
数据集在压缩包内,使用files命令进行查看压缩包内容
MNIST.files #实例查看压缩包内的文件(类似解压)
可看到压缩包内的数据集结构
['x_test', 'x_train', 'y_train', 'y_test']
可通过实例的关键字索引读取对应的数据集
x_train = MNIST['x_train']
y_train = MNIST['y_train']
查看MNIST实例类型 type(MNIST) 得到MNIST实例的类型是<class 'numpy.lib.npyio.NpzFile'> 查看x_train数据类型 type(mnist['x_train']) 得到MNIST实例中数据的类型是<class 'numpy.ndarray'>
|