πŸ₯•Praktikum 3

Klasifikasi Naive Bayes dengan Data Multimoda

Intro

Pada percobaan ini, kita akan menggunakan nilai multinomial untuk melakukan klasifikasi dengan Naive Bayes. Nilai multinomial adalah data yang nilainya didapatkan dari proses menghitung. Sehingga, pada konteks fitur, nilai multinomial fitur berdasarkan proses perhitungan (counting) probabilitas kemunculan fitur tersebut dalam sebuah data. Contoh klasik fitur multinomial adalah perhitungan jumlah kata pada klasifikasi teks.Pada percobaan ini, kasus klasifikasi teks diberikan untuk mempermudah pemahaman terhadap algoritma Naive Bayes tipe Multinomial.

Kita akan menggunakan data spam.csv yang berisi data teks sms dengan label spam dan ham. Spam adalah sms sampah, sedangkan ham adalah sebaliknya.

file-download
492KB

Langkah 1 - Load Data

Pada tahap ini kita akan loading data ke dalam data frame dan melakukan inspeksi sederhana untuk memastikan apakah kita perlu proses pra pengolahan data sebelum melakukan ekstraksi fitur dan permodelan.

import numpy as np
import pandas as pd

df = pd.read_csv('spam.csv', encoding='latin-1') # spesifiksi encoding diperlukan karena data tidak menggunakan UTF-8

df.head()
Text
v1
v2
Unnamed: 2

0

ham

Go until jurong point, crazy.. Available only ...

NaN

1

ham

Ok lar... Joking wif u oni...

NaN

2

spam

Free entry in 2 a wkly comp to win FA Cup fina...

NaN

3

ham

U dun say so early hor... U c already then say...

NaN

4

ham

Nah I don't think he goes to usf, he lives aro...

NaN

Terdapat 3 kolom yang tidak bermanfaat untuk proses selanjutnya, maka kita perlu membuang kolom tersebut. Selain itu, untuk memudahkan pembacaan data, kita juga akan mengubah nama kolom v1 yang berupa label dan v2 yang berupa teks sms.

Langkah 2 - Preprocessing

Beberapa hal yang akan dilakukan pada tahap ini yaitu,

  1. Drop kolom yang tidak digunakan

  2. Ubah nama kolom v1 (label) dan v2 (teks sms)

  3. Inspeksi Data

  4. Encode label

  5. Memisahkan fitur dengan label

Langkah 2a - Drop Kolom

Text
v1
v2

0

ham

Go until jurong point, crazy.. Available only ...

1

ham

Ok lar... Joking wif u oni...

2

spam

Free entry in 2 a wkly comp to win FA Cup fina...

3

ham

U dun say so early hor... U c already then say...

4

ham

Nah I don't think he goes to usf, he lives aro...

Langkah 2b - Inspeksi Data

Hasilnya,

Langkah 2c - Encoding Label

Text
Labels
SMS

0

0

Go until jurong point, crazy.. Available only ...

1

0

Ok lar... Joking wif u oni...

2

1

Free entry in 2 a wkly comp to win FA Cup fina...

3

0

U dun say so early hor... U c already then say...

4

0

Nah I don't think he goes to usf, he lives aro...

Langkah 2d - Pisahkan Fitur dengan Label

Langkah 3 - Ekstraksi Fitur

Ekstraksi fitur untuk setiap SMS akan menggunakan konsep Bag of Words. Kita dapat menggunakan fungsi CountVectorizer dari scikit-learn. Akan tetapi untuk mencegah leaking information kita akan melakukan split data terlebih dahulu, baru melakukan transformasi terhadap data training dan testing.

Cek fitur dari proses CountVectorizer.

Langkah 4 - Training dan Evaluasi Model

Kita akan menggunakan algoritma Multinomial Naive Bayes. Fungsi MultinomialNB dari scikit-learn dapat digunakan pada kasus ini.

Hasilnya,

Last updated