Python ile Ağaç Tabanlı Modellerle Machine Learning
Elie Kawerk
Data Scientist
Anlaşılması kolay.
Yorumlaması kolay.
Kullanımı kolay.
Esnek: doğrusal olmayan bağımlılıkları yakalar.
Ön işleme: özellikleri standartlaştırma/normalize etme gerekmez, ...
Sınıflandırma: yalnızca ortogonal karar sınırları üretir.
Eğitim kümesindeki küçük değişimlere duyarlıdır.
Yüksek varyans: kısıtsız CART'lar aşırı uyum gösterebilir.
Çözüm: topluluk öğrenme.
Aynı veri üzerinde farklı modeller eğit.
Her model tahmin yapsın.
Meta-model: bireysel tahminleri birleştirir.
Nihai tahmin: daha sağlam, hata eğilimi daha az.
En iyi sonuç: modeller farklı şekillerde yetkindir.

İkili sınıflandırma görevi.
$N$ sınıflandırıcı tahmin yapar: $P_1$, $P_2$, ..., $P_N$; $P_i$ = 0 veya 1.
Meta-model tahmini: sert oylama.

# Doğruluk hesaplama ve veri bölme fonksiyonlarını içe aktar
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
# Modelleri ve VotingClassifier meta-modelini içe aktar
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier as KNN
from sklearn.ensemble import VotingClassifier
# Tekrarlanabilirlik için tohum
SEED = 1
# Veriyi %70 eğitim, %30 test olarak böl X_train, X_test, y_train, y_test = train_test_split(X, y, test_size= 0.3, random_state= SEED) # Bireysel sınıflandırıcıları başlat lr = LogisticRegression(random_state=SEED) knn = KNN() dt = DecisionTreeClassifier(random_state=SEED)# (sınıflandırıcı_adı, sınıflandırıcı) ikililerini içeren listeyi tanımla classifiers = [('Logistic Regression', lr), ('K Nearest Neighbours', knn), ('Classification Tree', dt)]
# Sınıflandırıcıları içeren tanımlı liste üzerinde döngü
for clf_name, clf in classifiers:
# Eğitimi uygula
clf.fit(X_train, y_train)
# Test kümesinin etiketlerini tahmin et
y_pred = clf.predict(X_test)
# Test kümesindeki doğruluğu değerlendir
print('{:s} : {:.3f}'.format(clf_name, accuracy_score(y_test, y_pred)))
Logistic Regression: 0.947
K Nearest Neighbours: 0.930
Classification Tree: 0.930
# Bir VotingClassifier 'vc' oluştur
vc = VotingClassifier(estimators=classifiers)
# 'vc'yi eğit ve test etiketlerini tahmin et
vc.fit(X_train, y_train)
y_pred = vc.predict(X_test)
# 'vc'nin test doğruluğunu değerlendir
print('Voting Classifier: {.3f}'.format(accuracy_score(y_test, y_pred)))
Voting Classifier: 0.953
Python ile Ağaç Tabanlı Modellerle Machine Learning