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.
İris veri setini yükleyelim
Veri setini eğitim ve test için ayıralım.
Adaboost sınıflandırıcı modelini kuralım.
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.
%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.
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
Ö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
Post a Comment