Menu
CoddyTech

Local Outlier Factor

Teil des Abschnitts Unüberwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 36 von 51.

Einige ungewöhnliche Punkte liegen innerhalb des Wertebereichs der Daten. Der lokale Ausreißerfaktor LOF vergleicht, wie dicht jeder Punkt im Vergleich zu den Punkten seiner Nachbarn liegt:

Autos in einem Parkhaus, Ankunftszeit auf der waagerechten Achse und Parkdauer in Stunden auf der senkrechten Achse: Pendler dicht gedrängt um 8:00 Uhr und bei 9 Stunden, Einkäufer über den ganzen Tag verteilt und für einige Stunden, und ein Auto um 8:18 Uhr, das 6,6 Stunden geparkt hat, rot eingekreist und von LOF markiert

Kundinnen und Kunden bleiben manchmal 6 Stunden. Aber die Nachbarn dieses Autos sind Pendler, dicht gedrängt, und es steht weit entfernt von ihrer Gruppe:

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

Dieselben Antworten wie zuvor: -1 ungewöhnlich, 1 normal. n_neighbors legt fest, wie lokal der Vergleich ist.

challenge icon

Aufgabe

Mittel

Ein Telefonanbieter sucht nach Konten, die sich von ihren Nachbarn unterscheiden. Das Starterprogramm skaliert die Daten und kennzeichnet Konten mit einem Isolation Forest; das Programm liest k ein.

  1. Kennzeichne Konten mit LOF: n_neighbors=k, contamination=0.03.
  2. Gib die Anzahl der Treffer jedes Detektors und aus, wie viele Konten beide kennzeichnen.
  3. Liste die Konten auf, die nur LOF kennzeichnet, in Tabellenreihenfolge, wie unten gezeigt.

Für ein kleineres Unternehmen und 10:

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

Probier es selbst

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

# Eine Zeile pro Telefonkonto: Gesprächsminuten und mobile Daten für einen Monat
accounts = pd.read_csv("accounts.csv")
X = StandardScaler().fit_transform(accounts[["call_minutes", "data_gb"]])
k = int(input())

# Aus Isolation Forest: -1 für die Konten, die der Forest als auffällig einstuft
forest_flags = IsolationForest(contamination=0.03, random_state=0).fit_predict(X)

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Unüberwachtes Lernen

Übe selbstständig: Online-Python-Compiler