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

V. Categorical Naive Bayes

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

Categorical Naive Bayes, hedef/tahmin değişkenini kategorik olan sınıflandırma algoritmaları için oluşturulmuştur.

Kullanım için "CategoricalNB" kütüphanesinin içe aktarılması gerekmektedir.

from sklearn.naive_bayes import CategoricalNB

Örnek-1: İris veri seti üzerinden, species sütununa CategoricalNB 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 sklearn.naive_bayes import CategoricalNB

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))
#CategoricalNBataması yapılır
Cat=CategoricalNB()

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

#x_test verilerini tahminleme işlemi
predict_Cat=Cat.predict(x_test)
confusion_matrix(y_test,predict_Cat)

Çıktı:

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

Çıktı:

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

Çıktı:

              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00         9
  versicolor       0.67      1.00      0.80         8
   virginica       1.00      0.69      0.82        13

    accuracy                           0.87        30
   macro avg       0.89      0.90      0.87        30
weighted avg       0.91      0.87      0.87        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 %87 olarak tahmin etmiş 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.