Menu
CoddyTech

Local Outlier Factor

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 36 dari 51.

Beberapa titik yang tidak biasa tersembunyi dalam rentang data. local outlier factor, LOF, membandingkan seberapa padat lokasi setiap titik dengan lokasi tetangganya:

Mobil-mobil di garasi parkir, waktu kedatangan pada sumbu horizontal dan lama parkir dalam jam pada sumbu vertikal: para komuter berkelompok rapat sekitar pukul 8:00 dan parkir selama 9 jam, para pembeli tersebar sepanjang hari dan parkir selama beberapa jam, serta satu mobil yang datang pukul 8:18 dan parkir selama 6.6 jam dilingkari merah, ditandai oleh LOF

Para pembeli terkadang berada di sana selama 6 jam. Namun, tetangga mobil ini adalah para komuter yang berdesakan rapat, dan mobil ini berada jauh dari keramaian mereka:

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

Jawabannya sama seperti sebelumnya: -1 anomali, 1 normal. n_neighbors menentukan seberapa lokal perbandingannya.

challenge icon

Tantangan

Sedang

Sebuah perusahaan telepon mencari akun yang berbeda dari akun di sekitarnya. Program awal menstandarkan data dan menandai akun dengan isolation forest; program membaca k.

  1. Tandai akun dengan LOF: n_neighbors=k, contamination=0.03.
  2. Cetak jumlah akun yang ditandai oleh setiap pendeteksi dan jumlah akun yang ditandai oleh keduanya.
  3. Daftarkan akun yang hanya ditandai oleh LOF, sesuai urutan tabel, seperti di bawah ini.

Untuk perusahaan yang lebih kecil dan 10:

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

Coba sendiri

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

# Satu baris untuk setiap akun ponsel: jumlah menit panggilan dan data seluler selama sebulan
accounts = pd.read_csv("accounts.csv")
X = StandardScaler().fit_transform(accounts[["call_minutes", "data_gb"]])
k = int(input())

# Dari Isolation Forest: -1 untuk akun yang dianggap tidak biasa oleh forest
forest_flags = IsolationForest(contamination=0.03, random_state=0).fit_predict(X)

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online