2015-06-27 5 views
1

У меня есть функции HOG для мужских и женских картин, сейчас я пытаюсь использовать Leave-one-out-method для классификации моих данных. Благодаря стандартным способом записать его в Matlab является:Оставьте один из crossvalind в Matlab

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

То, что я должен написать вместо N и M? Кроме того, следует ли писать выше инструкции кода внутри или снаружи цикла? это мой код, где у меня есть учебная папка для мужчин (80 изображений) и женщина (80 изображений), а другая для тестирования (10 случайных изображений).

for i = 1:10 
[Train, Test] = crossvalind('LeaveMOut', N, 1); 
SVMStruct = svmtrain(Training_Set (Train), train_label (Train)); 
Gender = svmclassify(SVMStruct, Test_Set_MF (Test)); 
end 

Примечание:

  • Training_Set: массив состоит из HOG функций образов папок обучения.
  • Test_Set_MF: массив состоит из функций HOG изображений тестовых папок.
  • N: общее количество изображений в учебной папке.
  • SVM должен определять, какие изображения являются мужчинами, а женщины.
+0

Большое спасибо Mr. Matt – TARIQ

ответ

3

я остановлюсь на том, как использовать crossvalind для отпуска-один-из -метода.

Я предполагаю, что вы хотите выбрать случайные множества внутри цикла. N - длина вашего вектора данных. M - количество случайно выбранных наблюдений в Test. Соответственно M - это количество наблюдений, оставшихся в Train. Это означает, что вы должны установить N на длину вашего набора. С M вы можете указать, сколько значений вы хотите в своем Test -output, соответственно вы хотите оставить в своем Train -output.

Ниже приведен пример выбора M=2 наблюдений из набора данных.

dataset = [1 2 3 4 5 6 7 8 9 10]; 
N = length(dataset); 
M = 2; 

for i = 1:5 
    [Train, Test] = crossvalind('LeaveMOut', N, M); 
    % do whatever you want with Train and Test 
    dataset(Test) % display the test-entries 
end 

Этот выход: (это генерируется случайным образом, так что вы не будете иметь тот же результат)

ans = 
    1  9 
ans = 
    6  8 
ans = 
    7 10 
ans = 
    4  5 
ans = 
    4  7 

Как вы его в коде согласно this post , вам необходимо настроить его для матрицы характеристик:

Training_Set = rand(10,3);  % 10 samples with 3 features each 

N = size(Training_Set,1); 
M = 2; 

for i = 1:5 
    [Train, Test] = crossvalind('LeaveMOut', N, 2); 
    Training_Set(Train,:) % displays the data to train 
end 
+0

Спасибо, мистер Мэтт – TARIQ

+0

Я понял, что 'N' = количество образцов, которые у меня есть в учебной папке. 'M' = номер тестового образца, который останется в каждом цикле, например: (1). Цикл должен быть от 1 до: количества выборок, которые я хочу проверить. Я пишу? – TARIQ

+0

Не могли бы вы мне помочь? @ ParagS.Chandakkar; @rayryeng – TARIQ