Klasifikasi Data Caesarian dengan Menggunakan Algoritma Naive Bayes dengan Python

Gifa Delyani Nursyafitri
5 min readJan 4, 2020
Sumber : https://www.analisis-data.com/2018/11/algoritma-naive-bayes-classifier.html

Holaaa, people!

Balik lagi bareng aku di sini. Di kesempatan ini, kita bakalan bahas tentang klasifikasi dengan Algoritma Naive Bayes. Nah, data yang kita gunakan adalah data Caesarian.

Data tersebut memiliki 6 variabel.

  1. Age atau umur yang terdiri dari 22, 26, 28, 27, 32, 36, 33, 23, 20, 29, 25, 37, 24, 18, 30, 40, 31, 19, 21, 35, 17, dan 38.
  2. Delivery number adalah kelahiran ke berapa, yaitu terdiri dari 1, 2, 3, dan 4.
  3. Delivery time, terdiri dari 0, 1, dan 2 dimana 0 = timely (tepat waktu), 1 = premature, dan 2 = latecomer (telat).
  4. Blood of Pressure atau tekanan darah yang terdiri dari 0, 1, dan 2 dimana 0 = low (rendah), 1 = normal, 2 = high (tinggi).
  5. Heart Problem, yang terdiri dari 0 dan 1 dimana 0 = apt, 1 = inept.
  6. Caesarian, terdiri dari 0 dan 1 dimana 0 = No dan 1 = Yes.

Well, sebelum lebih jauh, kayaknya kita harus tau dulu tentang Algoritma Naive Bayes kan?

Apa sih Algoritma Naive Bayes itu?

Algoritma Naive Bayes merupakan sebuah metoda klasifikasi menggunakan metode probabilitas dan statistik yg dikemukakan oleh ilmuwan Inggris Thomas Bayes. Algoritma Naive Bayes memprediksi peluang di masa depan berdasarkan pengalaman di masa sebelumnya sehingga dikenal sebagai Teorema Bayes. Ciri utama dr Naïve Bayes Classifier ini adalah asumsi yg sangat kuat (naïf) akan independensi dari masing-masing kondisi / kejadian.

Nah, sekarang kita akan membahas langkah-langkah untuk melakukan klasifikasi dengan Algoritma Naive Bayes di python.

Langkah pertama adalah memanggil library yang akan digunakan.

import numpy as np
import pandas as pd

Selanjutnya, masukkan data yang telah satu folder dengan file .ipynb

caesarian = pd.read_csv("caesarian.txt")

Kemudian untuk melihat tampilan beberapa data awal dapat menggunakan perintah berikut:

caesarian.head()

Sehingga akan menghasilkan output sebagai berikut,

Selanjutnya kita akan mencari info dari setiap variabel yang ada,

caesarian.info()

Selanjutnya menentukan variabel independen dan variabel dependen nya.

# Variabel independen
x = caesarian.drop(["caesarian"], axis = 1)
# Variabel dependen
y = caesarian["caesarian"]

Variabel dependennya adalah Caesarian, sedangkan variabel independen nya adalah semua variabel yang ada kecuali Caesarian, yaitu Age, Dev_number, Dev_time, Blood Preasure, Heart Problem.

Klasifikasi Naive Bayes ini terdapat di dalam package Sklearn, sehingga kita harus memanggilnya terlebih dahulu.

from sklearn.model_selection import train_test_split

Langkah selanjutnya adalah melakukan proses training data, dengan random state nya adalah 123. Nilai random state sebenarnya bebas, karena nilai ini digunakan agar hasil data random yang kita dapatkan sama.

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.2, random_state = 123)

Kemudian, kita akan melihat data testing untuk variabel independen.

x_test

Sehingga akan menghasilkan output berikut,

Untuk mengaktifkan fungsi klasifikasi Naive Bayes, dapat menggunakan script berikut,

from sklearn.naive_bayes import GaussianNB
modelnb = GaussianNB()

Kemudian memasukkan data training pada fungsi klasifikasi Naive Bayes.

nbtrain = modelnb.fit(x_train, y_train)
nbtrain.class_count_

Untuk menentukan hasil prediksi data testing, dapat menggunakan script berikut,

y_pred = nbtrain.predict(x_test)
y_pred

Sehingga akan didapatkan output berikut,

Kemudian kita akan membandingkan dengan nilai testing yang sebenarnya,

np.array(y_test)

Dapat dilihat bahwa ada sekitar perbedaan 9 data antara data testing yang diprediksi dengan data testing yang sebenarnya.

Selanjutnya kita dapat mencari nilai probabilitas dari hasil prediksi, sehingga kita dapat melihat kenapa data tersebut dibulatkan menjadi 0 ataupun 1.

nbtrain.predict_proba(x_test)

Hasil yang dilihat adalah yang bagian kanan. Misalkan data pertama 0.86 dibulatkan menjadi 1, data kedua 0.25 dibulatkan menjadi 0, begitu seterusnya.

Kemudian kita akan membuat Confussion Matrix,

from sklearn.metrics import confusion_matrix
confusion_matrix(y_test, y_pred)

Untuk menghasilkan tampilan Confusion Matrix yang lebih rapi dapat menggunakan cara berikut,

y_actual = pd.Series([0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0], name = "actual")
y_pred = pd.Series([1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0], name = "prediction")
df_confusion = pd.crosstab(y_actual, y_pred)
df_confusion

Selanjutnya didapatkan nilai akurasi sebagai berikut,

from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred))

Nilai akurasi yang didapatkan dari hasil ini hanya 0,44 atau 44 %, yang artinya hasil prediksinya belum cukup tepat.

Untuk melihat overall statistik dalam satu kesatuan, dapat menggunakan perintah berikut,

! pip install pycm
from pycm import *
y_actual1 = [0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0]
y_pred1 = [1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0]
print(ConfusionMatrix(y_actual1, y_pred1))

Outputnya akan seperti ini,

Yeay! kini kita telah berhasil melakukan klasifikasi data Caesarian dengan Algoritma Naive Bayes.

Semoga bermanfaat! Feel free to correct me.

Sampai jumpa di postingan selanjutnya.

Referensi:

  1. https://informatikalogi.com/algoritma-naive-bayes/
  2. https://www.analyticsvidhya.com/blog/2017/09/naive-bayes-explained/
  3. http://archive.ics.uci.edu/ml/datasets/Caesarian+Section+Classification+Dataset

--

--

Gifa Delyani Nursyafitri

Ku abadikan disini, karena aku paham betul bahwa ingatan manusia terbatas.