Menu
CoddyTech

Isolation Forest

חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 35 מתוך 51.

קל לבודד נקודות חריגות. פורסים את הנתונים באופן אקראי, שוב ושוב, עד שנקודה אחת עומדת לבדה:

אותו תרשים פיזור פעמיים, עם חיתוכים אקראיים אפורים. משמאל: נקודה רחוקה בפינה העליונה עומדת לבדה אחרי 2 חיתוכים. מימין: נקודה במרכז ההמון זקוקה ל-8 חיתוכים

לנקודה המרוחקת נדרשו 2 חיתוכים, ולנקודה הצפופה 8. יער בידוד מחשב את ממוצע החיתוכים על פני 100 עצים אקראיים:

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

fit_predict מחזירה -1 עבור שורות חריגות, ו־1 עבור השאר. contamination הוא החלק היחסי של השורות שאת מצפה שיהיו חריגות.

challenge icon

אתגר

בינוני

נמל תיעד 160 משמרות של מנופים: מספר ההעברות בשעה והאנרגיה לכל העברה. אילו משמרות היו חריגות?

  1. סמנו את המשמרות החריגות באמצעות יער בידוד, contamination=0.03, random_state=0. הדפיסו את הספירה כפי שמוצג למטה.
  2. הציגו את המשמרות הרגילות בתרשים פיזור עם נקודות שכותרתן normal.
  3. הקיפו את המשמרות שסומנו: s=150, facecolors="none", edgecolors="red", עם הכותרת flagged. הוסיפו מקרא והציגו את התרשים.

עבור נמל אחר, עם 200 משמרות:

Flagged: 6 of 200 shifts

משמרות מנופים מוצגות כנקודות בענן יורד: מנופים מהירים יותר משתמשים בפחות אנרגיה לכל העברה, ומסביבן מוקפות באדום שש משמרות בודדות, לצד מקרא

לאחר מכן Coddy מתאר את התרשים שלך.

נסו בעצמכם

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

# שורה אחת לכל משמרת של עגורן בנמל: מהירות וצריכת אנרגיה
shifts = pd.read_csv("cranes.csv")
X = shifts[["moves_per_hour", "kwh_per_move"]]

# אל תשנו את השורות שלהלן
fig, ax = plt.subplots()
ax.set_title("Crane Shifts")
ax.set_xlabel("Moves per hour")
ax.set_ylabel("Energy per move (kWh)")

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה בלתי מונחית

תרגלו בעצמכם: קומפיילר Python אונליין