我是Mahout的新人。 我正在尝试使用Mahout transpose命令行转置矩阵。
我的数据源文件中的每一行看起来像:1;456;789;012;.... .
键是每行中的第一个元素(在此示例中为“1”)。每一行都是矩阵的向量。
我尝试用“,”或空格“”更改分隔符,但我不起作用。
为了转置矩阵,我开始使用以下命令在序列文件中转换我的hdfs数据文件:
mahout seqdirectory -c utf-8 -i /test/myfile -p /test/myfile_seq
然后我尝试使用此命令将我的序列文件转换为向量:
mahout seq2sparse -i /test/myfile_seq/chunk-0 -o /test/myfile_vector
然后转移我使用了这个命令:
sudo -u hdfs mahout transpose --input /test/myfile_vector//tfidf-vectors/part-r-00000 --numRows 5 --numCols 24
我有几个问题:
- 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?
答案 0 :(得分:0)
请将Mahout相关问题发布到Mahout用户@邮件列表,以便从Mahout提交者那里获得更快速,更明确的答案。
Mahout的TransposeJob期望矩阵作为输入,并且不会像你拥有的那样对单个向量起作用。 输入格式是什么并不重要。您可以拥有一个CSV文件并解析每一行。
以下是您试图完成的步骤的顺序:
在NamedVectors上运行Mahout的RowIdJob,以创建所有向量的矩阵。矩阵的每一行都是您输入的一行。 RowIDJob的输出是 - matrix和docIndex。
矩阵 - 所有向量的所有连接矩阵的矩阵m * n矩阵 docIndex - documentId到documentName的映射(在个案中它将documentId映射到ur键)
将上一步的矩阵输出作为输入提供给TransposeJob。您需要为CLI指定行数和列数。
如果您还有其他问题,请发送给Mahout用户@。