Menu
CoddyTech

Rozgłaszanie

Część sekcji Dane i wykresy ścieżki Machine Learning w Coddy. Lekcja 13 z 60.

Modele uczą się lepiej, gdy każda cecha ma wartość w pobliżu 0. Dlatego od każdej kolumny odejmujesz jej średnią, a NumPy kopiuje średnie do każdego wiersza:

Tabela 3 na 2 z wzrostem i wagą, od której odjęto średnie z wiersza 170 i 70 skopiowane do wszystkich trzech wierszy, równa się wycentrowanej tabeli: 0 i -10, 10 i 10, -10 i 0

W kodzie, dla wzrostu i wagi trzech osób:

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

To wyświetla:

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

To kopiowanie to rozgłaszanie. Tabela jest teraz wycentrowana: każda wartość pokazuje, jak bardzo odbiega od średniej swojej kolumny.

Średnie mają kształt (2,): jedną wartość na każdą kolumnę tabeli (3, 2). Każda inna długość powoduje błąd i zatrzymanie działania.

challenge icon

Wyzwanie

Łatwy

center dla dwóch tablic: users (3 cechy) i workouts (2), a następnie wyświetla wyniki. Obecnie center zwraca tablicę bez zmian.

Uzupełnij center, tak aby odejmowała średnią każdej kolumny od wartości w tej kolumnie, niezależnie od liczby kolumn. Pozostaw poniższe wiersze bez zmian.

Dla dwóch użytkowników i dwóch treningów wynik wyglądałby tak:

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

Spróbuj swoich sił

import numpy as np


def center(table):
    # Zwróć table po odjęciu średniej od każdej kolumny
    # Napisz swój kod poniżej
    return table


# Jeden wiersz na użytkownika: wiek, tętno spoczynkowe, minuty ćwiczeń dziennie
users = np.array([[25, 62, 30],
                  [31, 70, 45],
                  [40, 58, 20],
                  [29, 66, 25]])
# Jeden wiersz na trening: minuty, spalone kalorie
workouts = np.array([[30, 240],
                     [45, 410],
                     [20, 150],
                     [60, 520],
                     [35, 300]])

# Nie zmieniaj poniższych wierszy
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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Dane i wykresy

Poćwicz samodzielnie: Kompilator Python online