2010-03-09 85 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和其他算法的圖形用戶界面。