Menu
CoddyTech

Réduire avec la PCA

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

64 pixels, c’est plus que nécessaire pour les chiffres. PCA peut viser une part de la variance plutôt qu’un nombre de composantes :

Une courbe ascendante de la part de la variance des chiffres' conservée par les n premières composantes, raide au début, puis plate ; une ligne pointillée à 90 % la rejoint à 21 composantes

n_components=0.9 conserve le nombre minimal de composantes qui expliquent 90 % :

pca = PCA(n_components=0.9)
X_small = pca.fit_transform(X)
print(pca.n_components_, X_small.shape)

Cela affiche 21 (1797, 21) : un tiers des nombres, la majeure partie de l’image.

Pas de mise à l’échelle ici : chaque pixel partage la même unité, l’encre allant de 0 à 16. La mise à l’échelle amplifierait les pixels de bord presque blancs jusqu’à en faire des caractéristiques à part entière.

challenge icon

Défi

Moyen

Il est temps de réduire la taille des scans. Le programme lit la part de variance à conserver, par exemple 0.8.

  1. Affiche le nombre de composantes dont PCA a besoin pour cette part avec les pixels bruts, puis avec les pixels mis à l’échelle.
  2. Conserve la version qui en nécessite le moins : affiche son nom et la forme de ses données réduites.

Pour 0.6 :

Raw pixels: 7 components
Scaled pixels: 11 components
Keep: raw pixels, shape (1797, 7)

À partir de maintenant, le projet conserve 80 % de la variance.

Essayez vous-même

from sklearn.datasets import load_digits
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# Extrait de Look at the Digits : 1,797 images de 64 pixels, avec une intensité de 0 à 16
digits = load_digits()
X = digits.data
y = digits.target

# La proportion de variance à conserver, par exemple 0.8
share = float(input())

# É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