0

ネイティブ関数以外の関数を使用せずに、Matlabで相互検証の実装に取り​​組んでいます。

私はそのようなマトリックスを持っています:

1
2
3
..
N

折りサイズMです

最初の反復では、それを採用したいと思います。

1
2
3
..
N-M

2回目の反復時:

1
2
3
..
.. //Number o f M elements didn't included here
N-M+1
N-M+2
..
N

処理するまで繰り返します

M+1
M+2
..
N

要素のセットを含めない場合は、それらを別の変数に割り当てたいか、インデックスを知りたいので、それらを処理できます(これはパフォーマンスに優れています)

相互検証に関する詳細情報:http://en.wikipedia.org/wiki/Cross-validation_(statistics)

この図は、私が欲しいものを説明しています(ジョージア工科大学のスライドから): ここに画像の説明を入力してください

私はmatlabを初めて使用しますが、どうすれば簡単に実装できますか?

4

2 に答える 2

0

一般に、相互検証は関数crossvalindを介して実行できます。

あなたはそれを行うことができます

Indices = crossvalind('Kfold', matrix , M)
于 2012-11-18T23:03:23.137 に答える
0

次のコードは、図に示すようにデータをセグメント化します。

K = 5; %Fold size
N = 25; % Number of data points

data = rand(1,N); % Some fake data

testIdxs = reshape(1:N,K, N/k)'; %now each row has the indices for one test set

% All indices that aren't in the test, should belong to the training set. 
trainIdx = zeros(K, N-K);
for ix = 1:N/k
    temp                = 1:25;
    temp(testIdxs(ix,:)) = [];
    trainIdx(ix,:)      = temp;
end

この方法は、NがKの倍数である場合にのみ機能することに注意してください。

于 2012-11-19T18:32:10.400 に答える