0

我尝试按照许多在线教程来运行 Mahout 中的 kmeans 示例。但尚未成功获得有意义的输出。我面临的主要问题是,从文本文件到序列文件的转换并返回。

  1. 当我按照“Mahout Wiki”的“合成控制数据聚类”的步骤(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 output/clusters-10...)时出现错误。首先它抱怨“seqFileDir”选项出乎意料,我猜集群转储没有“seqFileDir”或者我遗漏了一些东西。

  2. 尝试以“mahout in action”的方式使用 Mahout 似乎很棘手。我不确定编译该代码所需的类(“import ??”)是什么。

您能否建议我在 Mahout 上成功运行 kmeans 的步骤?特别是如何从序列文件中获得可读的输出?

4

2 回答 2

1

关于第二个问题 - 您可以从存储库获取本书的源代码。分支中的代码master适用于 Mahout 0.5,而分支mahout-0.6&mahout-0.7中的代码适用于对应的 Mahout 版本。

源代码也发布到书的网站,所以你可以在那里下载(但这是仅适用于 Mahout 0.5 的版本)

PS 如果你现在正在看书,那么我建议使用 Mahout 0.5 或 0.6,因为所有代码都检查了 0.5 版本,而对于其他版本,它会有所不同——尤其是 Mahout 0.7 中的集群代码

于 2012-06-23T08:14:59.567 回答
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

确保上面的目录output/clusters-9-final的路径对于您的系统是正确的。根据聚类算法,此目录可能不同。查看输出目录并确保使用带有“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

希望有帮助。

于 2013-02-13T15:39:00.343 回答