/ / Matriz de transposición de mahout - hadoop, mahout, transposición

Matriz de transposición Mahout - hadoop, mahout, transposición

Soy nuevo en Mahout. Estoy tratando de transponer una matriz con la línea de comando Mahout Transpose.

Cada línea en mi archivo de fuente de datos se ve como: 1;456;789;012;.... . La clave es el primer elemento en cada línea (en este ejemplo es "1"). Cada línea es un vector de la matriz.

Intenté cambiar el separador con "," o espacio "", pero no funciona.

Para transponer la matriz, comencé con la transformación de mi archivo de datos hdfs en un archivo de secuencia usando este comando:

mahout seqdirectory -c utf-8 -i /test/myfile -p /test/myfile_seq

Luego traté de convertir mi archivo de secuencia en vectores usando este comando:

mahout seq2sparse -i /test/myfile_seq/chunk-0 -o /test/myfile_vector

Luego para transponer utilicé este comando:

sudo -u hdfs mahout transpose --input  /test/myfile_vector//tfidf-vectors/part-r-00000 --numRows 5 --numCols 24

Tengo varias preguntas:

- What is the separator to use in the data file source
- What should be the output of the "mahout seqdirectory" command?
- Did I need to convert my sequence file to vectors to transpose?

Respuestas

0 para la respuesta № 1

Por favor, publique las preguntas relacionadas con Mahout en la lista de correo del usuario de Mahout @ para obtener respuestas más rápidas y definitivas de los usuarios de Mahout.

El TransposeJob de Mahout espera una matriz como entraday no funcionaría en vectores individuales como lo tienes. No importa cuál sea el formato de entrada. Podría haber tenido un archivo CSV y haber analizado cada línea.

Aquí está la secuencia de pasos para lo que intentas lograr:

  1. Convertir el archivo CSV de entrada en vectores con nombredonde el VectorId sería la Clave en tu caso. Mire el código del CSVIterator de Mahout y ajústelo para manejar los vectores con nombre y analice cada línea de su entrada.
  2. Ejecute el RowIdJob de Mahout en NamedVectors para crear una Matriz de todos los vectores. Cada fila de la matriz sería una línea de su entrada. Las salidas de RowIDJob son - matrix y docIndex.

    matriz - m * n matriz de toda la matriz concatenada de todos los vectores docIndex - mapeo de documentId a documentName (en su caso sería mapeando un documentId a su clave)

  3. Alimente la salida de la matriz del paso anterior como entrada para TransposeJob. Debe especificar el número de Filas y columnas a CLI.

Por favor, publique en Mahout user @ si tiene más preguntas.