Raz*_*ill 5 java algorithm machine-learning apache-spark
我正在尝试从apache Spark的mlib库中执行kmeans聚类算法.我有一切设置,但我不确定如何格式化输入数据.我对机器学习比较陌生,所以任何帮助都会受到赞赏.在示例data.txt中,数据如下:
0.0 0.0 0.0
0.1 0.1 0.1
0.2 0.2 0.2
9.0 9.0 9.0
9.1 9.1 9.1
9.2 9.2 9.2
我想要运行算法的数据现在采用这种格式(json数组):
[{"customer":"ddf6022","order_id":"20031-19958","asset_id":"dd1~33","price":300,"time":1411134115000,"location":"bt2"},{"customer":"ddf6023","order_id":"23899-23825","asset_id":"dd1~33","price":300,"time":1411954672000,"location":"bt2"}]
如何将其转换为可与k-means聚类算法一起使用的东西?我正在使用Java,我猜我需要它采用JavaRDD格式,但不知道如何去做.
这是如何运作的:
首先,您必须定义要在哪些维度上应用 KMeans,Spark 文档中包含的 KMeans 示例应用于 3D 点(XY和Z维度)的数据集。考虑到 MLLib 上的 KMeans 实现能够在 n 个维度的集合上工作,其中 n>=1
一份提案:
假设,对于您的输入,XY和Z维度将是 JSON 字段:价格、时间和位置。然后,您所要做的就是从数据集中提取这些维度并将其放入文本文件中,如下所示:
300 1411134115000 2
300 1411954672000 2
...
...
...
Run Code Online (Sandbox Code Playgroud)
其中位置“ bt2 ”已替换为 2(假设您的数据集有其他位置)。您必须向 KMeans 提供数值。
注释/想法:
为了获得更好的聚类结果并根据数据时间分布,如果您通过将时间戳字段转换为值来利用时间戳字段会很好:年,月,日,小时,分钟,秒等。因此,您可以使用根据您的聚类目的,将不同的维度作为单独的字段。
另外,我猜您想进行自动 JSON2CSV 转换过程。因此,在映射实现中,您可以使用如下方法:/sf/answers/1078775211/