Menu
CoddyTech

Broadcasting

Fa parte della sezione Dati e grafici del percorso Machine Learning di Coddy. Lezione 13 di 60.

I modelli apprendono meglio quando ogni caratteristica è vicina a 0. Quindi sottrai la media di ogni colonna dai valori della colonna e NumPy copia le medie in tutte le righe:

La tabella 3 per 2 di altezze e pesi, meno la riga delle medie 170 e 70 copiata in tutte e tre le righe, è uguale alla tabella centrata: 0 e -10, 10 e 10, -10 e 0

Nel codice, per le altezze e i pesi di tre persone:

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

Questo stampa:

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

Quella copia è trasmissione. La tabella ora è centrata: ogni valore indica quanto dista dalla media della propria colonna.

Le medie hanno forma (2,): un valore per ogni colonna della tabella (3, 2). Qualsiasi altra lunghezza causa un errore.

challenge icon

Sfida

Facile

Un'app per il fitness centra ogni tabella prima dell'allenamento. Il codice iniziale chiama center su due tabelle, users (3 caratteristiche) e workouts (2), e stampa i risultati. Al momento center restituisce la tabella invariata.

Completa center in modo che sottragga la media di ogni colonna da quella colonna, per qualsiasi numero di colonne. Lascia invariate le righe sottostanti.

Con due utenti e due allenamenti, l'output sarebbe simile a questo:

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.]

Provalo tu

import numpy as np


def center(table):
    # Devuelve table con la media de cada columna restada
    # Escribe tu código a continuación
    return table


# Una fila por usuario: edad, frecuencia cardíaca en reposo, minutos de ejercicio al día
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# Una fila por entrenamiento: minutos, calorías quemadas
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# No cambies las líneas siguientes
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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Dati e grafici

Esercitati da solo: Compilatore Python online