Local Outlier Factor
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 36 מתוך 51.
כמה נקודות חריגות מסתתרות בטווח הנתונים. גורם החריגות המקומי, LOF, משווה את הצפיפות במקום של כל נקודה לצפיפות במקומות של השכנות שלה:
קונים נשארים לפעמים 6 שעות. אבל השכנים של המכונית הזו הם נוסעים לעבודה, צפופים זה לצד זה, והיא נמצאת רחוק מהקהל שלהם:
from sklearn.neighbors import LocalOutlierFactor
lof = LocalOutlierFactor(n_neighbors=20, contamination=0.02)
flags = lof.fit_predict(X)אותן תשובות כמו קודם: -1 חריג, 1 תקין. n_neighbors קובע עד כמה ההשוואה מקומית.
אתגר
בינוניחברת טלפונים מחפשת חשבונות השונים מחשבונותיהם של השכנים שלהם. קוד הפתיחה מתקנן את הנתונים ומסמן חשבונות באמצעות יער בידוד; התוכנית קוראת את k.
- סמנו חשבונות באמצעות LOF:
n_neighbors=k,contamination=0.03. - הדפיסו את הספירה של כל גלאי ואת מספר החשבונות ששניהם מסמנים.
- רשמו את החשבונות שרק LOF מסמן, לפי סדר הטבלה, כמו למטה.
עבור חברה קטנה יותר ועבור 10:
Isolation forest: 5 accounts
LOF: 5 accounts
Both: 4 accounts
Only LOF:
A118: 960 minutes, 6.2 GBנסו בעצמכם
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor
# שורה אחת לכל חשבון טלפון: דקות שיחה ונתוני גלישה סלולרית במשך חודש
accounts = pd.read_csv("accounts.csv")
X = StandardScaler().fit_transform(accounts[["call_minutes", "data_gb"]])
k = int(input())
# מתוך Isolation Forest: -1 עבור החשבונות שהיער מזהה כחריגים
forest_flags = IsolationForest(contamination=0.03, random_state=0).fit_predict(X)
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
תרגלו בעצמכם: קומפיילר Python אונליין