×

Membuat Pengacakan KFold Dataset di Matlab

Membuat Pengacakan KFold Dataset di Matlab

1,477 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

 

You May Have Missed