java - 使用 WEKA API 为聚类定义输入数据

标签 java api cluster-analysis weka

我想聚类由纬度和经度指定的点。我正在使用 WEKA API 问题在于 Instances instances = new Instances(40.01,1.02); 那么,如何在不使用 ARFF 文件的情况下指定输入数据呢?我只想将数组读入 Instances

import java.io.Reader;

import weka.clusterers.ClusterEvaluation;
import weka.clusterers.SimpleKMeans;
import weka.core.Instances;


public class test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Instances instances = new Instances(40.01,1.02);

        SimpleKMeans simpleKMeans = new SimpleKMeans();
        simpleKMeans.buildClusterer(instances);

        ClusterEvaluation eval = new ClusterEvaluation();
        eval.setClusterer(simpleKMeans);
        eval.evaluateClusterer(new Instances(instances));

        eval.clusterResultsToString();
    }

}

最佳答案

我相信您必须创建自己的实例。下面我展示了从具有两个属性(纬度和经度)的数组创建新实例。


import weka.core.Attribute;
import weka.core.DenseInstance;
import weka.core.FastVector;
import weka.core.Instances;

public class AttTest {

    public static void main(String[] args) throws Exception
    {
        double[] one={0,1,2,3};
        double[] two={3,2,1,0};
        double[][] both=new double[2][4];
        both[0]=one;
        both[1]=two;

        Instances to_use=AttTest.buildArff(both);
        System.out.println(to_use.toString());
    }

  public static Instances buildArff(double[][] array) throws Exception
  {
         FastVector      atts = new FastVector();
         atts.addElement(new Attribute("lat")); //latitude
         atts.addElement(new Attribute("lon")); //longitude

         // 2. create Instances object
         Instances test = new Instances("location", atts, 0);

         // 3. fill with data
         for(int s1=0; s1 < array[0].length; s1=s1+1)
         {
             double vals[] = new double[test.numAttributes()];
             vals[0] = array[0][s1];
             vals[1] = array[1][s1];
             test.add(new DenseInstance(1.0, vals));
         }

         return(test);
  }
}

关于java - 使用 WEKA API 为聚类定义输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20093977/

相关文章:

machine-learning - 基于小序列的后续序列预测

java - 新行,双引号在 json 数据中给出错误

java - 为什么我的应用程序的堆内存比其他应用程序少?

java - JDialog的方法返回null

mysql - 如何在数据库查询中区分 403 和 404

javascript - 图像从 AS3 到 Javascript,然后到 Facebook

c - 存储高维数据以计算子空间聚类算法(如 clique、enclus 等)中的密集单元。 ?

java - 已经在使用 utf8mb4 但得到 1366 : Incorrect string value: '\xF0\x9F\x98\x81\xF0\x9F...'

ruby-on-rails - 在 Rails 应用中使用 FourSquare API

algorithm - 按距离聚类