如何在java中实现简单分组的k-means

时间:2010-03-09 09:17:10

标签: java k-means

我想知道java中的简单k-means算法。我想只使用k-means对一维数组进行分组而不是多维数组。 例如, 在分组之前,阵列由2,4,7,5,12,34,18,25组成 如果我们想要四组,那么我们得到了 第1组:2,4,5 第2组:7,12 第3组:18,25 第4组:34

4 个答案:

答案 0 :(得分:1)

如果您需要的只是群集而不是实现,您可以查看Weka implementation或只使用Weka API。

答案 1 :(得分:1)

K-means聚类的标准(启发式)算法在Wikipedia page上提供,并附有变体和一些现有实现的链接。

(这是编程论坛,因此可以合理地假设您自己能够编写Java代码...如果您找不到适合的现有实现。)

答案 2 :(得分:1)

You can implement k-Means as:
SimpleKMeans kmeans = new SimpleKMeans();

kmeans.setSeed(10);

// This is the important parameter to set
kmeans.setPreserveInstancesOrder(true);
kmeans.setNumClusters(numberOfClusters);
kmeans.buildClusterer(instances);

 // This array returns the cluster number (starting with 0) for each instance
 // The array has as many elements as the number of instances
 int[] assignments = kmeans.getAssignments();

 int i=0;
 for(int clusterNum : assignments) {
System.out.printf("Instance %d -> Cluster %d", i, clusterNum);
i++;
}

答案 3 :(得分:0)

您可以查看我的软件:SPMF data mining software

它仅在3个文件中提供了KMeans的高效实现,因此它应该易于理解。

该软件还提供了许多其他算法。但你不需要它们。

但另一件事是,还有一个用于启动KMeans和其他算法的图形用户界面。