Menu
CoddyTech

Yerel Aykırı Değer Faktörü

Coddy'nin Machine Learning Journey'sinin Denetimsiz Öğrenme bölümünün bir parçası. Ders 36 / 51.

Bazı aykırı noktalar verilerin aralığında gizlenir. yerel aykırılık faktörü LOF, her noktanın bulunduğu yerin ne kadar yoğun olduğunu komşularının bulunduğu yerlerle karşılaştırır:

Bir otoparktaki arabalar; yatay eksende varış saati, dikey eksende park edilen saatler: işe gidip gelenler 8:00 civarında ve 9 saat boyunca sıkışık halde, alışveriş yapanlar gün boyunca birkaç saatliğine dağılmış durumda ve 8:18'de gelip 6.6 saat park eden bir araba kırmızıyla daire içine alınmış ve LOF tarafından işaretlenmiş

Alışveriş yapanlar bazen 6 saat kalır. Ancak bu arabanın komşuları işe gidip gelenlerdir, sıkışık bir şekilde park etmişlerdir ve araba onların kalabalığından uzakta durur:

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

Öncekiyle aynı yanıtlar: -1 aykırı, 1 normal. n_neighbors karşılaştırmanın ne kadar yerel olduğunu belirler.

challenge icon

Görev

Orta

Bir telefon şirketi, komşularından farklı olan hesapları arıyor. Başlangıç kodu verileri ölçeklendirir ve hesapları bir izolasyon ormanıyla işaretler; program k değerini okur.

  1. Hesapları LOF ile işaretle: n_neighbors=k, contamination=0.03.
  2. Her algılayıcının sayısını ve her ikisinin de işaretlediği hesap sayısını yazdır.
  3. Aşağıdaki gibi, yalnızca LOF'un işaretlediği hesapları tablo sırasına göre listele.

Daha küçük bir şirket ve 10 için:

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

Kendin dene

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

# Her telefon hesabı için bir satır: bir aylık arama dakikaları ve mobil veri kullanımı
accounts = pd.read_csv("accounts.csv")
X = StandardScaler().fit_transform(accounts[["call_minutes", "data_gb"]])
k = int(input())

# Isolation Forest çıktısı: modelin olağandışı bulduğu hesaplar için -1
forest_flags = IsolationForest(contamination=0.03, random_state=0).fit_predict(X)

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimsiz Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi