2014-03-04 4 views
0

저는 Mahout에서 새삼입니다. Mahout tranpose 명령 행을 사용하여 행렬을 조 변경하려고합니다.Mahout 전치 행렬

내 데이터 원본 파일의 모든 줄은 다음과 같습니다. 1;456;789;012;.... . 키는 각 줄의 첫 번째 요소입니다 (이 예제에서는 "1"입니다). 모든 행은 행렬의 벡터입니다.

","또는 ""공백으로 구분 기호를 변경하려고했지만 작동하지 않습니다.

mahout seq2sparse -i /test/myfile_seq/chunk-0 -o /test/myfile_vector 
:
mahout seqdirectory -c utf-8 -i /test/myfile -p /test/myfile_seq 

그럼 내가이 명령을 사용하여 벡터로 내 시퀀스 파일을 변환하려고 :

이 행렬을 전치려면,이 명령을 사용하여 시퀀스 파일 내 HDFS 데이터 파일을 변환 시작 내가 가진

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

:

그럼 내가이 명령을 사용 tranpose하기 몇 가지 질문 :

- 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

하십시오 두싯 커미터 더 빠르고 확실한 답을 얻기 위해서, 두싯 사용자 @ 메일 링리스트에 두싯 관련 질문을 게시 할 수 있습니다.

는 두싯 TransposeJob의 입력으로 매트릭스 기대와 U가있는 개별 벡터에 작동하지 않을 것이다. 입력 형식이 무엇인지는 중요하지 않습니다. CSV 파일을 가지고 각 행을 파싱 할 수 있습니다.

여기에 u를 달성하기 위해 노력하고 r에 무엇을 단계의 순서이다 :

  1. 는 VectorId이 사건의 열쇠가 될 것입니다 명명 된 벡터에 입력 CSV 파일을 변환합니다. Mahout의 CSVIterator 코드를 살펴보고 명명 된 벡터를 처리하고 입력에서 각 행을 구문 분석하도록 코드를 조정하십시오.
  2. NamedVectors에서 Mahout의 RowIdJob을 실행하여 모든 벡터의 행렬을 만듭니다. 행렬의 각 행은 입력 한 행입니다. RowIDJob의 출력은 - matrix 및 docIndex입니다.

    매트릭스 - 모든 벡터 docIndex 모든 연결된 매트릭스의 m * n 개의 매트릭스 - DocumentName를 행 documentId의 매핑

  3. 이전에서 매트릭스 출력 피드 (UR 경우 그 키를 통해 UR하는 documentId 매핑된다) TransposeJob에 입력으로 단계. CLI에 대한 행 및 열의 수를 지정해야합니다. 당신은 더 이상 질문이 있으면

은 두싯 사용자 @ 게시하시기 바랍니다.