【问题标题】:how to implement k-means for simple grouping in java如何在java中实现k-means进行简单分组
【发布时间】:2011-01-25 08:31:09
【问题描述】:

我想知道java中简单的k-means算法。我只想将 k-means 用于对一维数组而不是多维数组进行分组。 例如, 分组前数组由 2,4,7,5,12,34,18,25 组成 如果我们想要四组,那么我们得到了 第一组:2,4,5 第 2 组:7,12 第 3 组:18,25 第 4 组:34

【问题讨论】:

    标签: java k-means


    【解决方案1】:

    您可以查看 Weka implementation,或者如果您只需要集群而不是实现,则只需使用 Weka API。

    【讨论】:

      【解决方案2】:

      K-means 聚类的标准(启发式)算法在Wikipedia page 上介绍,以及变体和一些现有实现的链接。

      (这是编程论坛,因此可以合理地假设您能够自己编写 Java 代码……如果您找不到合适的现有实现。)

      【讨论】:

        【解决方案3】:
        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++;
        }
        

        【讨论】:

        • 你使用的是哪个库?
        【解决方案4】:

        您可以查看我的软件:SPMF data mining software

        它仅在 3 个文件中提供了 KMeans 的有效实现,因此应该很容易理解。

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

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

        【讨论】:

          猜你喜欢
          • 2021-05-04
          • 2014-05-08
          • 2020-06-21
          • 2011-07-24
          • 2011-10-04
          • 1970-01-01
          • 2012-11-20
          • 1970-01-01
          • 2013-07-24
          相关资源
          最近更新 更多