יערות אקראיים
חלק מהיחידה למידה מונחית במסלול ה-Machine Learning של Coddy. שיעור 41 מתוך 58.
עץ החלטה אחד אינו יציב: שינוי של כמה שורות אימון משנה את השאלות שלו. בפרק הזה נהפוך את העצים ליציבים באמצעות שאילת שאלות של רבים מהם.
יער אקראי מאמן עצים רבים ונותן להם להצביע. כאן שבעה עצים משיבים לגבי גייזר אחד:
בקוד, זהו מודל נוסף להתאמה:
from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(forest.score(X_test, y_test))ב-300 ימים של גייזרים, זה מדפיס 0.893, בעוד שעץ אחד קיבל ציון 0.813. n_estimators הוא מספר העצים.
מצביעים רבים, פחות טעויות.
אתגר
בינוניבית ספר לכלבי נחייה רוצה לדעת מראש אילו גורים יוסמכו. קוד ההתחלה מפצל את puppies.csv, מחשב את הציון של עץ אחד וקורא מספר של עצים.
- אמנו יער עם מספר העצים הזה (
random_state=0) והדפיסו את דיוקו במבחן. - הדפיסו איזה מודל מנצח ובכמה, או
A tie.
עבור בית ספר אחר ו-50:
Single tree: 0.740
Forest: 0.860
The forest wins by 0.120לאחר מכן נסו 1: יער עם עץ אחד מצליח באופן מפתיע לרעה. השיעור הבא מסביר למה.
נסו בעצמכם
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
# גורים בבית ספר לכלבי נחייה: רוגע, ריכוז ותגובת בהלה לרעשים חזקים (1 עד 10),
# משקל, מספר החודשים עם המשפחה שגידלה אותם, והאם הוכשרו ככלבי נחייה (1) או לא (0)
puppies = pd.read_csv("puppies.csv")
X = puppies[["calmness", "focus", "noise_startle", "weight_kg", "months_with_family"]]
y = puppies["qualified"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
# אל תשנו את השורות שלהלן: עץ אחד שצריך לנצח
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train, y_train)
tree_acc = tree.score(X_test, y_test)
print(f"Single tree: {tree_acc:.3f}")
# כתבו את הקוד שלכם למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה למידה מונחית
תרגלו בעצמכם: קומפיילר Python אונליין