Menu
CoddyTech

Standardizzazione

Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 49 di 64.

Molti modelli apprendono al meglio quando ogni caratteristica è centrata su 0 con una dispersione di 1. La standardizzazione fa proprio questo: ogni valore diventa il suo punteggio z all'interno della colonna.

Cinque zucche, peso in kg e larghezza in cm:

Due righe di punti su un righello in deviazioni standard: cinque pesi di zucche da 8 a 40 kg e cinque larghezze da 30 a 65 cm, ciascuna riga centrata sulla propria media a 0, tutte comprese tra -1.6 e 1.6

Il broadcasting standardizza tutte le colonne contemporaneamente:

pumpkins = np.array([[30, 60],
                     [8, 30],
                     [22, 55],
                     [40, 65],
                     [15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))

Questo stampa:

[0. 0.]
[1. 1.]

Arrotonda prima di controllare: senza arrotondamento, una media di 0 può essere stampata come 2.22044605e-17, una minima imprecisione dovuta all’arrotondamento.

A differenza di min-max, non esiste un intervallo fisso: la maggior parte dei valori rientra tra -2 e 2.

challenge icon

Sfida

Medio

Una fattoria casearia individua mucche insolite. Ogni riga di cows corrisponde a una mucca: latte (litri al giorno), peso (kg) ed età (anni), indicati in features. Il programma legge la posizione di una mucca, k.

  1. Completa standardize(X). Le righe di controllo stampano quindi [0. 0. 0.] e [1. 1. 1.].
  2. Trova il punteggio z della mucca k più lontano da 0, ignorando il segno, e stampalo come mostrato, con 2 decimali.

Per una mucca di un'altra fattoria:

Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herd

Provalo tu

import numpy as np

features = ["milk", "weight", "age"]
# Una riga per ogni mucca: latte in litri al giorno, peso in kg, età in anni
cows = np.array([[28, 610, 6],
                 [22, 540, 3],
                 [35, 680, 6],
                 [31, 590, 9],
                 [19, 650, 4],
                 [26, 520, 2],
                 [30, 600, 7]])
k = int(input())


# Restituisce X con ogni colonna standardizzata: media 0 e std 1
def standardize(X):
    # Sostituisci la riga seguente con la standardizzazione
    return X


# Non modificare le tre righe seguenti: verificano la tua funzione
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# Scrivi il tuo codice qui sotto: cosa distingue la mucca k
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 Statistica per il machine learning

Esercitati da solo: Compilatore Python online