2017-08-07 43 views
-3

我有以下输入整数向量(例如):的java - K-means聚类

4 138 233 461 610 621 669 742 814 827 
89 138 334 656 697 810 
138 
138 196 738 
659 738 
4 461 
138 337 756 810 
8 138 196 337 468 663 664 756 809 810 

它们都包含整数值[1-850]和都存储在CSV文件。

我想根据向量中的相似性将它们分成多个群集,但我对如何在java中为我的输入数据实现k-means算法感到困惑。任何人愿意帮助提示或代码?

在此先感谢。对于k-means聚类

假设你有一个指标

+0

,我们可以帮助你,如果你确实有代码。但我们不会为你写代码。 –

+0

您有具体问题吗? SO的帮助太广泛了。 – Cedias

+0

Ehm,使用搜索引擎是不可能的? – AKSW

回答

0

伪代码(我们称之为M),可以比较输入对象(在你的情况载体)和输出的相似程度。

和功能(我们称之为A),它是能够计算输入集合的平均的对象

  1. 随机从您的数据集选择N项。他们是集群的新中心(称为质心)。
  2. 对于不是质心的每个项目X,计算它到每个质心的距离(使用M),并将其标记为属于质心C,其中X和C之间的距离(使用M)最小。
  3. 每个项目现在分配给质心。
  4. 使用平均功能(A)来计算新的重心
  5. 要么使用直接输出作为新的重心,或者找到的最接近A(使用M)的输出
  6. 重复实际项目步骤2至5直至收敛(或直到你的计算预算已用完)

还检查了https://en.wikipedia.org/wiki/K-means_clustering