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

來源:互聯網
上載者:User

資料採礦作業要做聚類,用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=2attempts=2criteriaBreakCondition=0.0The 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]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.