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.
GaussianNB()
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 |