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

لماذا تنجح الغابات

جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 42 من 58.

تختلف أشجار الغابة عن قصد. تُدرَّب كل شجرة على عينة معادة السحب: صفوف تُسحب عشوائيًا مع الإرجاع، لذا يتكرر بعضها ولا يُختار بعضها الآخر.

يختار كل سؤال أيضًا عددًا قليلًا من السمات عشوائيًا. ترتكب الأشجار أخطاءً مختلفة، ويلغي بعضها بعضًا بالتصويت. نوعان من اليراعات:

مخططان يوضحان 150 من اليراعات، طول الومضة أفقيًا وفترة التوقف رأسيًا، ودوائر زرقاء لأحد النوعين ومثلثات حمراء للنوع الآخر. على اليسار، شجرة واحدة: حدودها لها شرائط رفيعة تمتد نحو يراعات منفردة. على اليمين، غابة من 100 شجرة: حد واحد سلس بين المجموعتين

تحتفظ الغابة بشريط فقط حيث تتفق معظم الأشجار.

توجد الأشجار في forest.estimators_:

third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))

يطبع هذا 0.737. وتحقق الغابة بأكملها نتيجة 0.895.

challenge icon

التحدي

متوسط

هل تتفوّق الغابة على أشجارها؟ يدرّب القالب الأولي forest باستخدام riders.csv، الذي يحتوي على راكبي دراجات أنهوا رحلة بطول 160 km في أقل من 6 hours أو لم ينهُوها، ويُعِدّ المخطط.

  1. احسب درجة كل شجرة في الغابة على صفوف الاختبار.
  2. اعرض الدرجات في مدرّج تكراري باستخدام bins=10، وحدّد forest_acc بخط عمودي أحمر.
  3. اطبع عدد الأشجار التي تتفوّق عليها الغابة.

طبعت رحلة أخرى The forest beats 88 of its 100 trees ورسمت هذا:

مدرّج تكراري بعنوان الغابة وأشجارها: دقّات اختبار الأشجار من نحو 0.53 إلى 0.85، ومعظمها قريب من 0.70، وخط عمودي أحمر قرب 0.77، إلى يمين معظم الأعمدة

ثم يصف Coddy مخططك.

جرّب بنفسك

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# المشاركون في رحلة دراجات خيرية لمسافة 160 km: أنهوا الرحلة في أقل من 6 ساعات (1) أو لم ينهُوها (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy()  # مصفوفة بسيطة، بالشكل الذي تتوقعه أشجار الغابة
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)

fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")

# اكتب شيفرتك أدناه
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس التعلّم الخاضع للإشراف

تدرّب بنفسك: مترجم Python عبر الإنترنت