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