Adakalanya dalam mengolah dataset dibutuhkan sebuah data dalam bentuk angka/numerikal, namun apabila kalian mendapatkan data yang bertipe kategorikal maka kalian bisa menggunakan beberapa cara, misalkan data berikut
Mengubah kategorikal menjadi numerikal secara otomatis
Contents
Misalkan saja kita mempunyai sebuah variabel A dengan isi sebagai berikut
A = 4×1 cell array {'tidak'} {'ya' } {'ya' } {'ya' }
Akan kita ubah menjadi sebuah angka/numerical secara otomatis (cara kerjanya di Matlab dengan cara unique data, karena kata Tidak urutan pertama dari Ya, maka Tidak==1 dan Ya==2)
B = 1 2 2 2
Cukup panggil function grp2idx() seperti berikut
A = {'tidak';'ya';'ya';'ya'}; B = grp2idx(A); %mengubah kategorikal menjadi numeric secara otomatis data = table(A,B);%dibuat table saja disp(data)
hasilnya
data = 4×2 table A B _______ _ 'tidak' 1 'ya' 2 'ya' 2 'ya' 2
Mengubah kategorikal menjadi numerikal dengan aturan tertentu
Namun adakalanya kita malah ingin mengubah kategorikal menjadi numerikal sesuai dengan keinginan kita yaitu tidak==0 dan ya==1 seperti pada umumnya bila melibatkan sebuah algoritma machine learning. Maka kita butuhkan 2 variabel yaitu valueset dan catnames
valueset = {'1','0'}; catnames = {'ya','tidak'};
Kemudian kita panggil function categorical()
B = categorical(A,catnames,valueset); data = table(A,B); disp(data)
Maka akan hasilnya akan sesuai dengan keinginan kita
A B _______ _ 'tidak' 0 'ya' 1 'ya' 1 'ya' 1
Mengubah numerikal menjadi kategorikal
Adakalanya juga kita akan mengubah data numerikal menjadi kategorikal, maka caranya pun sama hanya dibalik saja
A = [1;1;1;2;2;3;3;3] valueset = [1,2,3]; catnames = {'rendah','sedang','tinggi'}; B = categorical(A,valueset,catnames); data = table(A,B); disp(data);
hasilnya
A B _ ______ 1 rendah 1 rendah 1 rendah 2 sedang 2 sedang 3 tinggi 3 tinggi 3 tinggi
Penerapan pada Table
Kita akan coba untuk menerapakan pada sebuah tabel, yaitu untuk mengubah data cuaca dengan aturan yang telah ditetapkan sebagai berikut
no cuaca __ _________ 1 'Cerah' 2 'Cerah' 3 'Berawan' 4 'Hujan' 5 'Hujan' 6 'Hujan' 7 'Berawan' 8 'Cerah' 9 'Cerah' 10 'Hujan' 11 'Cerah' 12 'Berawan' 13 'Berawan' 14 'Hujan' akan diubah sesuai dengan aturan berikut catnames valueset _________ ________ 'Cerah' '1' 'Berawan' '2' 'Hujan' '3' no cuaca kategori_cuaca __ _________ ______________ 1 'Cerah' 1 2 'Cerah' 1 3 'Berawan' 2 4 'Hujan' 3 5 'Hujan' 3 6 'Hujan' 3 7 'Berawan' 2 8 'Cerah' 1 9 'Cerah' 1 10 'Hujan' 3 11 'Cerah' 1 12 'Berawan' 2 13 'Berawan' 2 14 'Hujan' 3
Berikut kode yang digunakan untuk mengolah dataset diatas
clc;clear all;close all; data = readtable('cuaca.xlsx'); disp(data); valueset = {'1';'2';'3'}; catnames = {'Cerah';'Berawan';'Hujan'}; disp('akan diubah sesuai dengan aturan berikut') aturan=table(catnames,valueset); disp(aturan); d = categorical(data.cuaca,catnames,valueset); data.kategori_cuaca = d; disp(data)
Ingat bahwa cara diatas praktis daripada kalian melakukan looping untuk jutaan records dalam sebuah dataset, tentu akan memakan resource yang sangat banyak. Sangat mudah bukan? Untuk mengubah data kategorikal menjadi numerikal dan sebaliknya menggunakan matlab