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]

posted @ 2012-11-04 21:46 FreedomShe 阅读(...) 评论(...) 编辑 收藏