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