2011-03-22 11 views
5

que tienen una matriz y un vector cada uno con 3000 filas:¿Cómo puedo dividir/dividir una matriz por filas entre otras dos matrices?

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

me gustaría dividir las filas de fe y tar tal que 2/3 de ellos se colocan en un conjunto de variables y el restante 1/3 se colocan en un segundo conjunto de variables. Esto es para fines de clasificación (es decir, un conjunto es información de entrenamiento y el otro es información de prueba).

Hay dos maneras posibles para que haga esto:

  • dividir las filas en orden, con el primer 2/3 en una matriz y el último tercio en otro.
  • Seleccione aleatoriamente y distribuya 2/3 de las filas en una matriz y coloque el resto en otra.

¿Cómo puedo implementar cada una de estas soluciones?

Respuesta

13

Asumiendo que requiere para seleccionar 2/3 de las filas y las columnas de ambos, puede hacerlo

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

Si desea asignar 2/3 de las filas elegidos al azar (es decir, no es la primera 2/3), puede usar la función randperm para generar ordenamientos aleatorios de los índices de filas y usarlos para indexar.

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

Disculpe para trazar feTrain ¿Cómo se utilizan dispersión, (feTrain tiene 2 columnas) – cMinor

+0

'scatter' tarda 2 vectores como entradas. Entonces, para trazar la primera columna contra la segunda columna, haz 'scatter (feTrain (:, 1), feTrain (:, 2))' – abcd

Cuestiones relacionadas