Python ile Adaboost Sınıflandırıcı

Adaboost sınıflandırıcısı temelde farklı sınıflandırıcıların ağırlıklandırılarak birleştirilmesinden güçlü bir sınıflandırıcı elde edilmesidir. Direk koda geçelim.

Önce kütüphaneleri ekleyelim.

# Kütüphane ekleme
from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets

# train_test_split fonsiyonunu içeri aktarma
from sklearn.model_selection import train_test_split

# scikit-learn metriklerinin modülünü içeri aktarma
from sklearn import metrics

İris veri setini yükleyelim

iris = datasets.load_iris()
X = iris.data
y = iris.target

Veri setini eğitim ve test için ayıralım.

X_egitim, X_test, y_egitim, y_test = train_test_split(X, y, test_size=0.3) # 70% eğitim ve 30% test 

Adaboost sınıflandırıcı modelini kuralım.

# adaboost sınıflandırıcı objesini oluşturma
abc = AdaBoostClassifier(n_estimators=50,
                         learning_rate=1)

# Adaboost Sınıflandırıcı Eğitimi
model = abc.fit(X_egitim, y_egitim)

# Test veri seti için modeli çalıştıralım
y_tahmin = model.predict(X_test)

AdaboostClassifer objesinin base_estimator diye bir parametresi de bulunmaktadır. Herhangi bir seçimde bulunmazsak DecisionTreeClassifier temel sınıflandırıcı olarak kullanılır. Şimdi de modelin doğruluk oranını bulalım.

# Modelin Doğruluk oranı
print("Dogruluk:",metrics.accuracy_score(y_test, y_tahmin))
>> Dogruluk: 0.9555555555555556

%95,55 oranında bir doğruluk elde ettik. Bu iyi bir doğruluk oranı. Şimdi eğer ki base_estimator olarak SVC yani Support Vector Classifier kullansaydık ne olurdu onu görelim.

# Kütüphaneleri Yükleme
from sklearn.ensemble import AdaBoostClassifier

# Support Vector Classifier içeri aktarma
from sklearn.svm import SVC
from sklearn import metrics
svc=SVC(probability=True, kernel='linear')

abc =AdaBoostClassifier(n_estimators=50, base_estimator=svc,learning_rate=1)

iris = datasets.load_iris()
X = iris.data
y = iris.target

X_egitim, X_test, y_egitim, y_test = train_test_split(X, y, test_size=0.3) # 70% eğitim ve 30% test

model = abc.fit(X_egitim, y_egitim)


y_tahmin = model.predict(X_test)


# Model Accuracy, how often is the classifier correct?
print("Dogruluk:",metrics.accuracy_score(y_test, y_tahmin))
>> Dogruluk: 0.9777777777777777

Gördüğünüz gibi doğruluk oranı %97,77'e yükseldi. Bu veri setinde SVC daha iyi sonuç veriyor gibi görünse de farklı sınıflandırıcılar farklı veri setleri üzerinde farklı doğruluk oranına sahiptir ve tekrar tekrar çalıştırınca doğruluk oranı değişmekte olduğunu farkettim.

Kaggle üzerinde oluşturduğum kernel'dan bilgisayarınıza python yüklemeden de deneyebilirsiniz.
https://www.kaggle.com/aybakana/kernel9c6dda8245

Comments