Menu
CoddyTech

Diffusion

Fait partie de la section Données et visualisations du Journey Machine Learning de Coddy. Leçon 13 sur 60.

Les modèles apprennent mieux lorsque chaque caractéristique se situe autour de 0. Vous soustrayez donc la moyenne de chaque colonne à toutes les valeurs de cette colonne, et NumPy recopie les moyennes sur chaque ligne :

Le tableau de 3 lignes et 2 colonnes des tailles et des poids, moins la ligne des moyennes 170 et 70 recopiée sur les trois lignes, donne le tableau centré : 0 et -10, 10 et 10, -10 et 0

En code, pour les tailles et les poids de trois personnes :

data = np.array([[170, 60],
                 [180, 80],
                 [160, 70]])
print(data - data.mean(axis=0))

Cela affiche :

[[  0. -10.]
 [ 10.  10.]
 [-10.   0.]]

Cette copie est la diffusion. Le tableau est maintenant centré : chaque valeur indique à quelle distance elle se trouve de la moyenne de sa colonne.

Les moyennes ont la forme (2,) : une valeur par colonne du tableau (3, 2). Toute autre longueur provoque une erreur.

challenge icon

Défi

Facile

Une application de fitness centre chaque tableau avant l’entraînement. Le code de départ appelle center sur deux tableaux, users (3 caractéristiques) et workouts (2), puis affiche les résultats. Pour l’instant, center renvoie le tableau sans le modifier.

Complète center pour qu’elle soustraie la moyenne de chaque colonne à cette colonne, quel que soit le nombre de colonnes. Laisse les lignes qui suivent telles quelles.

Avec deux utilisateurs et deux entraînements, le résultat ressemblerait à ceci :

Centered users:
[[-6.  7. -5.]
 [ 6. -7.  5.]]
Column means after centering: [0. 0. 0.]
Centered workouts:
[[-10. -90.]
 [ 10.  90.]]
Column means after centering: [0. 0.]

Essayez vous-même

import numpy as np


def center(table):
    # Renvoie table après avoir soustrait la moyenne de chaque colonne
    # Écrivez votre code ci-dessous
    return table


# Une ligne par utilisateur : âge, fréquence cardiaque au repos, minutes d’exercice par jour
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# Une ligne par séance d’entraînement : durée en minutes, calories brûlées
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# Ne modifiez pas les lignes ci-dessous
print("Centered users:")
print(center(users))
print("Column means after centering:", np.round(center(users).mean(axis=0), 2))
print("Centered workouts:")
print(center(workouts))
print("Column means after centering:", np.round(center(workouts).mean(axis=0), 2))
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 Données et visualisations

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