Menu
CoddyTech
flag Ar iconالعربيةdown icon

عمق الشجرة

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