CodeBlanks Logo Icon CodeBlanks

n_estimators

n_estimators, ormandaki ağaç sayısını belirler.

n_estimators

Ağaç sayısı arttıkça orman kararlılaşır ama bir noktadan sonra kazanç durur; aşırı öğrenmeye yol açmaz, yalnızca süreyi uzatır. Bu, random forest'in en rahat ayarıdır:

for n in [1, 10, 50, 200]:
    rf = RandomForestClassifier(n_estimators=n, random_state=0).fit(X_train, y_train)
    print(n, round(rf.score(X_test, y_test), 3))

Pratik kural: skor durulana kadar artır, sonra süreye göre karar ver; 100-500 çoğu problemde yeterlidir.

Diğer önemli ayarlar

Ormanın karmaşıklığını asıl belirleyenler ağaç başına ayarlardır:

RandomForestClassifier(
    n_estimators=300,
    max_features="sqrt",    # bölmede aday özellik; küçük = daha çeşitli ağaç
    max_depth=None,         # sınırsız ağaçlar varsayılan
    min_samples_leaf=1,     # büyütmek düzgünleştirir
    n_jobs=-1,              # ağaçlar paralel eğitilir
)

Ağaçlar birbirinden bağımsız olduğu için n_jobs=-1 eğitimi çekirdek sayısıyla neredeyse doğrusal hızlandırır.

Uygulama Ağaç sayısının etkisi

n_estimators = 1, 10, 100 için orman eğit (random_state=0). Her satırda ağaç sayısını ve test doğruluğunu round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)

for n in [1, 10, 100]:
    rf = RandomForestClassifier(n_estimators=n, random_state=0).fit(X_train, y_train)
    print(n, round(rf.score(X_test, y_test), 3))

Beklenen çıktı

1 0.881
10 0.951
100 0.944

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 n_estimators'ı çok büyütmek aşırı öğrenmeye yol açar mı?

  • Yalnızca az veride
  • Hayır; yalnızca süre artar Doğru cevap
  • Evet, her zaman
  • Yalnızca regresyonda

Açıklama: Daha çok ağaç ortalamayı yalnızca daha kararlı yapar.

2 Her bölmede özelliklerin karekökü kadarını değerlendir.

Soru
rf = RandomForestClassifier(max_features=____)
Cevap
rf = RandomForestClassifier(max_features="sqrt")

Açıklama: "sqrt" sınıflandırmada varsayılandır.

3 Ayarları eşleştir.

Kavram Anlamı
n_estimators Ağaç sayısı
max_features Ağaç çeşitliliği
min_samples_leaf Yaprak düzgünlüğü
n_jobs Paralel eğitim

Orta seviye bölümündeki tüm dersler