Menu
CoddyTech

Broadcasting

Teil des Abschnitts Daten und Diagramme der Machine Learning-Journey von Coddy. Lektion 13 von 60.

Modelle lernen besser, wenn jedes Merkmal um 0 herum liegt. Deshalb ziehst du von jeder Spalte ihren Mittelwert ab, und NumPy kopiert die Mittelwerte in jede Zeile:

Die 3-mal-2-Tabelle mit Größen und Gewichten, minus der Mittelwertzeile 170 und 70, die in alle drei Zeilen kopiert wird, ergibt die zentrierte Tabelle: 0 und -10, 10 und 10, -10 und 0

Im Code für die Körpergrößen und Gewichte von drei Personen:

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

Dies gibt aus:

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

Dieses Kopieren ist Broadcasting. Die Tabelle ist jetzt zentriert: Jeder Wert gibt an, wie weit er vom Mittelwert seiner Spalte entfernt ist.

Die Mittelwerte haben die Form (2,): einen Wert pro Spalte der Tabelle (3, 2). Jede andere Länge führt zu einem Fehler.

challenge icon

Aufgabe

Einfach

Eine Fitness-App zentriert vor dem Training jede Tabelle. Der Startcode ruft center für zwei Tabellen auf, users (3 Merkmale) und workouts (2), und gibt die Ergebnisse aus. Im Moment gibt center die Tabelle unverändert zurück.

Vervollständige center, sodass der Mittelwert jeder Spalte von den Werten dieser Spalte abgezogen wird, unabhängig von der Anzahl der Spalten. Lass die darunterliegenden Zeilen unverändert.

Mit zwei Benutzern und zwei Trainingseinheiten würde die Ausgabe so aussehen:

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

Probier es selbst

import numpy as np


def center(table):
    # Gib table zurück, wobei von jeder Spalte ihr Mittelwert abgezogen wurde
    # Schreibe deinen Code unten
    return table


# Eine Zeile pro Nutzer: Alter, Ruhepuls, Trainingsminuten pro Tag
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# Eine Zeile pro Trainingseinheit: Minuten, verbrannte Kalorien
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# Ändere die folgenden Zeilen nicht
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 iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Daten und Diagramme

Übe selbstständig: Online-Python-Compiler