Résumé de l'utilisation de MNIST avec Python

Mise à jour 2020/2

Le contenu est un peu dépassé, je l'ai donc réécrit sur mon blog personnel. https://kakedashi-engineer.appspot.com/2020/02/10/mnist/

Qu'est-ce que MNIST

Aperçu

MNIST est un ensemble de données de nombres manuscrits de 28 x 28 pixels. Les gens du domaine du Deep Learning l'utilisent souvent comme référence pour le moment.

Chaque pixel prend une valeur entière de 0 à 255. Il y a 70 000 images au total, dont 60 000 sont des données d'entraînement et 10 000 sont des données de test. Le fait est que les données d'entraînement et les données de test sont séparées depuis le début. J'utilise parfois ceci tel quel, Parmi les données d'entraînement, 10 000 de l'arrière peuvent être utilisées comme données de validation. (Qu'est-ce que les données de validation? Arrêtons tôt sur Google)

Ordre des données

Les données ne sont pas organisées pour chaque classe Par exemple, les données d'entraînement

[5 0 4 ..., 8 4 8]

La commande n'est pas régulière.

Pourcentage de chaque nombre

Une chose à noter est le rapport de chaque nombre. Naturellement, je pensais que chaque nombre était 6000 + 1000, mais quand je l'ai recherché, cela semblait différent. L'image de "1" est 24% de plus que l'image de "5" ...

    0      1     2       3      4      5      6      7      8      9
[ 5923.  6742.  5958.  6131.  5842.  5421.  5918.  6265.  5851.  5949.] # training data
[  980.  1135.  1032.  1010.   982.   892.   958.  1028.   974.  1009.] # test data
[ 6903.  7877.  6990.  7141.  6824.  6313.  6876.  7293.  6825.  6958.] # training data + test data

Normalisation

Il y a encore une chose à noter. Le nombre de pixels dans les coins d'une image peut être égal à 0 dans l'une des 70 000 images. Par conséquent, si vous essayez d'effectuer une normalisation pixel par pixel, une division nulle se produira. Dans un exemple de code, etc., il semble qu'il soit courant de diviser par 255,0 à la fois avec numpy etc.

L'introduction est devenue plus longue. Ensuite, je présenterai brièvement comment utiliser MNIST avec Python.

1. LA BASE DE DONNÉES MNIST de chiffres manuscrits (famille principale)

Il peut être téléchargé depuis la page d'accueil de Yann Le Cun et al.

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)

Puisqu'il s'agit de données binaires et non de données textuelles, elles sont utilisées après un traitement approprié. Comme vous pouvez le voir, il est divisé en données d'entraînement et données de test, et les étiquettes sont également différentes. Au fait, puisque l'étiquette est une valeur entière de 0 à 9, je pense que beaucoup de gens veulent l'exprimer en 1 sur K. Dans un tel cas, sklearn.preprocessing.LabelBinarizer est recommandé.

  1. sklearn

Avec sklearn, vous n'avez pas besoin de télécharger et vous pouvez facilement appeler les benchmarks suivants.

python


from sklearn.datasets import *
load_boston() 	
load_iris() 	
load_diabetes() 	
load_digits([n_class])
load_linnerud()

Mais pas seulement cela, à partir d'un référentiel de données d'apprentissage automatique appelé mldata.org Vous pouvez également télécharger les données. Il y a aussi MNIST ici. Le téléchargement prendra un certain temps car les données sont lourdes, Une fois téléchargé, il sera enregistré dans data_home, vous n'aurez donc pas à attendre aussi longtemps pour la deuxième fois.

python


from sklearn.datasets import fetch_mldata
mnist = fetch_mldata('MNIST original', data_home=custom_data_home)

Utilisation très simple.

3. Autre

Les bibliothèques telles que TensorFlow et Theano semblent avoir leurs propres fonctions pour télécharger MNIST. Si vous regardez l'exemple de code, vous pouvez voir comment l'utiliser. Il semble que le chainer utilise sklearn.

Recommended Posts

Résumé de l'utilisation de MNIST avec Python
[Python] Résumé de l'utilisation des pandas
[Python2.7] Résumé de l'utilisation d'unittest
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
Résumé de la façon d'importer des fichiers dans Python 3
Résumé de l'utilisation de pandas.DataFrame.loc
Comment utiliser SQLite en Python
Résumé de l'utilisation de pyenv-virtualenv
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
Résumé de l'utilisation de csvkit
[Introduction à Python] Comment utiliser la classe en Python?
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
Comment utiliser __slots__ dans la classe Python
Comment utiliser les expressions régulières en Python
Comment utiliser is et == en Python
[Question] Comment utiliser plot_surface de python
Comment utiliser la bibliothèque C en Python
[Python] Comment utiliser deux types de type ()
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment utiliser tkinter avec python dans pyenv
Résumé de l'étude de Python pour utiliser AWS Lambda
[Python] Comment utiliser la liste 1
Comment utiliser Python Argparse
Python: comment utiliser pydub
[Python] Comment utiliser checkio
Comment développer en Python
[Python] Comment utiliser input ()
Comment utiliser Python lambda
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
[Pour les débutants] Comment utiliser la commande say avec python!
Résumé des outils nécessaires pour analyser les données en Python
Comment obtenir le nombre de chiffres en Python
J'ai essayé de résumer comment utiliser matplotlib de python
Comment utiliser Python Kivy ① ~ Bases du langage Kv ~
J'ai essayé de résumer comment utiliser les pandas de python
[Python] Résumé de la façon de spécifier la couleur de la figure
Comment utiliser le modèle appris dans Lobe en Python
[Python] Comment faire PCA avec Python
Python: comment utiliser async avec
Comment utiliser les classes dans Theano
Comment collecter des images en Python
Comment utiliser les requêtes (bibliothèque Python)
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser l'API Python d'OpenPose
Comment envelopper C en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser la fonction zip de python
Comment gérer le japonais avec Python
[Python] Comment utiliser l'API Typetalk
[python] Résumé de la récupération des listes et des éléments du dictionnaire
Comment utiliser la méthode __call__ dans la classe Python
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Comment développer dans un environnement virtuel Python [Memo]