Menu
CoddyTech

Isolation Forest

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

Titik yang menyimpang mudah dipisahkan. Iris data secara acak, berulang kali, sampai satu titik berdiri sendiri:

Sebaran yang sama ditampilkan dua kali, diiris dengan potongan acak berwarna abu-abu. Kiri: titik yang jauh di sudut atas berdiri sendiri setelah 2 potongan. Kanan: titik di tengah kerumunan memerlukan 8 potongan

Titik yang jauh membutuhkan 2 pemotongan, sedangkan titik yang padat membutuhkan 8. Hutan isolasi merata-ratakan jumlah pemotongan dari 100 pohon acak:

from sklearn.ensemble import IsolationForest
forest = IsolationForest(contamination=0.02, random_state=0)
flags = forest.fit_predict(X)

fit_predict memberikan -1 untuk baris yang tidak biasa, 1 untuk baris lainnya. contamination adalah proporsi baris yang kamu perkirakan tidak biasa.

challenge icon

Tantangan

Sedang

Sebuah pelabuhan mencatat 160 giliran kerja crane: jumlah perpindahan per jam dan energi per perpindahan. Giliran kerja mana yang tidak biasa?

  1. Tandai giliran kerja dengan isolation forest, contamination=0.03, random_state=0. Cetak jumlahnya seperti di bawah.
  2. Tampilkan giliran kerja normal sebagai titik dengan label normal.
  3. Lingkari yang ditandai: s=150, facecolors="none", edgecolors="red", dengan label flagged. Tambahkan legenda dan tampilkan.

Untuk pelabuhan lain, dengan 200 giliran kerja:

Flagged: 6 of 200 shifts

Giliran kerja crane sebagai titik-titik dalam sebaran yang menurun, crane yang lebih cepat menggunakan lebih sedikit energi per perpindahan, dan enam giliran kerja yang menyendiri dilingkari warna merah di sekitarnya, dengan legenda

Coddy kemudian menjelaskan grafikmu.

Coba sendiri

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest

# Satu baris untuk setiap sif derek di pelabuhan: kecepatan dan penggunaan energi
shifts = pd.read_csv("cranes.csv")
X = shifts[["moves_per_hour", "kwh_per_move"]]

# Jangan ubah baris-baris di bawah ini
fig, ax = plt.subplots()
ax.set_title("Crane Shifts")
ax.set_xlabel("Moves per hour")
ax.set_ylabel("Energy per move (kWh)")

# 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