How can I divide/split up a matrix by rows between two other matrices?

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 03:35:31

问题


I have a matrix and a vector each with 3000 rows:

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
      ];

I would like to divide up the rows of fe and tar such that 2/3 of them are placed into one set of variables and the remaining 1/3 are placed into a second set of variables. This is for classification purposes (i.e. one set is training data and the other is test data).

There are two potential ways for me to do this:

  • Split up the rows in order, with the first 2/3 in one matrix and the last 1/3 in another.
  • Randomly select and distribute 2/3 of the rows to one matrix and place the remainder in another.

How can I implement each of these solutions?


回答1:


Assuming you need to select 2/3 of the rows and both the columns, you can do

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

If you wanted to assign 2/3 of the rows picked randomly (i.e., not the first 2/3), you can use the randperm function to generate random ordering of the row indices and use that to index.

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),:);


来源:https://stackoverflow.com/questions/5385174/how-can-i-divide-split-up-a-matrix-by-rows-between-two-other-matrices

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!