如何使用存储为 CSV 的矢量数据在 mahout 中执行 k 均值聚类?
我有一个包含数据向量的文件,其中每行包含一个以逗号分隔的值列表。我想知道如何使用 mahout 对这些数据执行 k 均值聚类。 wiki 中提供的示例提到了创建sequenceFiles,但除此之外,我不确定是否需要进行某种类型的转换才能获取这些sequenceFiles。
I have a file containing vectors of data, where each row contains a comma-separated list of values. I am wondering how to perform k-means clustering on this data using mahout. The example provided in the wiki mentions creating sequenceFiles, but otherwise I am not sure if I need to do some type of conversion in order to obtain these sequenceFiles.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我建议手动读取 CSV 文件中的条目,从中创建 NamedVector,然后使用序列文件编写器将向量写入序列文件中。从那时起,KMeansDriver run 方法应该知道如何处理这些文件。
序列文件对键值对进行编码,因此键是样本的 ID(应该是字符串),值是向量的 VectorWritable 包装器。
以下是有关如何执行此操作的简单代码示例:
另外,我建议阅读Mahout in Action的第8章。它提供了有关 Mahout 中数据表示的更多详细信息。
I would recommend manually reading in the entries from the CSV file, creating NamedVectors from them, and then using a sequence file writer to write the vectors in a sequence file. From there on, the KMeansDriver run method should know how to handle these files.
Sequence files encode key-value pairs, so the key would be an ID of the sample (it should be a string), and the value is a VectorWritable wrapper around the vectors.
Here is a simple code sample on how to do this:
Also, I would recommend reading chapter 8 of Mahout in Action. It gives more details on data representation in Mahout.
也许你可以使用 Elephant Bird 以 mahout 格式编写向量
https://github .com/kevinweil/elephant-bird#hadoop-sequencefiles-and-pig
maybe you could use Elephant Bird to write vectors in mahout format
https://github.com/kevinweil/elephant-bird#hadoop-sequencefiles-and-pig