عمق الشجرة
جزء من قسم التعلّم الخاضع للإشراف في رحلة 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 عبر الإنترنت