Menu
CoddyTech

Local Outlier Factor

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 36 z 51.

Niektóre nietypowe punkty kryją się w zakresie danych. lokalny współczynnik odstających obserwacji, LOF, porównuje zagęszczenie każdego punktu z zagęszczeniem jego sąsiadów:

Samochody na parkingu w garażu, godzina przyjazdu na osi poziomej, a liczba godzin parkowania na osi pionowej: osoby dojeżdżające do pracy skupione blisko 8:00 i 9 godzin, klienci rozproszeni przez cały dzień i parkujący na kilka godzin oraz jeden samochód przy 8:18 zaparkowany na 6.6 godziny, otoczony czerwonym kółkiem i oznaczony przez LOF

Klienci czasami zostają 6 godzin. Ale sąsiedzi tego samochodu to osoby dojeżdżające do pracy, stłoczone blisko siebie, a ten samochód stoi daleko od ich grupy:

from sklearn.neighbors import LocalOutlierFactor
lof = LocalOutlierFactor(n_neighbors=20, contamination=0.02)
flags = lof.fit_predict(X)

Takie same odpowiedzi jak poprzednio: -1 oznacza wartość odstającą, 1 — normalną. n_neighbors określa, jak lokalne jest porównanie.

challenge icon

Wyzwanie

Średni

Firma telefoniczna szuka kont różniących się od sąsiednich. Kod początkowy skaluje dane i oznacza konta za pomocą lasu izolacyjnego; program odczytuje k.

  1. Oznacz konta za pomocą LOF: n_neighbors=k, contamination=0.03.
  2. Wypisz liczbę wskazań każdego detektora oraz liczbę kont wskazanych przez oba.
  3. Wymień konta oznaczone tylko przez LOF, w kolejności z tabeli, jak poniżej.

Dla mniejszej firmy i 10:

Isolation forest: 5 accounts
LOF: 5 accounts
Both: 4 accounts
Only LOF:
  A118: 960 minutes, 6.2 GB

Spróbuj swoich sił

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor

# Jeden wiersz na konto telefoniczne: liczba minut połączeń i ilość danych komórkowych w miesiącu
accounts = pd.read_csv("accounts.csv")
X = StandardScaler().fit_transform(accounts[["call_minutes", "data_gb"]])
k = int(input())

# Wynik Isolation Forest: -1 dla kont uznanych przez model za nietypowe
forest_flags = IsolationForest(contamination=0.03, random_state=0).fit_predict(X)

# Wpisz 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 Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online