Categorical data adalah kumpulan informasi yang berbentuk kelompok/group
Misalnya kita punya data yang mempunyai atribut nama,alamat,jenis kelamin,uts,uas
nama,alamat,jenis kelamin,uts,uas
Faqih,Bandung,Laki-Laki,100,70
Ina,Jakarta,Perempuan,88,90
Fitri,Bandung,Perempuan,99,80
Dana,Surabaya,Perempuan,80,70
Abi,Surabaya,Laki-Laki,90,50
Dika,Jakarta,Laki-Laki,70,100
Dari data diatas yang dimaksud categorical data adalah kolom alamat dan jenis kelamin yang berupa kumpulan item yang mempunyai beberapa value yang sama
Kolom alamat mempunyai value Bandung, Jakarta dan Surabaya sedangkan kolom jenis kelamin mempunyai value Laki-laki dan Perempuan
Dalam machine learning, data berbentuk seperti ini tidak dapat diproses. Categorical data harus dirubah dulu menjadi bentuk numerik
Ada beberapa cara melakukan encoding categorical data dengan melakukan label encoding dan one hot encoding
Label Encoding
Label encoding mengubah setiap nilai dalam kolom menjadi angka yang berurutan
Misalnya pada kolom alamat nilai Bandung = 0, Jakarta = 1, Surabaya = 2. Sedangkan kolom jenis kelamin nilai Laki-Laki = 0 dan Perempuan = 1
Sehingga data akan menjadi seperti ini
Dalam Python kita bisa gunakan Python Pandas untuk melakukan label encoding menggunakan library sci-kit LabelEncoder dan lakukan proses fit_transform() dengan kolom yang ingin dirubah
from sklearn.preprocessing import LabelEncoder labelencoder = LabelEncoder() df['alamat'] = labelencoder.fit_transform(df['alamat']) df['jenis kelamin'] = labelencoder.fit_transform(df['jenis kelamin'])
Hasilnya adalah
Dalam implementasinya kita dapat menggunakan keduanya, tetapi untuk categorical data yang mempunyai lebih dari 2 dapat disalahartikan oleh algoritma sebagai memiliki semacam hierarki atau urutan
One-Hot Encoding
Seperti dijelaskan diatas bahwa teknik label encoding bisa disalahartikan bahwa categorical data mempunyai urutan padahal bobot setiap value adalah sama
Ada teknik lainnya yang disebut dengan One-Hot Encoding
One-Hot Encoding adalah teknik yang merubah setiap nilai di dalam kolom menjadi kolom baru dan mengisinya dengan nilai biner yaitu 0 dan 1
Misalnya pada kolom alamat dan jenis kelamin setelah dilakukan one-hot encoding akan menjadi
Dalam Python Pandas, kita bisa gunakan dummies values di Pandas dengan menggunakan fungsi get_dummies() seperti ini
df = pd.get_dummies(df, columns=["alamat"]) df = pd.get_dummies(df, columns=["jenis kelamin"])
Hasilnya adalah seperti ini
Teknik encoding seperti ini sangat penting untuk categorical data sebelum data diproses dalam machine learning.
Hal ini dikarenakan machine learning tidak bisa menerima bentuk inputan string dan hanya bisa dalam bentuk data numerik