StandardScaler
Fait partie de la section Statistiques pour le ML du Journey Machine Learning de Coddy. Leçon 50 sur 64.
Un modèle doit mettre à l’échelle chaque nouvel échantillon exactement comme il a mis à l’échelle ses données d’entraînement. Le StandardScaler de scikit-learn standardise les données et mémorise comment il le fait :
Dans le code, chaque tâche est représentée par le nombre de fenêtres nettoyées et le nombre de minutes nécessaires :
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 échantillon : un tableau avec une seule ligne
print(np.round(scaler.transform(X_new), 2))Cela affiche :
[[0. 0.82]]fit apprend la moyenne et l’écart-type de chaque colonne (en divisant par n, comme np.std), conservés dans scaler.mean_ et scaler.scale_. transform les applique.
N’ajuste jamais le modèle sur de nouvelles données : l’ensemble aurait sa propre moyenne et deviendrait [[0. 0.]]. Sur les données d’entraînement, fit_transform effectue les deux opérations en un seul appel.
Défi
MoyenUn trieur a appris à partir des avocats de X_train : leur poids, leur fermeté et le nombre de jours depuis la récolte. Le programme lit un nouvel avocat dans le tableau à une ligne new_avocado, mais la mise à l’échelle du code de départ affiche [[0. 0. 0.]] pour chaque avocat.
- Corrige ça : mets le nouvel avocat à l’échelle à l’aide des moyennes et des écarts-types de l’ensemble d’entraînement.
- Compte ses mesures qui s’écartent de plus de 2 écarts-types de la moyenne de l’ensemble d’entraînement, dans un sens ou dans l’autre, et affiche le résultat comme ci-dessous.
Pour un autre lot :
New avocado: [[2.98 0. 0.09]]
1 of 3 measurements are more than 2 std from the training avocadosEssayez vous-même
import numpy as np
from sklearn.preprocessing import StandardScaler
# Avocats d'entraînement, une ligne par avocat : poids en grammes, fermeté de 1 à 10, jours depuis la récolte
X_train = np.array([[210, 8, 2],
[185, 5, 6],
[240, 7, 3],
[170, 3, 9],
[225, 6, 5],
[195, 4, 7]])
# Un nouvel avocat sur le tapis roulant
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])
# Ceci affiche [[0. 0. 0.]] pour chaque avocat : corrigez ce problème
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))
# Écrivez votre code ci-dessous
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Statistiques pour le ML
1Centre et dispersion
Moyenne et médianePercentiles et quartilesVariance et écart-typeÉchantillon ou population ?La valeur la plus fréquenteRécapitulatif : délais de livraison4Échantillons et populations
Population et échantillonLes moyennes d’échantillon varientLa distribution d’échantillonnageDes échantillons plus grands, moins de bruitRécapitulatif : sonder une ville2Distributions
Histogrammes de densitéFormes des donnéesLa courbe normaleLa règle des 68-95-99,7Scores zRécapitulatif : autonomie de la batterie5Valeurs aberrantes
Diagrammes en boîteLa règle de l’écart interquartileLa règle du score ZTraiter les valeurs aberrantesRécapitulatif : anomalies des capteurs3Les probabilités par simulation
La probabilité comme fréquenceLa loi des grands nombresSommes de désEspérance mathématiqueProbabilité conditionnelleRécapitulatif : les chances au stand de dés6Relations
Lire des nuages de pointsCorrélationMatrice de corrélationCartes thermiques de corrélationCorrélation n’est pas causalitéRécapitulatif : glace et soleil9Mise à l’échelle des caractéristiques
Pourquoi mettre les caractéristiques à l’échelleMise à l’échelle Min-MaxStandardisationStandardScalerRécapitulatif : partenaires d’escaladeEntraînez-vous par vous-même : Compilateur Python en ligne