Menu
CoddyTech

PCA

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

PCA trova la direzione di maggiore dispersione, poi la migliore perpendicolare a essa, e così via: le componenti. Per i gemelli del vino:

I gemelli del vino ridimensionati, come una nuvola che sale verso destra, con due frecce rosse dal centro: una lunga, componente 1, lungo la nuvola, e una corta, componente 2, attraverso di essa

Le ombre di ogni riga sulle prime componenti diventano le sue nuove caratteristiche:

from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)

Per tutte le 13 misurazioni del vino, stampa (178, 13) (178, 2).

Prima, scala. PCA insegue la dispersione, quindi una caratteristica espressa in unità grandi, come la prolina nell’ordine delle centinaia, prevale solo per le sue dimensioni:

Due mappe PCA dei 178 vini. A sinistra, senza scalatura: le tre cultivar si sovrappongono in un’unica macchia. A destra, dopo aver scalato: tre gruppi distinti

challenge icon

Sfida

Medio

Un laboratorio delle acque analizza bottiglie provenienti da tre sorgenti, con 8 misurazioni ciascuna. Una mappa 2D può distinguere le sorgenti? draw_springs(ax, points) colora tutti i punti 2D in base alla sorgente.

  1. Scala X, poi riducila a 2 componenti con PCA e inseriscila in points.
  2. Stampa il numero di caratteristiche prima e dopo.
  3. Disegna i punti con draw_springs e mostra il grafico.

Per un altro laboratorio, con 6 misurazioni:

From 6 features to 2

Un grafico intitolato Spring Waters in 2D, con la prima componente sull’asse orizzontale e la seconda su quello verticale: le bottiglie alpine in basso a sinistra, quelle vulcaniche in basso a destra, quelle costiere in alto, con una legenda

Coddy descrive la tua mappa.

Provalo tu

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

# Un laboratorio di analisi dell'acqua: 8 misurazioni per ciascuna delle 120 bottiglie provenienti da tre sorgenti
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")


# Disegna un grafico a dispersione di punti 2D, con un gruppo per sorgente e una legenda
def draw_springs(ax, points):
    for spring in ["alpine", "volcanic", "coastal"]:
        rows = (waters["spring"] == spring).to_numpy()
        ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
    ax.legend()


fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")

# 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