Menu
CoddyTech

Variance expliquée

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

Quelle part 2 composantes ont-elles conservée ? Chaque composante détient une part de la dispersion totale : son ratio de variance expliquée. Pour les 13 composantes du vin :

Barres représentant les 13 composantes du vin, diminuant de 0,36 à presque 0, et une ligne orange qui les additionne, montant de 0,36 à 1. Elle croise la ligne pointillée des 90 % à la composante 8

PCA() sans n_components les conserve toutes. np.cumsum calcule le total cumulé :

pca = PCA().fit(scaled)
ratio = pca.explained_variance_ratio_
print(ratio[:3].round(3))
total = np.cumsum(ratio)
print((total < 0.9).sum() + 1)

Cela affiche [0.362 0.192 0.111] et 8 : les totaux restent en dessous de 0.9, plus celui qui dépasse ce seuil. La carte des vins en 2D a donc conservé 55 %.

challenge icon

Défi

Moyen

Un laboratoire de chocolat mesure 9 caractéristiques par tablette. Combien de composantes conservent 90 % de la dispersion ? scaled est prêt.

  1. Ajuste PCA() et récupère la part de chaque composante.
  2. Affiche le nombre de composantes qui atteignent 90 %.
  3. Représente les parts sous forme de barres en 1, 2, 3..., étiquetées each component ; représente le total cumulé sous forme de ligne avec marker="o", étiquetée running total ; ajoute une ligne grise en pointillés à 0.9 et une légende. Affiche le graphique.

Pour un autre laboratoire :

Components for 90%: 4

Graphique intitulé Part de dispersion conservée par chaque composante pour 7 composantes : des barres diminuant à partir de 0.42, un total cumulé qui monte jusqu'à 1 et franchit la ligne pointillée à 0.9 à la composante 4, et une légende

Essayez vous-même

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# Le laboratoire d'un chocolatier : 9 mesures pour chacune des 150 tablettes
bars = pd.read_csv("chocolate.csv")
scaled = StandardScaler().fit_transform(bars)

fig, ax = plt.subplots()
ax.set_title("Spread Kept by Each Component")
ax.set_xlabel("Component")
ax.set_ylabel("Share of spread")

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