Menu
CoddyTech

Standardisation

Fait partie de la section Statistiques pour le ML du Journey Machine Learning de Coddy. Leçon 49 sur 64.

De nombreux modèles apprennent mieux lorsque chaque caractéristique est centrée sur 0 et présente un écart-type de 1. La standardisation fait cela : chaque valeur devient son score z dans sa colonne.

Cinq citrouilles, poids en kg et largeur en cm :

Deux rangées de points sur une règle en écarts-types : cinq poids de citrouilles de 8 à 40 kg et cinq largeurs de 30 à 65 cm, chaque rangée centrée sur sa propre moyenne à 0, le tout entre -1.6 et 1.6

La diffusion standardise chaque colonne en une seule fois :

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))

Cela affiche :

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

Arrondissez avant de vérifier : sans arrondi, une moyenne de 0 peut s’afficher sous la forme 2.22044605e-17, à cause d’une infime erreur d’arrondi.

Contrairement à min-max, il n’y a pas de plage fixe : la plupart des valeurs se situent entre -2 et 2.

challenge icon

Défi

Moyen

Une ferme laitière repère des vaches inhabituelles. Chaque ligne de cows correspond à une vache : la production de lait (litres par jour), le poids (kg) et l’âge (années), désignés dans features. Le programme lit la position d’une vache k.

  1. Complète standardize(X). Les lignes de vérification affichent ensuite [0. 0. 0.] et [1. 1. 1.].
  2. Trouve le score z de la vache k le plus éloigné de 0, sans tenir compte du signe, et affiche-le comme ci-dessous, avec 2 décimales.

Pour une vache d’une autre ferme :

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

Essayez vous-même

import numpy as np

features = ["milk", "weight", "age"]
# Une ligne par vache : lait en litres par jour, poids en kg, âge en années
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())


# Renvoie X avec chaque colonne standardisée : moyenne 0 et écart-type 1
def standardize(X):
    # Remplacez la ligne ci-dessous par la standardisation
    return X


# Ne modifiez pas les trois lignes ci-dessous : elles vérifient votre fonction
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# Écrivez votre code ci-dessous : qu’est-ce qui distingue la vache k ?
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur Python en ligne