我想知道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
答案 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和其他算法的图形用户界面。