7 votos

Lectura en los archivos de la SVM en R (libsvm)

Los archivos de datos de http://www.csie.ntu.edu.tw/~cjlin/libsvm/ en svm' formato. Estoy tratando de leer esto en la matriz dispersa representación en R. hay un fácil/eficiente manera de hacer esto?

Aquí es lo que estoy haciendo ahora: leer en el archivo línea por línea (de 800.000 líneas), para cada línea por separado clases, valores, y cols. La tienda de las clases como una lista y las características como un .la rse matriz dispersa (1 fila), entonces rbind la función fila con todas las filas anteriores.

Esto es terriblemente ineficiente y, básicamente, no la meta (12 minutos por 1000 líneas). Yo creo que se trata de rbinding las matrices una vez que el número de filas comienza a ser grandes.

Nota: la matriz (800000*48000) es demasiado grande para construir y, a continuación, convertir a formato disperso.

Gracias!

4voto

Jon Galloway Puntos 28243

El e1071 paquete tiene un medio para la exportación al formato "svm" libsvm en la write.svm función de. Pero a lo mejor de mi conocimiento, no read.svm la función.

4voto

Funkatron Puntos 757

He encontrado una manera que es factible por lo menos ahora.

En lugar del paquete de sparseM utilizar el paquete de la matriz para la construcción de las matrices sparse. Almacén las entradas y columnas en listas separadas y entonces construir la matriz por:

data=sparseMatrix(i=rep(1,length[[1]]),j=columns[[loop]],
    x=entires[[loop]],dims=c(120000,47235))
for(loop in 2:120000){
  if(loop %% 1000==0){
      print(loop)
      print(Sys.time())
  }
  data[loop,columns[[loop]]]=entries[[loop]]  
}

Este tiene todavía un tiempo (unas 2 horas) pero al menos funciona.

Almacenar las clases correspondientes en otra lista no en la matriz rala.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X