Menu
CoddyTech

Postępowanie z obserwacjami odstającymi

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

Dziesięć mieszkań zużywało po około 10 m³ wody, ale przez wyciek w jednym z nich zużycie wzrosło do 64. Możesz je usunąć albo ograniczyć do najbliższej granicy:

Zużycie wody w 10 mieszkaniach w trzech wierszach. Zachowaj: dziewięć punktów w pobliżu 10 i wyciek przy 64, średnia 15.2. Usuń: wyciek usunięty, średnia 9.8. Ogranicz: wyciek cofnięty do granicy przy 14, średnia 10.2

np.clip(a, low, high) ogranicza wartości w całej tablicy:

water = np.array([8, 11, 9, 10, 12, 9, 64, 10, 11, 8])
low, high = 6.0, 14.0  # granice IQR
dropped = water[(water >= low) & (water <= high)]
capped = np.clip(water, low, high)
print(len(dropped), len(capped))
print(capped)

To wypisuje:

9 10
[ 8. 11.  9. 10. 12.  9. 14. 10. 11.  8.]

Model dopasowałby się do tej pojedynczej wartości, więc zdecyduj przed treningiem. Popraw lub usuń literówki; zachowaj prawdziwe wartości skrajne albo ogranicz je. Nigdy nie usuwaj ich po cichu: podaj, ile ich zmieniono.

challenge icon

Wyzwanie

Średni

Aplikacja rowerowa zapisała średnie prędkości z 15 przejazdów w speeds; dwie wyglądają nietypowo. Kod początkowy umieścił granice IQR w low i high.

  1. Utwórz dropped — prędkości mieszczące się w granicach (włącznie z nimi) — oraz capped.
  2. Wypisz po jednym wierszu dla zachowanych, odrzuconych i ograniczonych wartości: liczbę przejazdów, ich średnią i .std(), zaokrąglone do 2 miejsc po przecinku.
  3. Wypisz, ile przejazdów zmieniło ograniczenie wartości.

Dla 10 przejazdów innego rowerzysty:

Keep: 10 rides, mean 21.38, std 6.58
Drop: 9 rides, mean 19.2, std 0.77
Cap: 10 rides, mean 19.45, std 1.04
Capping changed 1 of 10 rides

Spróbuj swoich sił

import numpy as np


# Zwraca dolną i górną granicę IQR dla tablicy
def iqr_fences(a):
    q1 = np.percentile(a, 25)
    q3 = np.percentile(a, 75)
    iqr = q3 - q1
    return q1 - 1.5 * iqr, q3 + 1.5 * iqr


speeds = np.array([24.5, 22.8, 26.1, 23.9, 3.1, 25.4, 21.7, 24.2, 27.3, 78.4, 23.1, 25.8, 22.4, 24.9, 26.6])
low, high = iqr_fences(speeds)

# Napisz swój kod poniżej
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