0Pricing
Learn AI with Python · Lekcja

Skalowanie cech: normalizacja i standaryzacja

MinMaxScaler, StandardScaler, RobustScaler — kiedy używać każdego z nich i dlaczego ma to znaczenie.

Skalowanie cech: normalizacja i standaryzacja to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Dlaczego skalować cechy?

Wiele algorytmów jest wrażliwych na SKALĘ cech. Cecha o zakresie od 0 do 1 000 000 zdominuje cechę o zakresie od 0 do 1 w modelach opartych na odległości lub gradiencie. Skalowanie umieszcza cechy w porównywalnych zakresach.

Kiedy skalowanie jest potrzebne

Skalowanie ma znaczenie w przypadku KNN, SVM, k-means, PCA oraz modeli opartych na spadku gradientu, takich jak regresja liniowa/logistyczna i sieci neuronowe. Modele oparte na drzewach (lasy losowe, gradient boosting) nie zależą od skali i nie wymagają skalowania.

Normalizacja: MinMaxScaler

Normalizacja min-max przeskalowuje każdą cechę do ustalonego zakresu, zwykle od 0 do 1, za pomocą (x - min) / (max - min). Zachowuje kształt rozkładu.

from sklearn.preprocessing import MinMaxScaler
import numpy as np
X = np.array([[10.0], [20.0], [30.0], [40.0]])
scaler = MinMaxScaler()
print(scaler.fit_transform(X).ravel())   # [0. 0.333 0.667 1.]

Standaryzacja: StandardScaler

Standaryzacja nadaje każdej cesze średnią równą zero i wariancję równą jeden za pomocą (x - mean) / std. Wynik jest wynikiem z; wartości są wycentrowane, ale nieograniczone.

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
Xs = scaler.fit_transform(X)
print(Xs.ravel())
print(Xs.mean(), Xs.std())   # ~0 and ~1

MinMax a Standard

Należy użyć MinMax, gdy potrzebny jest ograniczony zakres (na przykład w przypadku pikseli obrazu lub danych wejściowych sieci neuronowej). Należy użyć Standard, gdy algorytm zakłada dane w przybliżeniu wycentrowane wokół zera (PCA, SVM, modele liniowe). MinMax jest bardziej wrażliwy na wartości odstające.

RobustScaler dla wartości odstających

RobustScaler centruje dane względem MEDIANY i skaluje je za pomocą IQR. Ponieważ obie te miary są odporne na wartości odstające, jest to właściwy wybór, gdy wartości skrajne mogłyby zniekształcić działanie innych skalerów.

from sklearn.preprocessing import RobustScaler
Xo = np.array([[1.0], [2.0], [3.0], [4.0], [100.0]])
print(RobustScaler().fit_transform(Xo).ravel())

fit a transform

Skalery UCZĄ SIĘ parametrów w fit (wartości min/max albo średniej/odchylenia standardowego) i STOSUJĄ je w transform. fit_transform wykonuje obie operacje w jednym wywołaniu.

scaler = StandardScaler()
scaler.fit(X)          # learns mean and std
Xs = scaler.transform(X)   # applies them

Złota zasada: dopasowywanie tylko do danych treningowych

Należy zawsze wywołać fit na zbiorze TRENINGOWYM, a następnie tylko transform na zbiorze testowym, korzystając z wyuczonych parametrów. Dopasowanie do danych testowych ujawnia modelowi informacje, których nie powinien znać.

scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)   # transform only!

Dlaczego nie dopasowywać do danych testowych?

Jeśli skaluje się dane za pomocą statystyk obejmujących zbiór testowy, ocena wykorzystuje informacje, których nie powinna mieć. Jest to wyciek danych. Powoduje on zbyt optymistyczne i niewiarygodne oszacowania skuteczności.

Odwrotne przekształcenie

Skalery mogą odwrócić operację za pomocą inverse_transform, co jest przydatne do przekształcania przeskalowanych predykcji z powrotem do oryginalnych jednostek na potrzeby raportowania.

original = scaler.inverse_transform(X_train_scaled)
# recovers the pre-scaled values

Skalowanie zmiennej docelowej

W klasyfikacji zwykle skaluje się CECHY, a nie zmienną docelową. W regresji można również skalować zmienną docelową, ale wtedy należy pamiętać o zastosowaniu odwrotnego przekształcenia do predykcji przed raportowaniem błędów.

Szybki test

Sprawdź swoją wiedzę na temat skalowania.

Podsumowanie

Narzędzia do skalowania:

  • Skalowanie ma znaczenie w przypadku modeli opartych na odległości lub gradiencie; drzewa je ignorują
  • MinMaxScaler -> ograniczony zakres 0..1; StandardScaler -> średnia równa zero, wariancja równa jeden
  • RobustScaler wykorzystuje medianę i IQR, dzięki czemu jest odporny na wartości odstające
  • Należy zawsze wykonywać fit_transform na danych treningowych, a transform tylko na danych testowych (aby uniknąć wycieku)

Często zadawane pytania

Czy lekcja „Skalowanie cech: normalizacja i standaryzacja” jest bezpłatna?

Tak — pełny tekst „Skalowanie cech: normalizacja i standaryzacja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Skalowanie cech: normalizacja i standaryzacja”?

MinMaxScaler, StandardScaler, RobustScaler — kiedy używać każdego z nich i dlaczego ma to znaczenie. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Skalowanie cech: normalizacja i standaryzacja”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wykrywanie i usuwanie wartości odstających
  2. Kodowanie zmiennych kategorialnych
  3. Skalowanie cech: normalizacja i standaryzacja
  4. Budowanie potoków przetwarzania wstępnego
← Powrót do Learn AI with Python