עקומות למידה
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 33 מתוך 58.
האם נתונים נוספים ישפרו את המודל שלך? עקומת למידה מראה זאת: הדיוק במבחן ככל שקבוצת האימון גדלה. כאן, עץ עמוק על נתוני שתי ירחיות:
העץ זוכר כל קבוצת אימון, ובכל זאת כל שורה נוספת מלמדת אותו משהו אמיתי. מודלים גמישים מפיקים את התועלת המרבית מנתונים.
אימון על n שורות האימון הראשונות, ואז חישוב הציון על אותן שורות בדיקה בכל פעם:
sizes = [25, 50, 100, 200, 400, 800]
test_scores = []
for n in sizes:
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train[:n], y_train[:n])
test_scores.append(tree.score(X_test, y_test))
ax.plot(sizes, test_scores, marker="o")עדיין מטפסים בקצה הימני? נתונים נוספים יעזרו.
אתגר
בינוניהאם הקלטות נוספות יעזרו להבחין בין שני מיני ינשופים? קוד הפתיחה מפצל 600 קריאות ומכין את שני המודלים ואת התרשים.
- עבור כל
nב-sizes, אמנו את שני המודלים על שורות האימון הראשונותn; שמרו את דיוקי הבדיקה שלהם. - הדפיסו את השיפור של כל מודל, הציון האחרון פחות הראשון, עם 3 ספרות אחרי הנקודה העשרונית.
- שרטטו את שניהם מול
sizes, עםmarker="o", תוויותlogisticו-tree, ומקרא.
ינשופים מיער אחר מציגים:
Logistic gains 0.053 from more data
Tree gains 0.160 from more dataומציירים את התרשים הזה. לאחר מכן Coddy מתאר את שלך.
נסו בעצמכם
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
# אין לשנות את השורות שלהלן: 600 קריאות של ינשופים, גובה הצליל (Hz) ומשך הקריאה (s)
rng = np.random.default_rng(23)
pitch = np.round(rng.uniform(300, 900, 600))
length = np.round(rng.uniform(0.2, 2.0, 600), 2)
# מין 1, לילית מצויה, משמיע קריאות ארוכות יותר ביחס לגובה הצליל שלהן; כמה רישומי שטח שגויים
longer = length > 0.5 + 6.4 * ((pitch - 600) / 600) ** 2
wrong_note = rng.random(600) < 0.05
species = np.where(longer != wrong_note, 1, 0)
X = np.column_stack([pitch, length])
X_train, X_test, y_train, y_test = train_test_split(X, species, test_size=0.25, random_state=0)
sizes = [25, 50, 100, 200, 400]
logistic = LogisticRegression(max_iter=1000)
tree = DecisionTreeClassifier(random_state=0)
fig, ax = plt.subplots()
ax.set_title("Owl Calls: Learning Curves")
ax.set_xlabel("Training rows")
ax.set_ylabel("Test accuracy")
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין