2010-03-09 88 views
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如何在java中实现简单分组的k-means

回答

1

您可以在Weka的implementation看看或者干脆使用Weka的API,如果你需要的是群集,而不是执行。

1

用于K均值聚类的标准(启发式)算法在Wikipedia page上提供,连同变体和一些现有实现的链接。

(这是编程论坛,所以这是合理的假设,你能够自己编写Java代码......如果你不能找到一个现有的实现,它是适合的。)

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++; 
} 
+0

你正在使用哪个库? – Karussell 2014-12-15 20:47:59

0

你可以检查我的软件:SPMF data mining software

它提供了KMeans在3个文件中的高效实现,所以它应该很容易理解。

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

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