Menu
CoddyTech

Les composantes comme motifs

Fait partie de la section Apprentissage non supervisé du Journey Machine Learning de Coddy. Leçon 30 sur 51.

Qu’est-ce que PCA a examiné ? Chaque composante contient 64 poids, un par pixel, et components_ contient une ligne par composante :

pca = PCA(n_components=4).fit(X)
print(pca.components_.shape)

Cela affiche (4, 64). Remodelez une ligne en 8 par 8 et elle devient une image. cmap="gray_r" signifie niveaux de gris inversés : les poids élevés sont foncés, les négatifs sont clairs :

ax.imshow(pca.components_[0].reshape(8, 8), cmap="gray_r")

Les quatre premières composantes des chiffres sous forme d’images de 8 par 8, en gris lorsqu’un poids est proche de zéro, foncées lorsqu’il est élevé, claires lorsqu’il est négatif

La composante 1 est sombre là où les 4 et les 6 ont de l’encre, ils se retrouvent donc à droite de la carte. Un scan obtient un score élevé lorsque son encre tombe sur des pixels sombres.

challenge icon

Défi

Moyen

Un professeur de calligraphie veut voir les différentes façons dont les gens écrivent un chiffre. Le programme lit le chiffre, et le code de départ conserve ses scans dans X.

  1. Ajustez une PCA avec 3 composantes sur X.
  2. Dessinez la composante i sur axs[i] sous forme d’image de 8 par 8 avec cmap="gray_r", intitulée Component 1 à Component 3.
  3. Affichez le graphique.

Pour les 2, le programme dessine ceci. Coddy décrit ensuite vos panneaux :

Trois images de 8 par 8 composantes représentant des 2 manuscrits, intitulées Component 1, Component 2 et Component 3, chacune avec ses propres traits foncés et clairs

Essayez vous-même

import matplotlib.pyplot as plt
from sklearn.datasets import load_digits
from sklearn.decomposition import PCA

# Chaque image numérisée d'un chiffre, lue depuis l'entrée : 64 pixels par ligne
d = int(input())
digits = load_digits()
X = digits.data[digits.target == d]

# Ne modifiez pas la ligne ci-dessous
fig, axs = plt.subplots(1, 3)

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Apprentissage non supervisé

Entraînez-vous par vous-même : Compilateur Python en ligne