Wykrywanie i usuwanie wartości odstających
Metoda z-score, metoda IQR, koncepcja isolation forest i praktyczna obsługa wartości odstających.
Wykrywanie i usuwanie wartości odstających to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 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.
Czym jest wartość odstająca?
Wartość odstająca to wartość znacznie różniąca się od pozostałych danych. Może być autentyczną wartością skrajną, błędem wprowadzania danych lub usterką czujnika. Wartości odstające mogą zniekształcać średnie, wariancje i modele, dlatego należy wykrywać je w sposób zamierzony.
Metoda z-score
z-score mierzy, ile odchyleń standardowych dzieli daną wartość od średniej: z = (x - mean) / std. Często stosowana reguła oznacza każdy punkt, dla którego |z| > 3, jako wartość odstającą.
import numpy as np
data = np.array([10, 12, 11, 13, 12, 100])
z = (data - data.mean()) / data.std()
print(np.round(z, 2))Oznaczanie za pomocą scipy zscore
scipy.stats.zscore oblicza wyniki z dla tablicy. Można połączyć tę funkcję z progiem, aby utworzyć maskę wartości logicznych wskazującą wartości odstające.
from scipy import stats
z = np.abs(stats.zscore(data))
outliers = z > 3
print(data[outliers])Ograniczenie metody z-score
Metoda z-score wykorzystuje średnią i odchylenie standardowe, które same są przesuwane przez wartości odstające. W przypadku silnie skośnych danych lub wartości skrajnych wyniki z mogą nie wykryć wszystkich wartości odstających. Metoda IQR jest bardziej odporna.
Metoda IQR
Rozstęp międzykwartylowy IQR = Q3 - Q1 obejmuje środkowe 50 procent danych. Oblicza się go na podstawie kwartylów, na które wartości odstające mają niewielki wpływ, dzięki czemu metoda jest odporna.
q1 = np.percentile(data, 25)
q3 = np.percentile(data, 75)
iqr = q3 - q1
print(q1, q3, iqr)Granice IQR
Granice Tukeya definiują zakresy: lower = Q1 - 1.5*IQR, upper = Q3 + 1.5*IQR. Wszystko, co znajduje się poza nimi, zostaje oznaczone. Ta sama reguła wyznacza wąsy wykresu pudełkowego.
lower = q1 - 1.5 * iqr
upper = q3 + 1.5 * iqr
mask = (data < lower) | (data > upper)
print(data[mask]) # outliersWizualizacja za pomocą wykresu pudełkowego
Wykres pudełkowy przedstawia regułę IQR: pudełko obejmuje zakres od Q1 do Q3, linia oznacza medianę, wąsy sięgają granic, a punkty znajdujące się poza nimi są rysowane jako pojedyncze kropki oznaczające wartości odstające.
# import matplotlib.pyplot as plt
# plt.boxplot(data)
# plt.show()Usuwanie wartości odstających
Po oznaczeniu można USUNĄĆ wiersze z wartościami odstającymi. Należy robić to ostrożnie, ponieważ usunięcie rzeczywistych danych może obciążyć wyniki. Należy zachować informacje o tym, co usunięto i dlaczego.
clean = data[~mask]
print(clean) # outlier removedWinsoryzacja za pomocą np.clip
Zamiast usuwać dane, winsoryzacja ogranicza wartości skrajne do wybranych granic za pomocą np.clip. Pozwala to zachować liczbę wierszy, jednocześnie zmniejszając wpływ wartości skrajnych.
capped = np.clip(data, lower, upper)
print(capped) # extreme value pulled to the upper fenceOgraniczanie do percentyli
Częsty wybór w winsoryzacji polega na ograniczeniu wartości do 1. i 99. percentyla, dzięki czemu wpływ najbardziej skrajnych 2 procent wartości zostaje usunięty w sposób symetryczny.
lo, hi = np.percentile(data, [1, 99])
print(np.clip(data, lo, hi))Usuwać czy ograniczać?
Decyzję należy podjąć w zależności od kontekstu: USUWAĆ oczywiste błędy (wartości niemożliwe), OGRANICZAĆ autentyczne, lecz skrajne wartości, które chcą Państwo zachować, a czasem ZACHOWAĆ wartości odstające, gdy stanowią one sygnał (na przykład przy wykrywaniu oszustw). Należy udokumentować tę decyzję.
Szybki test
Sprawdź swoją wiedzę na temat wartości odstających.
Podsumowanie
Narzędzia do obsługi wartości odstających:
- z-score: oznaczanie
|z| > 3za pomocąscipy.stats.zscore(wrażliwa na wartości odstające) - Granice IQR: od Q1-1.5*IQR do Q3+1.5*IQR (odporne, stanowią podstawę wykresów pudełkowych)
- Usuwanie rzeczywistych błędów; winsoryzowanie za pomocą
np.clipw celu ograniczenia wartości skrajnych - Należy zawsze udokumentować, dlaczego wartości zostały usunięte lub ograniczone
Często zadawane pytania
Czy lekcja „Wykrywanie i usuwanie wartości odstających” jest bezpłatna?
Tak — pełny tekst „Wykrywanie i usuwanie wartości odstających” 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 „Wykrywanie i usuwanie wartości odstających”?
Metoda z-score, metoda IQR, koncepcja isolation forest i praktyczna obsługa wartości odstających. Ć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 1 z 4.
Ile czasu zajmuje lekcja „Wykrywanie i usuwanie wartości odstających”?
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
- Wykrywanie i usuwanie wartości odstających
- Kodowanie zmiennych kategorialnych
- Skalowanie cech: normalizacja i standaryzacja
- Budowanie potoków przetwarzania wstępnego