3

我想知道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

4 回答 4

1

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

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

于 2010-03-09T11:14:51.177 回答
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++;
}
于 2012-03-23T12:15:29.733 回答
1

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

于 2010-03-09T09:29:53.287 回答
0

你可以查看我的软件: SPMF数据挖掘软件

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

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

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

于 2012-07-18T18:22:10.280 回答