Mengubah data kategori menjadi numerik secara cepat

By | May 29, 2020
Print Friendly, PDF & Email

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

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

 

Leave a Reply

Your email address will not be published. Required fields are marked *