• python 读写数据


    开源标准数据集 —— mnist(手写字符识别)

    下载地址:mnist.pkl.gz

    1. 使用 python 读取和解析 mnist.pkl.gz

    import pickle
    import gzip
    from PIL import Image
    
    def load_data():
        with gzip.open('./mnist.pkl.gz') as fp:
            training_data, valid_data, test_data = pickle.load(fp)
        return training_data, valid_data, test_data
    
    training_data, valid_data, test_data = load_data()
    print len(training_data[0])
    print len(valid_data[0])
    print len(test_data[0])
    print len(training_data[0][0])
    
    I = training_data[0][0]
    I.resize((28, 28))
    im = Image.fromarray((I*256).astype('uint8'))
    im.show()
    im.save('5.png')
    

    可以看出,mnist.pkl.gz 分为训练集,校验集和测试集;

    使用 PIL 中的图像相关 api,我们可对其中的图像显示出来并保存;

    2. Python中的单行、多行、中文注释

    在大量的数据处理或者计算机视觉的文献和著作中,我们常见如下的数据集可视化(甚至对参数也可进行可视化,毕竟图像的本质是二维数组),通过文章末尾的代 码我们发现只需对布局及间距的慎重设置,便可对大量丰富的图像以”地板贴砖(tiles on a floor)”的形式进行组织,也即可视化,展示数据或相关工作,可以起到十分直观的效果,下图即是对深度神经网络的权值矩阵进行的贴砖可视化:

    def normalize(darr, eps=1e-8):
        # normalize(x) = (x-min)/(max-min)
        darr -= darr.min()
        darr *= 1./(darr.max()+eps)
        return darr
    
    def tile_raster_images(X, image_shape, tile_shape, 
                tile_spacing=(0, 0), normalize_rows=True, output_pixel_vals=True):
                # image_shape:每一个砖的高和宽,
                # tile_shape:在横纵两个方向上分别有多少砖
                # tile_spacing:砖与砖之间的距离
                # normalize_rows:是否对砖进行归一化
                # output_pixel_vals:是否对砖以图像的形式进行显示
    
        assert len(image_shape) == 2
        assert len(tile_shape) == 2
        assert len(tile_spacing) == 2
                                # 对参数进行断言,确保它们都是二维元组
        output_shape = [
            (ishp + tsp)*tshp-tsp
            for ishp, tshp, tsp in zip(image_shape, tile_shape, tile_spacing)
        ]
                        # image_shape == (28, 28)   mnist data
                        # tile_shape == (10, 10), tile_spacing == (1, 1)
                        # [(28+1)*10-1]*[(28+1)*10-1]                   
    
        H, W = image_shape
        Hs, Ws = tile_spacing
        dt = 'uint8' if output_pixel_vals else X.dtype
                                # python 风格的三目运算符
        output_array = numpy.zeros(output_shape, dtype=dt)
    
        # 开始贴砖
        for i in range(tile_shape[0]):
            for j in range(tile_shape[1]):
                if i*tile_shape[1]+j < X.shape[0]:
                        # X的每一行是一个图像(二维)flatten后的(一维的行向量)
                    this_x = X[i*tile_shape[1]+j]
                    this_image = normalize(this_x.reshape(image_shape)) if normalize_rows else this_x.reshape(image_shape)
                    c = 255 if output_pixel_vals else 1
                    output_array[
                        i*(H+Hs):i*(H+Hs)+H, j*(W+Ws):j*(W+Ws)+W
                    ] = this_image*c
        return output_array
    
    import numpy
    from PIL import Image
    
    X = numpy.random.randn(500, 28*28)
    arr = tile_raster_images(X, image_shape=(28, 28), 
                tile_shape=(12, 12), tile_spacing=(1, 1))
    img = Image.fromarray(arr)
    img.show()
    img.save('./砖块可视化.png')
        # 这里也可使用 matplotlib 进行显示
        # plt.imshow(img, cmap='gray')
        # plt.show()
    

     可视化可以更直观的观察数据,让工作更加高效。

    3. 数据可视化,贴砖

    一、python单行注释符号(#)

    示例:#this is a comment

    二、批量、多行注释符号

    多行注释是用三引号”’ ”’包含的,引号可以使单引号也可以是双引号

    例如:

    '''
    ABC
    ABC
    ABC
    '''
    """
    ABC
    ABC
    ABC
    """
    

    三、python中文注释方法

    如果文件里有非ASCII字符,需要在第一行或第二行指定编码声明。把ChineseTest.py文件的编码重新改为ANSI,并加上编码声明:

    一定要在第一行或者第二行加上这么一句话:

    #coding=utf-8

    # -*- coding: utf-8 -*-

    我刚开始加上了依然出错,是因为我的py文件的前三行是注释声明,我把这句话放在了第四行,所以依然报错。

    py脚本的前两行一般都是:

    #!/usr/bin/python

    # -*- coding: utf-8 -*-

  • 相关阅读:
    DIV+CSS一种简单的左边图片右边多行文字的布局
    超级精简的鼠标触发式下拉菜单
    JQuery全选反选 随其他checkbox自动勾选全选反选
    asp.net后台注册JavaScript
    IE浏览器中iframe背景BODY透明
    iframe自适应高度的超精简方法 IE6/7/8/9 &amp; FF经测试完全通过
    Button1.Attributes.Add() 方法小结
    在美女秘书的身体上寻找股市的趋势!很准的!
    无意中发现google Reader中的内容居然不与RSS源同步!
    参加阿里软件“旺斯卡”,居然给我寄来了1件T恤和1个4GB优盘
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/7767033.html
Copyright © 2020-2023  润新知