Menu
CoddyTech

Standaryzacja

Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 49 z 64.

Wiele modeli uczy się najlepiej, gdy każda cecha jest wyśrodkowana wokół 0 i ma odchylenie standardowe równe 1. Standaryzacja robi właśnie to: każda wartość staje się wynikiem z-score w swojej kolumnie.

Pięć dyń, masa w kg i szerokość w cm:

Dwa rzędy kropek na jednej osi, w jednostkach odchylenia standardowego: pięć mas dyń od 8 do 40 kg i pięć szerokości od 30 do 65 cm, każdy rząd wyśrodkowany względem własnej średniej wynoszącej 0, wszystkie wartości mieszczą się między -1.6 a 1.6

Operacja broadcasting standaryzuje jednocześnie każdą kolumnę:

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

To wyświetla:

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

Zaokrąglij przed sprawdzeniem: niezaokrąglona średnia równa 0 może zostać wyświetlona jako 2.22044605e-17, czyli drobny błąd zaokrąglenia.

W przeciwieństwie do min-max nie ma ustalonego zakresu: większość wartości mieści się między -2 a 2.

challenge icon

Wyzwanie

Średni

Na farmie mlecznej zauważono nietypowe krowy. Każdy wiersz tablicy cows opisuje jedną krowę: mleko (litry dziennie), wagę (kg) i wiek (lata), nazwane w features. Program odczytuje pozycję krowy k.

  1. Uzupełnij standardize(X). Linie sprawdzające wypisują następnie [0. 0. 0.] i [1. 1. 1.].
  2. Znajdź wynik z dla krowy k, który jest najdalej od 0 (ignorując znak), i wypisz go w poniższej postaci, z dokładnością do 2 miejsc po przecinku.

Dla krowy z innej farmy:

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

Spróbuj swoich sił

import numpy as np

features = ["milk", "weight", "age"]
# Jeden wiersz na krowę: ilość mleka w litrach dziennie, masa w kg, wiek w latach
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())


# Zwraca X ze znormalizowanymi wszystkimi kolumnami: średnia 0 i odchylenie standardowe 1
def standardize(X):
    # Zastąp poniższy wiersz kodem normalizującym
    return X


# Nie zmieniaj trzech poniższych wierszy: sprawdzają twoją funkcję
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))

# Napisz kod poniżej: co wyróżnia krowę k
quiz iconSprawdź się

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

Wszystkie lekcje w sekcji Statystyka w uczeniu maszynowym

Poćwicz samodzielnie: Kompilator Python online