Isolation Forest
חלק מהיחידה למידה בלתי מונחית במסלול ה-Machine Learning של Coddy. שיעור 35 מתוך 51.
קל לבודד נקודות חריגות. פורסים את הנתונים באופן אקראי, שוב ושוב, עד שנקודה אחת עומדת לבדה:
לנקודה המרוחקת נדרשו 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 הוא החלק היחסי של השורות שאת מצפה שיהיו חריגות.
אתגר
בינונינמל תיעד 160 משמרות של מנופים: מספר ההעברות בשעה והאנרגיה לכל העברה. אילו משמרות היו חריגות?
- סמנו את המשמרות החריגות באמצעות יער בידוד,
contamination=0.03,random_state=0. הדפיסו את הספירה כפי שמוצג למטה. - הציגו את המשמרות הרגילות בתרשים פיזור עם נקודות שכותרתן
normal. - הקיפו את המשמרות שסומנו:
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)")
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה בלתי מונחית
תרגלו בעצמכם: קומפיילר Python אונליין