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