Gaussian Naive Bayes#

Gaussian Naive Bayes (Gaussian NB) adalah sebuah metode klasifikasi yang termasuk dalam keluarga Naive Bayes. Metode ini didasarkan pada Teorema Bayes dengan asumsi bahwa fitur-fitur yang ada dalam dataset adalah independen secara kondisional terhadap kelasnya. Dalam Gaussian NB, diasumsikan bahwa distribusi fitur-fitur numerik atau kontinu mengikuti distribusi Gaussian (distribusi normal).

Gaussian NB cocok digunakan ketika data numerik atau kontinu yang ada dalam dataset mengikuti distribusi Gaussian atau mendekati distribusi Gaussian. Metode ini sering digunakan dalam kasus klasifikasi yang melibatkan data seperti pengenalan pola, klasifikasi teks, atau analisis sentimen.

Dalam proses pelatihan, Gaussian NB mengestimasi parameter-parameter distribusi Gaussian untuk setiap kelas dan menggunakan informasi ini untuk menghitung probabilitas posterior pada tahap prediksi. Dalam klasifikasi biner, Gaussian NB menggunakan aturan probabilitas Bayes untuk memprediksi kelas yang paling mungkin berdasarkan distribusi fitur-fitur.

Meskipun memiliki asumsi yang sederhana tentang independensi fitur, Gaussian NB dapat memberikan performa yang baik dalam banyak kasus, terutama ketika asumsi distribusi Gaussian memenuhi kondisi data.

GaussianNB dari Data IRIS#

mengimpor pustaka NumPy, Matplotlib, dan Pandas. NumPy digunakan untuk komputasi numerik, Matplotlib untuk visualisasi data, dan Pandas untuk manipulasi dan analisis data.

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

membaca dataset Iris dari URL yang diberikan dan menyimpannya dalam variabel dataset. Kemudian, atribut-atribut bunga Iris disimpan dalam variabel X, dan label klasifikasinya disimpan dalam variabel y. Akhirnya, lima baris pertama dari dataset dicetak untuk inspeksi awal.

dataset = pd.read_csv('https://raw.githubusercontent.com/mk-gurucharan/Classification/master/IrisDataset.csv')
X = dataset.iloc[:,:4].values
y = dataset['species'].values
dataset.head(5)
sepal_length sepal_width petal_length petal_width species
0 5.1 3.5 1.4 0.2 setosa
1 4.9 3.0 1.4 0.2 setosa
2 4.7 3.2 1.3 0.2 setosa
3 4.6 3.1 1.5 0.2 setosa
4 5.0 3.6 1.4 0.2 setosa

menggunakan pustaka scikit-learn (sklearn) untuk membagi dataset menjadi subset data pelatihan dan pengujian, serta melakukan penskalaan fitur

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2)
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

menggunakan pustaka scikit-learn (sklearn) untuk melatih model klasifikasi Naive Bayes Gaussian pada subset data pelatihan yang telah dipisahkan sebelumnya

from sklearn.naive_bayes import GaussianNB
classifier = GaussianNB()
classifier.fit(X_train, y_train)
GaussianNB()
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
y_pred = classifier.predict(X_test) 
y_pred
array(['virginica', 'virginica', 'virginica', 'versicolor', 'virginica',
       'versicolor', 'setosa', 'versicolor', 'setosa', 'versicolor',
       'versicolor', 'virginica', 'versicolor', 'versicolor',
       'versicolor', 'virginica', 'versicolor', 'virginica', 'virginica',
       'setosa', 'versicolor', 'setosa', 'virginica', 'virginica',
       'virginica', 'versicolor', 'versicolor', 'versicolor', 'virginica',
       'virginica'], dtype='<U10')

menggunakan pustaka scikit-learn (sklearn) untuk menghitung matriks kebingungan (confusion matrix) dan akurasi dari model klasifikasi yang telah dilatih

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
from sklearn.metrics import accuracy_score 
print ("Accuracy : ", accuracy_score(y_test, y_pred))
cm
Accuracy :  0.9666666666666667
array([[ 4,  0,  0],
       [ 0, 12,  0],
       [ 0,  1, 13]], dtype=int64)
df = pd.DataFrame({'Real Values':y_test, 'Predicted Values':y_pred})
df
Real Values Predicted Values
0 virginica virginica
1 virginica virginica
2 virginica virginica
3 versicolor versicolor
4 virginica virginica
5 versicolor versicolor
6 setosa setosa
7 versicolor versicolor
8 setosa setosa
9 versicolor versicolor
10 versicolor versicolor
11 virginica virginica
12 versicolor versicolor
13 versicolor versicolor
14 virginica versicolor
15 virginica virginica
16 versicolor versicolor
17 virginica virginica
18 virginica virginica
19 setosa setosa
20 versicolor versicolor
21 setosa setosa
22 virginica virginica
23 virginica virginica
24 virginica virginica
25 versicolor versicolor
26 versicolor versicolor
27 versicolor versicolor
28 virginica virginica
29 virginica virginica