我想知道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
问问题
5823 次
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 回答