StandardScaler
Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 50 z 64.
Model musi skalować każdą nową próbkę dokładnie tak samo, jak skalował dane treningowe. StandardScaler z biblioteki scikit-learn standaryzuje dane i zapamiętuje sposób skalowania:
W kodzie każde zlecenie jest opisane liczbą umytych okien i poświęconych minut:
from sklearn.preprocessing import StandardScaler
X_train = np.array([[2, 8], [10, 25], [6, 20], [14, 35]])
scaler = StandardScaler()
scaler.fit(X_train)
X_new = np.array([[8, 30]]) # jedna próbka: tabela z jednym wierszem
print(np.round(scaler.transform(X_new), 2))To wyświetla:
[[0. 0.82]]fit oblicza średnią i odchylenie standardowe każdej kolumny (dzieląc przez n, tak jak np.std), które są przechowywane w scaler.mean_ i scaler.scale_. transform stosuje te wartości.
Nigdy nie dopasowuj do nowych danych: ich średnia byłaby równa im samym, a wynik wyniósłby [[0. 0.]]. Na danych treningowych fit_transform wykonuje obie te czynności w jednym wywołaniu.
Wyzwanie
ŚredniSorter nauczył się na awokado ze zbioru X_train: wagi, jędrności i liczby dni od zbioru. Program wczytuje nowe awokado do jednowierszowej tablicy new_avocado, ale skalowanie w kodzie startowym wypisuje [[0. 0. 0.]] dla każdego awokado.
- Napraw to: przeskaluj nowe awokado, używając średnich i odchyleń standardowych ze zbioru treningowego.
- Policz jego pomiary, które różnią się od średniej treningowej o więcej niż 2 odchylenia standardowe w dowolnym kierunku, i wypisz wynik jak poniżej.
Dla kolejnej partii:
New avocado: [[2.98 0. 0.09]]
1 of 3 measurements are more than 2 std from the training avocadosSpróbuj swoich sił
import numpy as np
from sklearn.preprocessing import StandardScaler
# Awokado w zbiorze treningowym, po jednym w każdym wierszu: masa w gramach, twardość od 1 do 10, liczba dni od zbioru
X_train = np.array([[210, 8, 2],
[185, 5, 6],
[240, 7, 3],
[170, 3, 9],
[225, 6, 5],
[195, 4, 7]])
# Nowe awokado na taśmie
weight = float(input())
firmness = float(input())
days = float(input())
new_avocado = np.array([[weight, firmness, days]])
# To wypisuje [[0. 0. 0.]] dla każdego awokado: popraw to
scaler = StandardScaler()
scaled = scaler.fit_transform(new_avocado)
print("New avocado:", np.round(scaled, 2))
# Napisz swój kod poniżej
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
1Położenie i rozproszenie
Średnia i medianaPercentyle i kwartyleWariancja i odchylenie standardowePróba czy populacja?Najczęściej występująca wartośćPodsumowanie: czasy dostaw4Próby i populacje
Populacja i próbaŚrednie z prób się różniąRozkład próbkowaniaWiększe próby, mniej szumuPodsumowanie: ankietowanie mieszkańców2Rozkłady
Histogramy gęstościKształty danychKrzywa normalnaReguła 68-95-99,7Wyniki standaryzowane (Z-scores)Podsumowanie: czas pracy baterii5Obserwacje odstające
Wykresy pudełkoweReguła IQRReguła Z-scorePostępowanie z obserwacjami odstającymiPodsumowanie: błędy czujników3Prawdopodobieństwo przez symulację
Prawdopodobieństwo jako częstośćPrawo wielkich liczbSumy oczekWartość oczekiwanaPrawdopodobieństwo warunkowePodsumowanie: szanse na stoisku z kośćmi6Relacje
Odczytywanie wykresów punktowychKorelacjaMacierz korelacjiMapy cieplne korelacjiKorelacja nie oznacza przyczynowościPodsumowanie: lody i słońce9Skalowanie cech
Dlaczego skalować cechySkalowanie min–maxStandaryzacjaStandardScalerPodsumowanie: partnerzy we wspinaczcePoćwicz samodzielnie: Kompilator Python online