Mnist数据集转存csv文件,csv文件图像可视化
程序员文章站
2022-06-23 10:54:01
MNIST数据集转换格式成csv文件本小宝也是因为需求,需要跨一下研究领域,因为之前都是处理的csv文件(即所研究对象提取的特征姨csv文件进行存储)没有怎么接触过处理图像数据,所以一接触起来有点不知所措。搜集了很多资料,发现都不适合我,最后我就转变了思路,那就把图像数据转成csv文件不就好了。接下来我将介绍一下我的操作流程。1.使用的公开MNIST数据集的样子,MNIST数据集的下载大家可以搜一下会有很多小宝贝们为大家提供下载 链接。下载后的MNIST数据集与解压之后的样子如下图所示:2.MNIS...
MNIST数据集转换格式成csv文件
本小宝也是因为需求,需要跨一下研究领域,因为之前都是处理的csv文件(即所研究对象提取的特征姨csv文件进行存储)没有怎么接触过处理图像数据,所以一接触起来有点不知所措。搜集了很多资料,发现都不适合我,最后我就转变了思路,那就把图像数据转成csv文件不就好了。接下来我将介绍一下我的操作流程。
1.使用的公开MNIST数据集的样子,MNIST数据集的下载大家可以搜一下会有很多小宝贝们为大家提供下载 链接。下载后的MNIST数据集与解压之后的样子如下图所示:
2.MNIST数据集转csv文件。大家下载到MNIST数据集并解压之后,我们就可以将MNIST数据集进行转换了,转换之后存在csv中的格式是什么样子的呢。由于MNIST数据集中每一个图像是28*28的,所以转换成csv就是由784数字构成的一串数字,存在csv文件的一行中,且一行中的最后一个数字为该图像的标签。实现转换的代码如下:
# -*- coding: utf-8 -*-
def convert(imgf, labelf, outf, n):
f = open(imgf, "rb")
o = open(outf, "w")
l = open(labelf, "rb")
f.read(16)
l.read(8)
images = []
for i in range(n):
image = [ord(l.read(1))]
for j in range(28 * 28):
image.append(ord(f.read(1)))
images.append(image)
for image in images:
o.write(",".join(str(pix) for pix in image) + "\n")
f.close()
o.close()
l.close()
convert("E:\\new_life_202009\MNIST\\train-images.idx3-ubyte", "E:\\new_life_202009\MNIST\\train-labels.idx1-ubyte",
"E:\\new_life_202009\MNIST\mnist_train.csv", 60000)
convert("E:\\new_life_202009\MNIST\\t10k-images.idx3-ubyte", "E:\\new_life_202009\MNIST\\t10k-labels.idx1-ubyte",
"E:\\new_life_202009\MNIST\mnist_test.csv", 10000)
print("Convert Finished!")
3.存为csv格式MNIST数据的可视化。小宝贝们的需求可能和我一样,不能只是把数据转换成csv就可以的,要是偶尔需要可视化一下结果,转成csv格式如何可视化呢?不用着急,本小宝已经为大家考虑到这个问题了,所以提供了解决代码,如下所示:
import numpy
import csv
from PIL import Image
import numpy as np
import random
import string
import os
def getdata(sourceFolder): #读取csv中的数据
data = []
feature = []
csv_file = csv.reader(open(sourceFolder))
for content in csv_file:
content = list(map(float, content))
if len(content) != 0:
data.append(content)
feature.append(content[0:748])
return feature
def generate_random_str(): #随机生成一个字符串,目的是为生成的图像命名
'''
string.digits = 0123456789
string.ascii_letters = 26个小写,26个大写
'''
str_list = random.sample(string.digits + string.ascii_letters, 20)
random_str = ''.join(str_list)
return random_str
if __name__ == '__main__':
datapath = r'E:\new_life_202009\mnist.csv'
saveimgpath = r'E:\new_life_202009\test'
feature= getdata(datapath)
print('feature:', feature)
for i in feature:
b = numpy.array(i).reshape(28,28) # reshape(列的长度,行的长度)
img = Image.fromarray(np.uint8(b))
imgname = generate_random_str()
#img.show()
img.save(os.path.join(saveimgpath, '%s.jpg' % imgname))
是不是很完美。
本文地址:https://blog.csdn.net/littlle_yan/article/details/108959899
上一篇: 并查集(1)
下一篇: 高压锅炖羊肉要多长时间