我是靠谱客的博主 称心钥匙,最近开发中收集的这篇文章主要介绍利用python对mnist数据集中的0,1手写字体进行二分类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 下载代码,通过点击链接(http://yann.lecun.com/exdb/mnist/),打开页面如下图所示,下载对应MNIST手写数字识别数据集,包括训练集图像、训练集标签、测试集图像与测试集标签四个部分。下载保存于指定位置。

 

2.分析数据集,进行预处理,由于所提供的数据集格式为.idx3_ubyte。不方便直接进行训练,因此,如要将其转化为图片格式,通过直接读取图片像素作为训练特征。数据集预处理的程序代码为(程序文件名: analysisdataset.py):

import numpy as np

import struct

import matplotlib.pyplot as plt

 

# 训练集文件

train_images_idx3_ubyte_file = 'user/mnist/train-images.idx3-ubyte'

# 训练集标签文件

train_labels_idx1_ubyte_file = 'user/mnist/train-labels.idx1-ubyte'

 

# 测试集文件

test_images_idx3_ubyte_file = 'user /mnist/t10k-images.idx3-ubyte'

# 测试集标签文件

test_labels_idx1_ubyte_file = 'user/mnist/t10k-labels.idx1-ubyte'

 

 

def decode_idx3_ubyte(idx3_ubyte_file):

    """

    解析idx3文件的通用函数

    :param idx3_ubyte_file: idx3文件路径

    :return: 数据集

    """

    # 读取二进制数据

    bin_data = open(idx3_ubyte_file, 'rb').read()

 

    # 解析文件头信息,依次为魔数、图片数量、每张图片高、每张图片宽

    offset = 0

    fmt_header = '>iiii'

    magic_number, num_images, num_rows, num_cols = struct.unpack_from(fmt_header, bin_data, offset)

    print('魔数:%d, 图片数量: %d张, 图片大小: %d*%d' % (magic_number, num_images, num_rows, num_cols))

 

    # 解析数据集

    image_size = num_rows * num_cols

    offset += struct.calcsize(fmt_header)

    fmt_image = '>' + str(image_size) + 'B'

    images = np.empty((num_images, num_rows, num_cols))

    for i in range(num_images):

        if (i + 1) % 10000 == 0:

            print('已解析 %d' % (i + 1) + '张')

        images[i] = np.array(struct.unpack_from(fmt_image, bin_data, offset)).reshape((num_rows, num_cols))

        offset += struct.calcsize(fmt_image)

    return images

 

 

def decode_idx1_ubyte(idx1_ubyte_file):

    """

    解析idx1文件的通用函数

    :param idx1_ubyte_file: idx1文件路径

    :return: 数据集

    """

    # 读取二进制数据

    bin_data = open(idx1_ubyte_file, 'rb').read()

 

    # 解析文件头信息,依次为魔数和标签数

    offset = 0

    fmt_header = '>ii'

    magic_number, num_images = struct.unpack_from(fmt_header, bin_data, offset)

    print('魔数:%d, 图片数量: %d张' % (magic_number, num_images))

 

    # 解析数据集

    offset += struct.calcsize(fmt_header)

    fmt_image = '>B'

    labels = np.empty(num_images)

    for i in range(num_images):

        if (i + 1) % 10000 &#

最后

以上就是称心钥匙为你收集整理的利用python对mnist数据集中的0,1手写字体进行二分类的全部内容,希望文章能够帮你解决利用python对mnist数据集中的0,1手写字体进行二分类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部