Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)

introduction

Le cours classique d'apprentissage automatique de Coursera (Stanford, Dr. Andrew Ng) comme première étape de l'apprentissage de l'apprentissage automatique. Une série qui implémente des tâches de programmation Matlab / Octave en Python pour ce cours. Cette fois, nous effectuerons une analyse en composantes principales (ACP) dans la seconde moitié de l'apprentissage non supervisé de l'ex-7.

Importer la bibliothèque

Importez diverses bibliothèques.

import numpy as np
import scipy.io as scio
import matplotlib.pyplot as plt
from sklearn import decomposition

Lecture / affichage des données

Chargez les données au format .mat de Matlab avec scipy.io.loadmat (). Les données sont 5000 morceaux d'images en niveaux de gris de 256 gradations de 32x32 pixels. Il est livré dans une matrice bidimensionnelle 5000x1024. Montrons ceci tel quel (seulement les 100 premières images).

data = scio.loadmat('ex7faces.mat')
X = data['X'] #X est une matrice bidimensionnelle de 5000x1024

fig = plt.figure()
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
for i in range(0,100):
    ax = fig.add_subplot(10,10,i+1)
    ax.axis('off')
    ax.imshow(X[i].reshape(32,32).T, cmap = plt.get_cmap('gray'))
plt.show()

Cliquez ici pour la sortie. ex7-3.png

Mise en œuvre de l'analyse en composantes principales

En appliquant l'analyse des composantes principales aux données d'image d'origine représentées par 32x32 pixels = 1024 dimensions, les données sont réduites à 100 dimensions. L'analyse en composants principaux est un coup dans la classe sklearn.decomposition.PCA (). Vous pouvez spécifier le nombre de composants principaux à prendre avec le paramètre n_components =.

pca = decomposition.PCA(n_components=100)
pca.fit(X)

Visualisation des principaux composants

Les résultats de l'analyse des composants principaux sont stockés dans pca.components_. Il s'agit d'une matrice bidimensionnelle 100x1024. Ce vecteur de composant principal peut être affiché tel quel. N'afficherons que les 36 premiers composants principaux.

fig = plt.figure()
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
for i in range(0,36):
    ax = fig.add_subplot(6,6,i+1)
    ax.axis('off')
    ax.imshow(pca.components_[i].reshape(32,32).T, cmap = plt.get_cmap('gray'))
plt.show()

Cliquez ici pour les résultats. ex7-4.png

Réduction dimensionnelle et reconstruction

Dans l'analyse en composantes principales, les informations d'image exprimées à l'origine par le vecteur à 1024 dimensions sont réduites à 100 dimensions. Le jeu de données à dimension réduite peut être obtenu avec pca.transform (X) (vecteur bidimensionnel 5000x100). Multipliez cela par le vecteur composant principal pour restaurer un vecteur bidimensionnel 5000x1024. Les données restaurées sont les données d'origine compressées avec 100 composants principaux et restaurées pour pouvoir être affichées. Affichons les 100 premières images du résultat reconstruit.

Xreduce = pca.transform(X) #Réduction de dimension. Le résultat est une matrice 5000x100
Xrecon = np.dot(Xreduce, pca.components_) #Reconstitution. Le résultat est une matrice de 5000x1024

fig = plt.figure()
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None)
for i in range(0,100):
    ax = fig.add_subplot(10,10,i+1)
    ax.axis('off')
    ax.imshow(Xrecon[i].reshape(32,32).T, cmap = plt.get_cmap('gray'))
plt.show()

Cliquez ici pour les résultats. Par rapport à l'image originale ci-dessus, vous pouvez voir que les caractéristiques brutes ont été restaurées, bien que les détails aient été perdus.

ex7-5.png

en conclusion

Cette fois aussi, le code est simple.

Recommended Posts

Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Défis d'apprentissage automatique de Coursera en Python: ex2 (retour logistique)
Défis de Coursera Machine Learning en Python: ex5 (ajustement des paramètres de régularisation)
Coursera Machine Learning Challenge en Python: ex6 (Comment ajuster les paramètres SVM)
Coursera Machine Learning Challenge en Python: ex7-1 (Compression d'image avec clustering K-means)
Python: apprentissage non supervisé: analyse principale
Défis d'apprentissage automatique de Coursera en Python: ex3 (reconnaissance de nombres manuscrits avec récursivité logistique)
<Cours> Machine learning Chapitre 4: Analyse des principaux composants
Introduction aux bases de Python de l'apprentissage automatique (apprentissage non supervisé / analyse principale)
2. Analyse multivariée décrite dans Python 3-2. Analyse en composantes principales (algorithme)
Analyse en composants principaux (PCA) et analyse en composants indépendants (ICA) avec python
2. Analyse multivariée expliquée dans Python 3-1. Analyse en composantes principales (scikit-learn)
Python: prétraitement dans l'apprentissage automatique: présentation
Visualisez la matrice de corrélation par l'analyse des composants principaux avec Python
Apprentissage automatique avec python (2) Analyse de régression simple
[python] Techniques souvent utilisées dans l'apprentissage automatique
Python: prétraitement en machine learning: acquisition de données
[Python] Enregistrement des résultats d'apprentissage (modèles) dans l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: conversion de données
Prétraitement dans l'apprentissage automatique 1 Processus d'analyse des données
Ceci et cela de l'analyse en composantes principales
[Python] Analyse de données, pratique du machine learning (Kaggle) -Prétraitement des données-
PRML Chapitre 12 Mise en œuvre de l'analyse principale bayésienne Python
Touchons une partie de l'apprentissage automatique avec Python
Analyse d'association en Python
Analyse en composantes principales (Analyse en composantes principales: ACP)
Analyse de régression avec Python
Créez un environnement interactif pour l'apprentissage automatique avec Python
Outil MALSS (application) qui prend en charge l'apprentissage automatique en Python
Outil MALSS (basique) qui prend en charge l'apprentissage automatique en Python
Python Scikit-learn Analyse de régression linéaire Analyse de régression simple non linéaire Apprentissage automatique
Défiez l'analyse des composants principaux des données textuelles avec Python
Tentative d'inclusion du modèle d'apprentissage automatique dans le package python
Entropie croisée à revoir dans les devoirs de la semaine 2 de Coursera Machine Learning
Analyse des composants principaux à l'aide de python de nim avec nimpy
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Apprentissage automatique avec Python! Préparation
Analyse des contraintes symétriques axiales avec Python
Notes d'apprentissage sur l'analyse des données Python
Utilisé en EDA pour l'apprentissage automatique
Analyse de régression simple avec Python
Commencer avec l'apprentissage automatique Python
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Effectuer une analyse morphologique dans l'environnement d'apprentissage automatique lancé par GCE
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
Mettre en œuvre l'apprentissage de l'empilement en Python [Kaggle]
Première analyse de régression simple en Python
Apprentissage automatique par python (1) Classification générale
Résumé de l'apprentissage automatique par les débutants de Python
Automatisez les tâches de routine dans l'apprentissage automatique
Algorithme d'apprentissage automatique (analyse de régression unique)
Reconnaissance faciale à l'aide de l'analyse des composants principaux
Analyse des composants principaux avec Spark ML
Classification et régression dans l'apprentissage automatique
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Apprentissage automatique dans Delemas (acquisition de données)
Implémentation des règles d'apprentissage Perceptron en Python
Prétraitement dans l'apprentissage automatique 2 Acquisition de données