2011-03-22 3 views
5

는 I 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을 하나의 행렬로 선택하여 배포하고 나머지는 다른 행렬에 배치하십시오.

이러한 각 솔루션을 어떻게 구현할 수 있습니까? 당신이 행의 2/3 (무작위로 고른 2 즉, 첫째하지 할당 원한다면 당신이 행과 두 열의 2/3을 선택해야 가정

답변

13

, 당신은

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

을 수행 할 수 있습니다/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),:); 
+0

은 (feTrain 2 열이) – cMinor

+0

는'scatter'이 입력으로 2 개 벡터를 취하면 분산을 어떻게 사용합니까 feTrain 음모 실례합니다. 따라서 첫 번째 열과 두 번째 열을 플로팅하려면'scatter (feTrain (:, 1), feTrain (:, 2))' – abcd