Java版kmeans實現(jar包下載及使用+算法介紹+源碼簡介)


數據挖掘作業要做聚類,用OpenCV的kmeans函數,出的結果各種隨機。聽別人說kmeans自己寫起來思路很簡單,於是自己寫了個kmeans的jar包,可以隨機或者按順序取初始聚類中心,可以輸出參數信息及各個點的所屬聚類,以及各個聚類的中心坐標。參數結構有點類似OpenCV的kmeans,自己覺得架構得還不錯,貼出來分享了。

1. kmeans.jar下載及使用
2. kmeans算法簡介
3. 源碼簡介


一、kmeans.jar下載及使用
  下載地址:https://sourceforge.net/projects/yuanboshekmeans/files/
  kmeans.jar為應用包,kmeans_src.jar為對應的源碼包,kmeans_full.jar兩者都包含。

  新建java工程,引入kmeans.jar包(不會引包的參考),添加帶有main函數的class,然后在main函數內加入測試代碼

 1 import kmeans.*;
 2  
 3  public class jmain {
 4      public static void main(String[] args) {
 5          double[][] points = {{0, 0}, {4, 10}, {1, 1}, {5, 8}}; //測試數據,四個二維的點
 6          kmeans_data data = new kmeans_data(points, 4, 2); //初始化數據結構
 7          kmeans_param param = new kmeans_param(); //初始化參數結構
 8          param.initCenterMehtod = kmeans_param.CENTER_RANDOM; //設置聚類中心點的初始化模式為隨機模式
 9          
10          //做kmeans計算,分兩類
11          kmeans.doKmeans(2, data, param);
12          
13          //查看每個點的所屬聚類標號
14          System.out.print("The labels of points is: ");
15          for (int lable : data.labels) {
16              System.out.print(lable + "  ");
17          }
18      }
19  }

  運行結果為:

k=2
attempts=2
criteriaBreakCondition=0.0
The number of each classes are: 
2 2 

The labels of points is: 0  1  0  1  

  表示分兩類,進行了兩次迭代,兩個聚類內各包含2個點,最后一行表示第一個和第3個點為0號聚類,第二和第四個點為1號聚類。
  想獲取更多信息和使用方法請查看源碼部分

[Go Top]


二、kmeans算法
  (待續)

[Go Top]


三、源碼簡介

  (待續)

[Go Top]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM