Makine Öğrenmesi - Sınıflandırma Algoritmaları

Extreme Gradient Boosting (XGBoost)

Yayın tarihi :16-Oca-22
Bölüm kodlarını ve/veya veri setlerini indir.

Extreme Gradient Boosting (XGBoost), Gradient Boosting algoritmasının verimli ve etkili bir şekilde uygulanmasını sağlayan bir kitaplıktır. Hem regresyon hem de sınıflandırma modellerini eğitmek için kullanılabilir. 

XGBoost, çok iyi bir performans sağladığından dolayı en çok kullanulan makine öğrenmesi kütüphanelerinden biridir. 

XGBoost modülünü kullanabilmek için ilk olarak xgboost'un indirilmesi gerekmektedir.

pip install xgboost

Sınıflandırma pojelerinde kullanabilmek için "XGBClassifier" kütüphanesinin içe aktarılması gerekmektedir.

from xgboost import XGBClassifier

Söz dizimi: XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1, colsample_bynode=1, colsample_bytree=1, enable_categorical=False, gamma=0, gpu_id=-1, importance_type=None, interaction_constraints='', learning_rate=0.300000012, max_delta_step=0, max_depth=6, min_child_weight=1, missing=nan, monotone_constraints='()', n_estimators=100, n_jobs=8, num_parallel_tree=1, predictor='auto', random_state=0, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, subsample=1, tree_method='exact', validate_parameters=1, verbosity=None)

  • n_estimators, ağaç sayısını temsil eder.
  • max_depth, regresyon tahminleyicilerinin maksiumum derinliğini temsil eder.
  • learning_rate, kullanılan öğrenme oranını temsil eder.

Örnek-1: Rasgele olarak sınıflandırma için veri seti oluşturalım(make_classification kütüphanesi ile) ve XGBClassifier kullanalarak tahminleme işlemi yapalım.

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
import warnings
warnings.filterwarnings("ignore")

from sklearn.model_selection import train_test_split

from sklearn.metrics import accuracy_score,precision_score,recall_score,f1_score
from sklearn.metrics import confusion_matrix,classification_report

from sklearn.datasets import make_classification
from xgboost import XGBClassifier
#10000 satırlık 10 sütunluk x değeri ve 1 sütunluk y (hedef) değeri.
X,y=make_classification(n_samples=10000,n_features=10)
print("1. satır X değerleri: {}".format(X[0:1]))
print("1. satır y değeri {}".format(y[0:1]))

Çıktı:

1. satır x değerleri: [[ 0.71755029  0.47605473  1.64020509  0.37168963  0.92120077 -0.59775861
  -1.57939746 -0.43825229  0.89599757  0.83890191]]
1. satır y değeri [0]
#Train ve test işlemlerinde kullanılacak değerleri ayıralım
x_train,x_test,y_train,y_test=train_test_split(X,y,random_state=13,test_size=.2)
x_train.shape,x_test.shape,y_train.shape,y_test.shape

Çıktı:

((8000, 10), (2000, 10), (8000,), (2000,))
#XGBClassifier ataması yapılır
XGB=XGBClassifier()

#Model eğitme işlemi
XGB.fit(x_train,y_train)

#x_test verilerini tahminleme işlemi
predict_XGB=XGB.predict(x_test)
confusion_matrix(y_test,predict_XGB)

Çıktı:

array([[864, 130],
       [168, 838]], dtype=int64)
#confusion_matrix değerlerinin grafikselleştirmesi
sns.heatmap(confusion_matrix(y_test,predict_XGB),annot=True,linewidths=2)

Çıktı:

#Sınıflandırma raporu
print(classification_report(y_test,predict_XGB))

Çıktı:

              precision    recall  f1-score   support

           0       0.84      0.87      0.85       994
           1       0.87      0.83      0.85      1006

    accuracy                           0.85      2000
   macro avg       0.85      0.85      0.85      2000
weighted avg       0.85      0.85      0.85      2000

Sınıflandırma raporunda da görüldüğü gibi XGBClassifier algoritması ile girilen değerlere göre hedef sütununda bulunan  değerleri doğru tahmin etme yüzdesi: accuracy değeri göz önüne alınırsa %85 olarak bulundu.

Paylaş:

Yorum Yap (*Yorumunuza kod eklemek isterseniz Kod Parçacığı Ekle butonuna tıklayarak ekleyebilirsiniz.)

Yorumlar

Henüz hiç yorum yapılmamış, ilk yorum yapan sen ol.