๐Ÿ“„Praktikum 4 (Opsional)

Klasifikasi Naive Bayes Pada Data Multinomial

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

492KB
Open

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()
v1
v2
Unnamed: 2
Unnamed: 3
Unnamed: 4

0

ham

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

NaN

NaN

NaN

1

ham

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

NaN

NaN

NaN

2

spam

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

NaN

NaN

NaN

3

ham

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

NaN

NaN

NaN

4

ham

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

NaN

NaN

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

Pra Pengolahan Data

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

Drop Kolom

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...

Ubah Nama Kolom V1 dan V2

Labels
SMS

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...

Inspeksi Data

Encode Label

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...

Memisahkan Fitur dengan Label

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.

Training dan Evaluasi Model

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

Last updated

Was this helpful?