אימות K-fold
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 37 מתוך 58.
הפרק הזה הופך את הציונים שלך לאמינים. בסופו, תכוונן מודל באמצעות תרשימים כאלה:
חלוקה אחת של הנתונים למבחן יכולה להיות מוצלחת במקרה. אימות צולב בשיטת K-fold מחלק את השורות לקפלים, כאן ל-5, ובודק בכל פעם קפל אחר, תוך אימון על השאר:
קריאה אחת מריצה את כל חמשת הקיפולים, כאן עבור עץ על פרחי האיריס:
from sklearn.model_selection import cross_val_score
tree = DecisionTreeClassifier(random_state=0)
scores = cross_val_score(tree, X, y, cv=5)
print(np.round(scores, 3))
print(f"{scores.mean():.3f} {scores.std():.3f}")הפעולה הזו מדפיסה:
[0.967 0.967 0.9 0.967 1. ]
0.960 0.033דווחו על הממוצע כציון, ועל סטיית התקן כמידת התנודתיות שלו.
אתגר
בינונימבשלה לקומבוצ'ה חוזה אילו אצוות התקלקלו על סמך 5 קריאות מעבדה. עד כמה המודל שלה יציב? התוכנית קוראת את מספר הקיפולים; קוד הפתיחה יוצר את הנתונים ואת המודל.
- בצעו אימות צולב למודל באמצעות מספר הקיפולים הזה.
- הדפיסו את הדיוק של כל קיפול, ולאחר מכן את הממוצע ואת סטיית התקן, כולם עם 3 ספרות אחרי הנקודה העשרונית.
- הדפיסו את מספר הקיפול החלש ביותר, בספירה החל מ-1.
עבור אצוות אחרות ו-4:
Fold 1: 0.917
Fold 2: 0.933
Fold 3: 0.883
Fold 4: 0.917
Mean 0.912, std 0.018
Weakest fold: 3נסו בעצמכם
import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
n_folds = int(input())
# אין לשנות את השורות שלהלן: 240 אצוות קומבוצ'ה, 5 מדידות מעבדה לכל אחת; תווית 1 פירושה שהאצווה התקלקלה
X, y = make_classification(n_samples=240, n_features=5, n_informative=3, n_redundant=0,
flip_y=0.08, class_sep=0.9, random_state=2)
model = LogisticRegression(max_iter=1000)
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין