CodeBlanks Logo Icon CodeBlanks

Özet - Ensemble

Bu grupta voting, bagging, boosting ve stacking'i öğrendin.

Özet: topluluklar

Bu grupta:

  • Topluluk, farklı hatalar yapan modelleri birleştirir; çeşitlilik şarttır.
  • VotingClassifier: sert (çoğunluk) ve yumuşak (olasılık ortalaması), weights.
  • BaggingClassifier: kararsız modellerin varyansını azaltır.
  • Boosting sapmayı azaltır; stump'larda bagging değil boosting işe yarar.
  • StackingClassifier: katman dışı tahminlerle üst model.

Topluluklar genellikle bir-iki puan kazandırır ama daha yavaş ve daha zor yorumlanır; bu bedele değip değmediği probleme bağlıdır.

Uygulama Toplulukları karşılaştır

Üç tek modeli, yumuşak VotingClassifier'ı ve StackingClassifier'ı (üst model lojistik, cv=5) 5 katlı CV ile karşılaştır. Her satırda adı ve ortalamayı round(..., 3) ile yazdır (sırayla: lr, knn, agac, oylama, yigin).

Başlangıç kodu

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier

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.3, random_state=2, stratify=y)
modeller = [("lr", make_pipeline(StandardScaler(), LogisticRegression())), ("knn", make_pipeline(StandardScaler(), KNeighborsClassifier())), ("agac", DecisionTreeClassifier(max_depth=4, random_state=0))]
from sklearn.ensemble import VotingClassifier, StackingClassifier
from sklearn.model_selection import cross_val_score

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier

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.3, random_state=2, stratify=y)
modeller = [("lr", make_pipeline(StandardScaler(), LogisticRegression())), ("knn", make_pipeline(StandardScaler(), KNeighborsClassifier())), ("agac", DecisionTreeClassifier(max_depth=4, random_state=0))]
from sklearn.ensemble import VotingClassifier, StackingClassifier
from sklearn.model_selection import cross_val_score

aday = modeller + [("oylama", VotingClassifier(modeller, voting="soft")), ("yigin", StackingClassifier(modeller, final_estimator=LogisticRegression(), cv=5))]
for ad, m in aday:
    print(ad, round(cross_val_score(m, X, y, cv=5).mean(), 3))

Beklenen çıktı

lr 0.981
knn 0.965
agac 0.916
oylama 0.958
yigin 0.977

Soru ve cevaplar

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

1 Yumuşak oylama için hangisi gereklidir?

  • Tüm modellerin aynı tür olması
  • Tek sayıda model
  • Ölçeklenmemiş veri
  • Tüm modellerin predict_proba sunması Doğru cevap

Açıklama: Olasılık ortalaması için her modelin olasılık üretmesi gerekir.

2 Üst modelin özgün özellikleri de görmesini sağla.

Soru
st = StackingClassifier(modeller, final_estimator=LogisticRegression(), ____=True)
Cevap
st = StackingClassifier(modeller, final_estimator=LogisticRegression(), passthrough=True)

Açıklama: passthrough=True özgün X'i temel tahminlerin yanına ekler.

3 Araçları eşleştir.

Kavram Anlamı
VotingClassifier Oylama
BaggingClassifier Bootstrap kopyaları
AdaBoostClassifier Sıralı ağırlıklandırma
StackingClassifier Üst model

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