2015-04-29 96 views
4

我想從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 如何格式化Spark Spark kmeans聚類算法的數據?

而我要運行的算法是這種格式現在(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格式,但不知道如何去做。

回答

2

這是如何工作的:

首先,你要確定你想申請KMEANS什麼尺寸,包括在星火文檔KMEANS例應用三維點數據集(XY & Z尺寸)。考慮到accoint上MLLib的KMEANS實現能夠對集合N維的工作,其中n> = 1

建議:

因此,可以說,你的投入,XY & Z尺寸將是JSON字段:價格,時間 & 位置。那麼,你所要做的就是從中提取您的數據集的大小,並把這些文本文件,如下所示:

300 1411134115000 2 
300 1411954672000 2 
... 
... 
... 

凡位置「BT2」已經由2替換(假設你的數據設置了另一個地點)。您必須爲KMeans提供數值。

注意事項/意見:

爲了獲得更好的聚類結果,並根據數據時間分佈,如果利用時間戳字段的通過將其轉化爲價值這將是很好:年,月,日,小時,分鐘,秒等。因此,根據您的聚類目的,您可以使用不同的維度作爲單獨的字段。

另外,我想你想自動JSON2CSV轉換過程。因此,在您的映射實施中,您可以使用類似這樣的方法:https://stackoverflow.com/a/15411074/833336