Menu
CoddyTech

Varianza spiegata

Fa parte della sezione Apprendimento non supervisionato del percorso Machine Learning di Coddy. Lezione 27 di 51.

Quanto hanno mantenuto 2 componenti? Ogni componente contiene una quota della dispersione totale, il suo rapporto di varianza spiegata. Per tutti e 13 i componenti del vino:

Barre per 13 componenti del vino che diminuiscono da 0.36 a quasi 0, e una linea arancione che le somma, salendo da 0.36 a 1. Attraversa la linea tratteggiata del 90% al componente 8

PCA() senza n_components li mantiene tutti. np.cumsum calcola il totale progressivo:

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

Questo stampa [0.362 0.192 0.111] e 8: i totali sono ancora inferiori a 0.9, più quello che supera la soglia. Quindi la mappa del vino 2D ha mantenuto il 55%.

challenge icon

Sfida

Medio

Un laboratorio di cioccolato misura 9 caratteristiche per barretta. Quante componenti conservano il 90% della dispersione? scaled è pronto.

  1. Adatta PCA() e prendi la quota di ciascuna componente.
  2. Stampa quante componenti raggiungono il 90%.
  3. Disegna le quote come barre in corrispondenza di 1, 2, 3..., con etichetta each component; il totale progressivo come una linea con marker="o", con etichetta running total; una linea grigia tratteggiata a 0.9; una legenda. Mostralo.

Per un altro laboratorio:

Components for 90%: 4

Un grafico intitolato Dispersione conservata da ciascuna componente per 7 componenti: barre che diminuiscono da 0.42, un totale progressivo che sale fino a 1 e supera la linea tratteggiata a 0.9 alla componente 4, e una legenda

Provalo tu

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

# Il laboratorio di un cioccolatiere: 9 misurazioni per ciascuna delle 150 tavolette
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")

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento non supervisionato

Esercitati da solo: Compilatore Python online