Как я могу разделить / разделить матрицу по строкам между двумя другими матрицами? - PullRequest
5 голосов
/ 22 марта 2011

У меня есть матрица и вектор по 3000 строк:

fe = [-0.1850   -0.4485; ...
      -0.2150    2.6302; ...
      -0.2081    1.5883; ...
      -0.6416   -1.1924; ...
      -0.1188    1.3429; ...
      -0.2326   -2.2737; ...
      -0.0799    1.4821; ...
      ... %# lots more rows
      ];

tar = [1; ...
       1; ...
       2; ...
       1; ...
       2; ...
       1; ...
       1; ...
      ...  %#lots more rows
      ];

Я хотел бы разделить строки fe и tar так, чтобы 2/3 из них были помещены водин набор переменных и оставшиеся 1/3 помещаются во второй набор переменных.Это для целей классификации (т. Е. Один набор - данные тренировки, а другой - данные теста).

Для меня есть два возможных способа сделать это:

  • Разделить строкипо порядку, с первыми 2/3 в одной матрице и последними 1/3 в другой.
  • Произвольно выбирайте и распределяйте 2/3 строк в одну матрицу и помещайте остаток в другую.

Как я могу реализовать каждое из этих решений?

1 Ответ

13 голосов
/ 22 марта 2011

Предполагая, что вам нужно выбрать 2/3 строк и обоих столбцов, вы можете сделать

feTrain=fe(1:2000,:);
feTest=fe(2001:end,:);

Если вы хотите назначить 2/3 строк, выбранных случайным образом (т. Е. Не первый2/3), вы можете использовать функцию randperm для генерации случайного порядка индексов строк и использовать его для индексации.

nRows=size(fe,1);
randRows=randperm(nRows);%# generate random ordering of row indices
feTrain=fe(randRows(1:2000),:);%# index using random order
feTest=fe(randRows(2001:end),:);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...