Menu
CoddyTech

Proiezioni

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

Una proiezione proietta ogni punto direttamente su una retta, come un’ombra. Ecco i gemelli del vino di Too Many Features, centrati sulla loro media, su due rette:

Due grafici degli stessi vini come punti blu intorno al centro. A sinistra, una retta lungo la nuvola: le ombre arancioni si distribuiscono ampiamente lungo di essa, dispersione 1.14. A destra, una retta attraverso la nuvola: le ombre si raggruppano, dispersione 0.30

Lungo la nuvola, le ombre mantengono gran parte della dispersione, quindi un numero per vino dice quasi quanto ne dicevano due.

Una direzione è composta da due numeri i cui quadrati sommano 1, come (0.6, 0.8). Un’ombra è una somma pesata:

centered = X - X.mean(axis=0)
shadow = centered[:, 0] * 0.6 + centered[:, 1] * 0.8
print(round(shadow.std(), 3))

Questo stampa 1.136. La direzione migliore mantiene la massima dispersione.

challenge icon

Sfida

Medio

Un guardaboschi vuole un numero per ogni pigna invece della lunghezza e della larghezza. Quale delle due direzioni conserva una maggiore dispersione delle pigne? Il programma legge due direzioni, con due numeri ciascuna.

  1. Scrivi spread_along(direction): la deviazione standard delle proiezioni delle pigne su quella direzione.
  2. Stampa entrambe le dispersioni con 3 decimali.
  3. Stampa la direzione da mantenere.

Per altre pigne:

Along [0.6, 0.8]: spread 2.104
Along [0.8, -0.6]: spread 0.412
Keep [0.6, 0.8]

Provalo tu

import numpy as np
import pandas as pd

# Un forestale ha misurato 70 pigne: lunghezza e larghezza in cm
cones = pd.read_csv("cones.csv")
X = np.column_stack([cones["length_cm"], cones["width_cm"]])
first = [float(input()), float(input())]
second = [float(input()), float(input())]

# 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