סף ההחלטה
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 17 מתוך 58.
predict מחזירה תשובה חיובית כשההסתברות עולה על 0.5, כלומר הסף. אבל החמצת מסך פגום עלולה לעלות יותר מבדיקה נוספת. הורידו את הסף:
אזעקת שווא היא מסך טוב שסומן. בחרו סף משלכם באמצעות השוואה:
proba = model.predict_proba(X_test)[:, 1]
flag = proba >= 0.3 # True: יש לבדוק את המסך הזהככל שהסף נמוך יותר, הוא מזהה יותר מקרים אמיתיים ומפיק יותר התרעות שווא; ככל שהוא גבוה יותר, ההפך. ההסתברויות לעולם אינן משתנות, רק סף ההחלטה.
בחרו בו לפי העלות של כל טעות.
אתגר
בינוניחברת תעופה מזמינה מחדש נוסעים שסביר שיחמיצו את טיסת ההמשך שלהם עוד לפני שהם נוחתים. קוד ההתחלה מתאים מודל על connections.csv וקורא סף.
- קבל את ההסתברויות של נוסעי הבדיקה להחמיץ טיסת המשך.
- עבור 0.5, ואז עבור הסף, ספור את הנוסעים שהוזמנו מחדש, את ההחמצות האמיתיות שנמנעו (מתוך כלל ההחמצות) ואת ההזמנות מחדש המיותרות.
- הדפס שורה לכל סף.
עבור חברת תעופה אחרת ו-0.25:
Threshold 0.5: 9 rebooked, 7 of 15 misses caught, 2 needless rebookings
Threshold 0.25: 21 rebooked, 13 of 15 misses caught, 8 needless rebookingsנסו בעצמכם
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# שורה אחת לכל נוסע: משך ההמתנה בין טיסות והעיכוב בטיסה הנכנסת בדקות, החלפת טרמינל (1 או 0), כבודה שנשלחה לבטן המטוס; missed הוא 1 או 0
trips = pd.read_csv("connections.csv")
features = ["layover_min", "delay_min", "terminal_change", "checked_bags"]
X_train, X_test, y_train, y_test = train_test_split(trips[features], trips["missed"], test_size=0.25, random_state=0)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
threshold = float(input())
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין