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

LightGBM (Hafif Gradyan Artırma Makinesi)

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

LightGBM (Light Gradient Boosted Machine - Hafif Gradyan Artırma Makinesi), modelin verimliğini artırmak ve bellek kullanımını azaltmak için kullanılan bir kütüphanedir.

XGBoost ile birlikte popülerliği artan bir kütüphanedir.

LightGBM modülünü kullanabilmek için ilk olarak lightgbm'in indirilmesi gerekmektedir.

pip install lightgbm

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

from lightgbm import LGBMClassifier

Söz dizimi: LGBMRegressor(boosting_type='gbdt', num_leaves=31, max_depth=- 1, learning_rate=0.1, n_estimators=100, subsample_for_bin=200000, objective=None, class_weight=None, min_split_gain=0.0, min_child_weight=0.001, min_child_samples=20, subsample=1.0, subsample_freq=0, colsample_bytree=1.0, reg_alpha=0.0, reg_lambda=0.0, random_state=None, n_jobs=- 1, importance_type='split', **kwargs)

Örnek-1: İris veri seti üzerinden, species sütununa LGBMClassifier sınıflandırma algoritmasını uygulayalı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 lightgbm import LGBMClassifier

Keşifsel Veri Analizi EDA

#Veri seti okunur
df=sns.load_dataset("iris")
df.head()

Çıktı:

# Veri seti hakkında bilgi 
df.info()

Çıktı:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 150 entries, 0 to 149
Data columns (total 5 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   sepal_length  150 non-null    float64
 1   sepal_width   150 non-null    float64
 2   petal_length  150 non-null    float64
 3   petal_width   150 non-null    float64
 4   species       150 non-null    object 
dtypes: float64(4), object(1)
memory usage: 6.0+ KB
#species sütunu eleman sayıları
df.species.value_counts()

Çıktı:

setosa        50
versicolor    50
virginica     50
Name: species, dtype: int64
#Veri seti açıklamaları
df.describe()

Çıktı:

#Sütunların birbirleri ile korelasyonu
df.corr()

Çıktı:

#Korelasyon görüntülenmesi
sns.heatmap(df.corr(),annot=True)

Çıktı:

#türe göre sepal ve petal length
sns.scatterplot(x="sepal_length",y="petal_length",hue="species",data=df)

Çıktı:

Model Oluşturma İşlemleri

#x(bağımsız değişkenler) ve y(hedef/tahmin değişkeni) ataması yapılır.
x,y=df.drop("species",axis=1),df[["species"]]
#train ve test verileri ayrılır
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=13)
x_train.shape,x_test.shape,y_train.shape,y_test.shape

Çıktı:

((120, 4), (30, 4), (120, 1), (30, 1))
#LGBMClassifier ataması yapılır
LGBM=LGBMClassifier()

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

#x_test verilerini tahminleme işlemi
predict_LGBM=LGBM.predict(x_test)
confusion_matrix(y_test,predict_LGBM)

Çıktı:

array([[ 9,  0,  0],
       [ 0,  8,  0],
       [ 0,  2, 11]], dtype=int64)
#confusion_matrix değerlerinin grafikselleştirmesi
sns.heatmap(confusion_matrix(y_test,predict_LGBM),annot=True,linewidths=2)

Çıktı:

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

Çıktı:

              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00         9
  versicolor       0.80      1.00      0.89         8
   virginica       1.00      0.85      0.92        13

    accuracy                           0.93        30
   macro avg       0.93      0.95      0.94        30
weighted avg       0.95      0.93      0.93        30

Sınıflandırma raporunda da görüldüğü gibi girilen 4 değere ('sepal_length', 'sepal_width', 'petal_length', 'petal_width') göre species sütununda bulunan türleri doğru tahmin etme yüzdesi accuracy değeri göz önüne alınırsa %93 olarak tahmin etmiş olundu. 

Model Tahminleme İşlemleri

LGBMClassifier algoritması ile oluşturulan modele gireceğimiz değerlerin türünü tahmin ettirmek için;

LGBM.predict([[2.1,5.4,7.3,2.0]]) #'sepal_length', 'sepal_width', 'petal_length', 'petal_width'

Çıktı:

array(['virginica'], dtype='<U10')

Girilen değerlerin "virginica" türüne ait olduğu tahmin edilmiş oldu.

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.