עומק העץ
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 29 מתוך 58.
עץ יכול להמשיך לשאול שאלות עד שלכל שורת אימון תהיה תשובה משלה. אז הוא שינן, ולא למד:
עצים עמוקים לומדים את הרעש שבדוגמאות האימון שלהם, ולכן דיוק הבדיקה מגיע לשיא ואז יורד. נסו כמה עומקים:
train = []
test = []
for d in range(1, 13):
tree = DecisionTreeClassifier(max_depth=d, random_state=0)
tree.fit(X_train, y_train)
train.append(tree.score(X_train, y_train))
test.append(tree.score(X_test, y_test))בירחים האלה, עומק 6 נותן את התוצאות הטובות ביותר בשורות חדשות: השאר אותו כך, לעת עתה. מעומק 8, העץ מושלם בשורות ששינן, וגרוע יותר בשאר.
אתגר
בינוניסקר טלסקופי ממיין עצמים בשמיים לכוכבים ולגלקסיות. קוד הפתיחה מפצל אותם ומגדיר את התרשים.
- עבור כל עומק ב־
depths, אמנו עץ (random_state=0) ושמרו את שני ערכי הדיוק. - הדפיסו את העומק עם דיוק הבדיקה הטוב ביותר, כמו למטה.
- שרטטו את שני הקווים, עם התוויות
trainו־test, סמנו את העומק הטוב ביותר באמצעותax.axvlineמקווקו, הוסיפו מקרא והציגו את התרשים.
עבור ממיין מנגו:
Best depth: 5, test accuracy 0.867לאחר מכן Coddy מתאר את התרשים שלכם. התרשים שלהם נראה כך:
נסו בעצמכם
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# שורה אחת לכל עצם שמימי בסקר טלסקופי: 1 ב-galaxy פירושו גלקסיה, 0 פירושו כוכב
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)
fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין