StandardScaler
Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 50 di 64.
Un modello deve scalare ogni nuovo campione esattamente come ha scalato i dati di addestramento. StandardScaler di scikit-learn standardizza e ricorda come:
Nel codice, per ogni lavoro vengono pulite le finestre e vengono registrati i minuti impiegati:
from sklearn.preprocessing import StandardScaler
X_train = np.array([[2, 8], [10, 25], [6, 20], [14, 35]])
scaler = StandardScaler()
scaler.fit(X_train)
X_new = np.array([[8, 30]]) # un campione: una tabella con una riga
print(np.round(scaler.transform(X_new), 2))Stampa questo:
[[0. 0.82]]fit apprende la media e la deviazione standard di ogni colonna (dividendo per n, come np.std), che vengono conservate in scaler.mean_ e scaler.scale_. transform le applica.
Non eseguire mai il fit su nuovi dati: il job avrebbe la propria media e diventerebbe [[0. 0.]]. Sui dati di addestramento, fit_transform esegue entrambe le operazioni con una sola chiamata.
Sfida
MedioUn classificatore è stato addestrato sugli avocado in X_train: peso, consistenza e giorni dalla raccolta. Il programma legge un nuovo avocado nella tabella di una riga new_avocado, ma la scalatura iniziale stampa [[0. 0. 0.]] per ogni avocado.
- Correggila: scala il nuovo avocado usando le medie e le deviazioni standard dei dati di addestramento.
- Conta le misurazioni che si discostano di più di 2 deviazioni standard dalla media dei dati di addestramento, in entrambe le direzioni, e stampa come sotto.
Per un altro lotto:
New avocado: [[2.98 0. 0.09]]
1 of 3 measurements are more than 2 std from the training avocadosProvalo tu
import numpy as np
from sklearn.preprocessing import StandardScaler
# Training avocados, one row each: weight in grams, firmness from 1 to 10, days since harvest
X_train = np.array([[210, 8, 2],
[185, 5, 6],
[240, 7, 3],
[170, 3, 9],
[225, 6, 5],
[195, 4, 7]])
# A new avocado on the belt
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])
# This prints [[0. 0. 0.]] for every avocado: fix it
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))
# Write your code below
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
1Centro e dispersione
Media e medianaPercentili e quartiliVarianza e deviazione standardCampione o popolazione?Il valore più frequenteRiepilogo: tempi di consegna4Campioni e popolazioni
Popolazione e campioneLe medie campionarie varianoDistribuzione campionariaCampioni più grandi, meno rumoreRiepilogo: sondare una città7Linee di tendenza
ResiduiAdattamento dei minimi quadratiTracciare la retta di adattamentoFare previsioni con una rettaQuanto è buono l’adattamento?Riepilogo: ore di pratica10Codifica delle categorie
Categorie come numeriCodifica one-hotRaggruppamento dei numeri in intervalliRiepilogo: annunci di auto2Distribuzioni
Istogrammi di densitàForme dei datiCurva normaleRegola 68-95-99,7Punteggi ZRiepilogo: durata della batteria5Valori anomali
Diagrammi a scatolaLa regola dell'IQRLa regola dello z-scoreGestire i valori anomaliRiepilogo: anomalie dei sensori3Probabilità tramite simulazione
La probabilità come frequenzaLa legge dei grandi numeriSomme dei dadiValore attesoProbabilità condizionataRiepilogo: probabilità al banco dei dadi6Relazioni
Leggere i grafici a dispersioneCorrelazioneMatrice di correlazioneMappe di calore della correlazioneCorrelazione non significa causalitàRiepilogo: gelato e sole9Scalatura delle feature
Perché scalare le featureScalatura Min-MaxStandardizzazioneStandardScalerRiepilogo: compagni di scalataEsercitati da solo: Compilatore Python online