Menu
CoddyTech

עומק העץ

חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 29 מתוך 58.

עץ יכול להמשיך לשאול שאלות עד שלכל שורת אימון תהיה תשובה משלה. אז הוא שינן, ולא למד:

דיוק האימון והבדיקה של עצים בעומקים 1 עד 12 על נתוני חצי ירח רועשים. דיוק האימון עולה ל-1.0 עד עומק 8, עם התווית שינון. דיוק הבדיקה מגיע לשיא של 0.907 בעומק 6, המסומן בקו מקווקו, ואז יורד לכ-0.87

עצים עמוקים לומדים את הרעש שבדוגמאות האימון שלהם, ולכן דיוק הבדיקה מגיע לשיא ואז יורד. נסו כמה עומקים:

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, העץ מושלם בשורות ששינן, וגרוע יותר בשאר.

challenge icon

אתגר

בינוני

סקר טלסקופי ממיין עצמים בשמיים לכוכבים ולגלקסיות. קוד הפתיחה מפצל אותם ומגדיר את התרשים.

  1. עבור כל עומק ב־depths, אמנו עץ (random_state=0) ושמרו את שני ערכי הדיוק.
  2. הדפיסו את העומק עם דיוק הבדיקה הטוב ביותר, כמו למטה.
  3. שרטטו את שני הקווים, עם התוויות train ו־test, סמנו את העומק הטוב ביותר באמצעות ax.axvline מקווקו, הוסיפו מקרא והציגו את התרשים.

עבור ממיין מנגו:

Best depth: 5, test accuracy 0.867

לאחר מכן Coddy מתאר את התרשים שלכם. התרשים שלהם נראה כך:

תרשים שכותרתו «בשל או לא?» ובו עומק העץ נע בין 1 ל־10: קו כחול של אימון שעולה לכ־0.98, קו כתום של בדיקה שמגיע לשיא של כמעט 0.87 בעומק 5, וקו אנכי מקווקו שם, עם מקרא

נסו בעצמכם

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")

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה למידה מונחית

תרגלו בעצמכם: קומפיילר Python אונליין