1

私はまだ自分のコードと混同しています。分類のために、matlabで1つを除外したクロス検証を実装しようとしました。だからここに。トレーニングから1つのデータを取り出してテストデータにします。私はすでにmatlabでコードを作成しています。しかし、結果が間違っているので、それが正しいかどうかはわかりません。誰かが私がそれを修正するのを手伝ってくれる?どうもありがとうございます。

これは私のコードです:

clc    
[C,F] = train('D:\fp\',...
    'D:\tp\');


for i=size(F,1)
testVal = i;      
trainingSet = setdiff(1:numel(C), testVal); % use the rest for training

Ctrain = C(trainingSet,:);
Ftrain = F(trainingSet,:);
test= F(testVal,:);
svmStruct = svmtrain(Ftrain,Ctrain,'showplot',true,'Kernel_Function','rbf');
result_class(i)= svmclassify(svmStruct,test,'showplot',true);
ax(i)=result_class;
i=i+1;
end
4

1 に答える 1

1

これは、1 つを除外するクロス検証を作成するために通常使用するものです。

[Train, Test] = crossvalind('LeaveMOut', N, M)

ここでNは、トレーニングとテストのセットに含まれるサンプルの総数になります。M=1あなたの場合。これを for ループに入れることができます。

また、定義済み関数を使用せずに、乱数生成を使用して、Leave-One Out 交差検証を実行できます。

于 2013-03-16T16:57:51.097 に答える