Naive Bayes

Kategori: Machine Learning , 06 Aralık 2019 , JanFranco


Naive bayes algoritması, karmaşık veri kümelerini basit bir olasılık hesabı yaparak çözümlemeye çalışır. Koşullu olasılık tekniğini kullanır. Formül aşağıda verilmiştir:


	       P(x|c).P(c)
P(c|x) = --------------
	          P(x)
Kütünhaleri ve veri kümesini alalım. Daha önce bir çok kez yaptığımız için preprocessin aşamasını anlatmadan geçiyorum:


import pandas as pd
from sklearn.impute import SimpleImputer
from sklearn.naive_bayes import GaussianNB, BernoulliNB
from sklearn.metrics import confusion_matrix
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

df = pd.read_csv('veriler.csv')

missing = SimpleImputer()
age = df.iloc[:, [3]].values
age = missing.fit_transform(age)
age = pd.DataFrame(data=age, columns=['age'])

labelEncoder = LabelEncoder()
gender = df.iloc[:, [4]].values
gender = labelEncoder.fit_transform(gender.ravel())
gender = pd.DataFrame(data=gender, columns=['gender'])

oneHotEncoder = OneHotEncoder()
country = df.iloc[:, [0]].values
country = oneHotEncoder.fit_transform(country).toarray()
country = pd.DataFrame(data=country, columns=['fr', 'tr', 'us'])

hw = df.iloc[:, [1, 2]].values
hw = pd.DataFrame(data=hw, columns=['height', 'weight'])

df = pd.concat([country, hw, age, gender], axis=1)
print(df)

x = df.iloc[:, [3, 4, 5]]
y = df.iloc[:, [6]]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=.33, random_state=0)
sklearn kütüphanesinde naive bayes algoritması için birden fazla sınıf mevcut. GaussianNB sürekli veriler için kullanılır. Gauss fonksiyonu baz alınmıştır:


gaussianNB = GaussianNB()
gaussianNB.fit(x_train, y_train.values.ravel())
gaussianNBRes = gaussianNB.predict(x_test)

confusionMatrix = confusion_matrix(y_true=y_test, y_pred=gaussianNBRes)
print("***** Confusion Matrix - Gaussian *****")
print("     E   K")
print("E   ", confusionMatrix[0][0], " ", confusionMatrix[0][1])
print("K   ", confusionMatrix[1][0], " ", confusionMatrix[1][1])

>>

***** Confusion Matrix - Gaussian *****
     E   K
E    0   1
K    6   1
MultiNominalNB ve BernoulliNB sınıfları ise nominal değerler içindir. MultiNominalNB 2'den fazla kategori var ise, BernoulliNB iki sınıf var ise (binary durum, yes - no) kullanılır:


bernoulliNB = BernoulliNB()
bernoulliNB.fit(x_train, y_train.values.ravel())
bernoulliNBRes = bernoulliNB.predict(x_test)

confusionMatrix = confusion_matrix(y_true=y_test, y_pred=bernoulliNBRes)
print("***** Confusion Matrix - Bernoulli *****")
print("     E   K")

>>

***** Confusion Matrix - Bernoulli *****
     E   K
E    1   0
K    7   0
print("E   ", confusionMatrix[0][0], " ", confusionMatrix[0][1])
print("K   ", confusionMatrix[1][0], " ", confusionMatrix[1][1])


Sonraki Yazı: Decision Tree Classifier
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın