Membuat Pengacakan KFold Dataset di Matlab

By | January 15, 2021
Print Friendly, PDF & Email
1,346 Views

Sinopsis

Kfold Validation banyak digunakan untuk menguji kestabilan sebuah algoritma terhadap beberapa kasus yang bersifat klasifikasi yaitu dengan melipat data sebanyak K dan mengulangi (men-iterasi) experimennya sebanyak K juga. Seperti ilustrasi berikut.

Biasanya proporsi yang digunakan 80% training dan 20% testing. Misalkan kita mempunyai dataset yaitu x dengan jumlah data sebesar 10, maka seperti berikut gambarannya.

function [test_data,train_data] = KFoldCrossValidation(data,fold_size)
 
    % code which is used to shuffle all the rows of the data set
    sort_array = randperm(size(data,1));
    for i = 1: size(data,1)
        randomized_data(i,:) = data(sort_array(i),:);
    end
    % code to divide the dataset int k sub data sets.
    no_of_rows = size(data,1);
 
    test_data{fold_size,1} = [];
    train_data{fold_size,1} = [];
 
  block = floor(no_of_rows/fold_size);
 
  test_data{1} = randomized_data(1:block,:);
  train_data{1} = randomized_data(block+1:end,:);
 
  for f = 2:fold_size
      test_data{f} = randomized_data((f-1)*block+1:(f)*block,:);
      train_data{f} = [randomized_data(1:(f-1)*block,:); randomized_data(f*block+1:end, :)];
  end
end

penggunaan

close all;clear all;clc;
% Reading data from text files;
data = csvread('hand_26.txt');
data =data';
No_of_folds = 5;
[test_data,train_data] = KFoldCrossValidation(data,No_of_folds);
 
KNN = zeros(No_of_folds,1);
for i =1 : No_of_folds
    knn_result = Knn(train_data{i},test_data{i},3);
    KNN(i) = Accuracy(knn_result);
 
end
Iteration = 1 : No_of_folds;
Iteration = Iteration';
Accuracy_Iteration_Level = table(Iteration , KNN)

hasilnya

Iteration      KNN  
_________    _______

    1        0.74752
    2        0.74257
    3        0.77723
    4        0.74257
    5        0.71782

Atau kalau mau menggunakan function bulit in matlab, kalian bisa baca Buku Belajar Pemrogaman Matlab – Penerapan KFold di Matlab

 

Silahkan untuk kunjungi link berikut
Ref:
https://github.com/sBavisetti/K-fold-Cross-Validation

 

Leave a Reply