2012-06-22 20 views
0

我試圖按照許多在線教程來運行Mahout中的kmeans示例。 但是還沒有成功獲得有意義的輸出。我面臨的主要問題是, 從文本文件轉換爲序列文件並返回。如何使用Mahout成功運行kmeans集羣(尤其是獲取人類可讀的輸出)

  1. 當我遵循「亨利馬烏維基」的步驟的「合成的控制數據的羣集」 (https://cwiki.apache.org/MAHOUT/clustering-of-synthetic-control-data.html )我可以運行集羣過程(使用$ MAHOUT_HOME/bin/mahout org.apache.mahout.clustering.syntheticcontrol.kmeans.Job)並創建了一些可讀的控制檯輸出。但我希望從集羣過程中獲取輸出文件(因爲大小很大)。 由Mahout集羣生成的輸出文件都是序列文件,我不能將它們轉換爲可讀文件。 當我嘗試執行「clusterdump」($ MAHOUT_HOME/bin/mahout clusterdump --seqFileDir輸出/ clusters-10 ...)時,出現錯誤。 首先它抱怨說「seqFileDir」選項是意外的,我想沒有「seqFileDir」用於clusterdump或者我缺少一些東西。

  2. 試圖在「行動象夫」的方式來使用Mahout中顯得非常棘手。我不知道什麼是必需的類(「import ??」)來編譯該代碼。

您能否建議我在Mahout上成功運行kmeans的步驟?特別是如何從序列文件獲得可讀輸出?

回答

1

關於第二個問題 - 你可以獲取源代碼的書from the repositorymaster分支中的代碼用於Mahout 0.5,而分支mahout-0.6 & mahout-0.7中的代碼用於相應的Mahout版本。

的源代碼也被髮布到book's site,所以你下載它那裏(但是這只是針對Mahout的0.5版本)

附:如果你現在讀的書,那麼我建議使用Mahout的0.5或0.6,因爲所有的代碼被檢查0.5版本,而對於其它版本會有所不同 - 這是在Mahout的0.7

0
集羣代碼更是如此

對於clusterdump中的seqFileDir,您需要使用--input而不是--seqFileDir。

我使用Mahout 0.7。調用clusterdump,我使用(例如)得到一個簡單的轉儲:

mahout clusterdump --input output/clusters-9-final --pointsDir output/clusteredPoints --output <absolute path of dir where you want to output>/clusteranalyze.txt 

確保上面的目錄路徑輸出/集羣 - 9決賽是爲您的系統正確。根據聚類算法,該目錄可能會有所不同。查看輸出目錄並確保使用帶有「final」init的目錄。

轉儲數據爲CSV或GRAPH_ML,你會在-of CSV參數添加到上面的電話。例如:

mahout clusterdump --input output/clusters-9-final -of CSV --pointsDir output/clusteredPoints --output <absolute path of dir where you want to output>/clusteranalyze.txt 

希望有幫助。