这里一开始对数据进行了一个预处理,导入了之前预先写好对DataHandling.m的文件
使用自己写的getKFoldData来进行每一折数据的划分,然后就跟普通训练一样,k从1到10循环去训练、测试、计算准确率、对每一折的准确率求和再除以10来求的10-fold cross-validation的平均准确率。
import DataHandling.*
%% Part A
normalise = true;
[cFtrs, cLbls, rFtrs, rLbls] = DataHandling(normalise);
cTrFtrs = cFtrs(1:1500,:);
cTeFtrs = cFtrs(1501:end,:);
rTrFtrs = rFtrs(1:1000,:);
rTeFtrs = rFtrs(1001:end,:);
cTrLbls = cLbls(1:1500,:);
cTeLbls = cLbls(1501:end,:);
rTrLbls = rLbls(1:1000,:);
rTeLbls = rLbls(1001:end,:);
% Classification
cMdl = fitcsvm(cTrFtrs, cTrLbls, 'KernelFunction', 'linear', 'BoxConstraint', 1);
[preds, score] = predict(cMdl, cTeFtrs);
classOrder = cMdl.ClassNames;
sv = cMdl.SupportVectors;
figure
gscatter(cTrFtrs(:,1),cTrFtrs(:,2),cTrLbls)
hold on
plot(sv(:,1),sv(:,2),'ko','MarkerSize',5)
legend('Obesity','Not Obesi