2011-03-22 17 views
5

3000 satır bir matris ve bir vektör her biri:Matrisleri diğer iki matris arasındaki sıralara göre nasıl bölebilir/bölebilirim?

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 fe satır ve bölmekte istiyoruz tar gibi bunlardan 2/3 değişkenli grubu ve kalan içine yerleştirilir 1/3, ikinci bir değişken grubuna yerleştirilir. Bu sınıflandırma amaçlıdır (yani bir set eğitim verisi, diğeri test verileridir).

bunu yapmak benim için iki potansiyel yolu vardır:

  • bir matris içinde ilk 2/3 ve başka son 1/3, sırayla satırları Ayrılalım.
  • Satırların 2/3'ünü bir matrise rasgele seçip dağıtın ve kalanını bir diğerine yerleştirin.

Bu çözümlerin her birini nasıl uygularım? Eğer satır 2/3 (rastgele seçilmiş 2, yani ilk değil atamak istedi Eğer satır ve her iki sütun 2/3 seçmeniz gerekir varsayarsak

cevap

13

, sen

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

yapabilirsiniz/3), satır dizinlerinin rasgele sıralamasını oluşturmak ve dizine eklemek için randperm işlevini kullanabilirsiniz.

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 sütun vardır) – cMinor

+0

'scatter' girdi olarak 2 vektörleri alır sen Scatter kullanıyorsunuz Nasıl feTrain çizmek için beni affet. Böylece 1. sütuna karşı 2. sütun çizilir, scatter (feTrain (:, 1), feTrain (:, 2)) ' – abcd