חיפוש רשת
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 39 מתוך 58.
כוונון ידני פירושו לולאות בתוך לולאות. GridSearchCV מבצע אימות צולב לכל שילוב של הגדרות ושומר את הטוב ביותר. עבור 300 נסיעות בחשמלית, באיחור או בזמן:
מילון ממפה כל הגדרה לערכים שיש לנסות. min_samples_leaf הוא מספר השורות הקטן ביותר שעלה יכול להכיל:
from sklearn.model_selection import GridSearchCV
grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")זה מדפיס:
{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813החיפוש מאמן מחדש את המודל המנצח על כל שורות האימון, כך ש־search.score בודק אותו פעם אחת. שמור על רשתות קטנות: כל תא עולה 5 התאמות.
אתגר
בינוניצוות לוויין מסווג פיקסלים כעננים או כשמיים בהירים באמצעות k-NN. התוכנית קוראת את ערך k הגדול ביותר לבדיקה; קוד הפתיחה מחלק את הנתונים.
- בצע חיפוש רשת עבור כל ערך k אי-זוגי מ-1 ועד למספר הזה, עם
weights"uniform"או"distance"(לשכנים קרובים יותר יש משקל רב יותר),cv=5. - הדפס את ההגדרות הטובות ביותר, את הדיוק שלהן באימות צולב ואת הדיוק בבדיקה, עם 3 ספרות עשרוניות.
עבור פיקסלים אחרים ועם 7:
Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800נסו בעצמכם
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
max_k = int(input())
# אל תשנו את השורות שלהלן: 360 פיקסלים מלוויין, לכל אחד 4 מדידות אור; התווית 1 מציינת ענן
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין