מדד F1
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 23 מתוך 58.
מודל יכול להגיע לדיוק או להיזכרות המרביים על חשבון האחר. ציון F1 משלב בין השניים, ונשאר נמוך אלא אם שניהם גבוהים:
כאשר P הוא דיוק ו-R הוא כיסוי, F1 הוא 2 * P * R / (P + R). עבור מודל מזג אוויר:
from sklearn.metrics import f1_score, classification_report
y_test = ["sun", "sun", "rain", "rain", "snow", "sun", "rain", "snow"]
pred = ["sun", "rain", "rain", "rain", "snow", "sun", "sun", "rain"]
print(f1_score(y_test, pred, average=None)) # אחד לכל מחלקה, לפי סדר מיון
print(classification_report(y_test, pred))זה מדפיס:
[0.57142857 0.66666667 0.66666667]
precision recall f1-score support
rain 0.50 0.67 0.57 3
snow 1.00 0.50 0.67 2
sun 0.67 0.67 0.67 3
accuracy 0.62 8
macro avg 0.72 0.61 0.63 8
weighted avg 0.69 0.62 0.63 8הדוח report נותן ציון לכל מחלקה; support סופר את שורות הבדיקה שלה. השורה החלשה ביותר שלו מראה לך מה לתקן קודם.
אתגר
בינוניהמצלמה של מפעל מיחזור ממיינת פריטים למכלים של זכוכית, מתכת, נייר ופלסטיק. התוכנית קוראת את k, וקוד הפתיחה מאמן את מצלמת ה-k-NN, ממלא את pred ומציג את bins.
- הדפיסו את דוח הסיווג.
- מצאו את המכל עם ערך F1 הנמוך ביותר והדפיסו אותו, ולאחר מכן את הצד החלש יותר שלו, precision או recall, כמו בדוגמה למטה (3 ספרות אחרי הנקודה העשרונית).
אחרי הדוח, עבור מפעל אחר:
Weakest bin: metal, F1 0.667
Its weaker side: recall 0.571נסו בעצמכם
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, f1_score, precision_score, recall_score
k = int(input())
# שורה אחת לכל פריט על המסוע, ולמכל שאליו הוא שייך
items = pd.read_csv("recycling.csv")
features = ["weight_g", "shine", "see_through", "bend"]
X_train, X_test, y_train, y_test = train_test_split(items[features], items["material"], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# המודל של המצלמה
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
pred = model.predict(X_test)
# המכלים, לפי סדר הציונים של כל מחלקה
bins = model.classes_
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין