java - k-means聚类

时间:2017-08-07 11:44:36

标签: java k-means data-analysis

我有以下输入整数向量(示例):

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算法感到困惑。有谁愿意帮忙提供技巧或代码?

提前致谢。

1 个答案:

答案 0 :(得分:0)

k-means聚类的伪代码

假设您有一个度量标准(让我们调用此M),它可以比较输入对象(在您的情况下为向量)并输出相似度量。

和一个函数(让我们称之为A),它能够计算输入对象集合的平均值

  1. 从数据集中随机选择N个项目。它们是集群的新中心(称为质心)。
  2. 对于不是质心的每个项目X,计算它到每个质心的距离(使用M),并将其标记为属于该质心C,其中X和C之间的距离(使用M)最小。< / LI>
  3. 现在,每个项目都被分配到一个质心。
  4. 使用平均功能(A)计算新的质心
  5. 直接使用A的输出作为新的质心,或者找到最接近A的输出的实际项目(使用M)
  6. 重复步骤2到5直到收敛(或直到你的计算预算已用完)
  7. 另请查看https://en.wikipedia.org/wiki/K-means_clustering

相关问题