Menu
CoddyTech

דיוק ושליפה

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

שתי שאלות מדרגות את התשובות של בדיקת שפעת. כמה מההתראות שלה על שפעת היו נכונות? כמה ממקרי השפעת האמיתיים היא זיהתה?

מטריצת הבלבול של בדיקת השפעת' מוצגת פעמיים. משמאל, הכותרת היא Precision 42 / 45 = 0.933, עמודת השפעת מסומנת: 3 התראות שווא ו-42 זיהויים. מימין, הכותרת היא Recall 42 / 47 = 0.894, שורת השפעת מסומנת: 5 מקרים שהוחמצו ו-42 זיהויים

דיוק עונה על השאלה הראשונה: 42 מתוך 45 התרעות. רגישות עונה על השאלה השנייה: 42 מתוך 47 מקרים.

from sklearn.metrics import precision_score, recall_score

print(f"{precision_score(y_test, pred):.3f}")
print(f"{recall_score(y_test, pred):.3f}")

:.3f תמיד מציג 3 ספרות אחרי הנקודה העשרונית, לכן 0.9 יודפס כ-0.900. הפלט הוא:

0.933
0.894

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

challenge icon

אתגר

בינוני

המסנן של חנות מסתיר ביקורות שנראות מזויפות. קוד הפתיחה יוצר שתי גרסאות ממודל אחד, strict_pred ו־eager_pred, וקורא איזו טעות מזיקה יותר: missed (ביקורת מזויפת נשארת גלויה) או hidden (ביקורת אמיתית נעלמת).

  1. הדפיסו את הדיוק וההיזכרות של כל מסנן, עם 3 ספרות אחרי הנקודה.
  2. הדפיסו את המסנן שעושה פחות טעויות מהסוג הזה, כמו למטה (עבור missed: Fewer fakes missed: ...).

עבור חנות אחרת ו־hidden:

Strict: precision 0.900, recall 0.450
Eager: precision 0.640, recall 0.800
Fewer real reviews hidden: strict

נסו בעצמכם

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_score, recall_score

# איזו טעות מזיקה יותר: החמצה (ביקורת מזויפת נשארת גלויה) או הסתרה (ביקורת אמיתית מוסתרת)
worse = input()

# שורה אחת לכל ביקורת: 1 ב-fake פירושו שהביקורת נכתבה בהזמנה
reviews = pd.read_csv("reviews.csv")
features = ["words", "exclamations", "account_days", "user_reviews", "stars", "photo"]
X_train, X_test, y_train, y_test = train_test_split(reviews[features], reviews["fake"], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)[:, 1]

# שני מסננים מאותו מודל: strict מסתיר ביקורת כשהסיכוי שהיא מזויפת הוא 0.7, ו-eager כשהסיכוי הוא 0.3
strict_pred = proba >= 0.7
eager_pred = proba >= 0.3

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

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

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

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