لماذا تنجح الغابات
جزء من قسم التعلّم الخاضع للإشراف في رحلة Machine Learning على Coddy. الدرس 42 من 58.
تختلف أشجار الغابة عن قصد. تُدرَّب كل شجرة على عينة معادة السحب: صفوف تُسحب عشوائيًا مع الإرجاع، لذا يتكرر بعضها ولا يُختار بعضها الآخر.
يختار كل سؤال أيضًا عددًا قليلًا من السمات عشوائيًا. ترتكب الأشجار أخطاءً مختلفة، ويلغي بعضها بعضًا بالتصويت. نوعان من اليراعات:
تحتفظ الغابة بشريط فقط حيث تتفق معظم الأشجار.
توجد الأشجار في forest.estimators_:
third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))يطبع هذا 0.737. وتحقق الغابة بأكملها نتيجة 0.895.
التحدي
متوسطهل تتفوّق الغابة على أشجارها؟ يدرّب القالب الأولي forest باستخدام riders.csv، الذي يحتوي على راكبي دراجات أنهوا رحلة بطول 160 km في أقل من 6 hours أو لم ينهُوها، ويُعِدّ المخطط.
- احسب درجة كل شجرة في الغابة على صفوف الاختبار.
- اعرض الدرجات في مدرّج تكراري باستخدام
bins=10، وحدّدforest_accبخط عمودي أحمر. - اطبع عدد الأشجار التي تتفوّق عليها الغابة.
طبعت رحلة أخرى The forest beats 88 of its 100 trees ورسمت هذا:
ثم يصف 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")
# اكتب شيفرتك أدناه
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس التعلّم الخاضع للإشراف
تدرّب بنفسك: مترجم Python عبر الإنترنت