Matlab で 1 つを除外するクロス検証を使用する方法を教えてください。使用したデータが小さいためです。真陽性には 10 個のデータ トレーニングを使用し、偽陽性には 10 個のデータ トレーニングを使用します。ここで見つけたコードを試しました。これは私のトレーニング関数です:
Function [ C,F ] = classification_test_samesize()
dn='D:\thesis\mthesis\code program\FalsePositive\'
db=dir(strcat(dn,'*.dcm'));
F=[];
C=[];
for(i=1:1:length(db))
name=db(i).name;
name=strcat(dn,name);
im1=dicomread(name);
[out] = func_feature(im1);
f = [out];
F = [F;f];
C=[C;-1];
end
% false positive is -1 th class
dn='D:\thesis\mthesis\code program\TruePositive\'
db=dir(strcat(dn,'*.dcm'));
for(i=1:1:length(db))
name=db(i).name;
name=strcat(dn,name);
im1=dicomread(name);
[out] = func_feature(im1);
f = [out];
F = [F;f];
C=[C;1];
% true positive is 1 th class
end
end
これが私の主な機能です。
clc
direktori= uigetdir;
slash = '\';
direktori=strcat(direktori,slash);
dn=direktori;
db=dir(strcat(dn,'*.dcm'));
ftest=[];
for(i=1:1:length(db))
name=db(i).name;
name=strcat(dn,name);
im1=dicomread(name);
[out] = func_feature(im1);
f = [out];
ftest = [ftest;f];
end
[C,F] = classification_test_samesize();
svmStruct = svmtrain(F,C,'showplot',true,'Kernel_Function','rbf');
result_class = svmclassify(svmStruct,ftest,'showplot',true);
メイン関数では、テスト フォルダーを呼び出してデータをテストしました。ただし、この場合は、データのテストに 1 つを除外するクロス検証を使用したいので、ディレクトリが再び呼び出されることはありません。これを解決するのを手伝ってもらえますか? したがって、トレーニング データの 1 つを使用してテストできます。