在我的JAVA代码中使用带有weka的EM群集?

时间:2015-04-16 08:04:40

标签: java cluster-analysis weka

我在weka中应用EM聚类来聚类某些点(x,y,z)。我在我的JAVA代码上写了EM:

EM em = new EM();
em.setDebug(false);
em.setDisplayModelInOldFormat(false);
em.setMaxIterations(100);
em.setMinStdDev(0.000001);
em.buildClusterer(data_to_use);

当它想要构建(最后一行)时,它会得到一个错误,因为它只能获得一个集群。我该如何解决这个错误?

1 个答案:

答案 0 :(得分:0)

您是否尝试过没有任何附加选项? e.g。

    EM clusterer = new EM();
    clusterer.buildClusterer(dataClusterer);

尝试使用过滤器来取走Class,否则它会将此视为一项功能,因此只生成1个群集,您可以使用:

    // generate data for clusterer (w/o class)
    Remove filter = new Remove();
    filter.setAttributeIndices("" + (data.classIndex() + 1));
    try {
        filter.setInputFormat(data);
    } catch (Exception e) {
        e.printStackTrace();
    }

    Instances dataClusterer = Filter.useFilter(data, filter);

    // train clusterer
    EM clusterer = new EM();

    // set further options for EM, if necessary...
    // clusterer.setNumClusters(maxNumofClusters); //-1 for n number of clusters
    clusterer.buildClusterer(dataClusterer);

另一种方法是直接在weka中进行评估(创建arff)

欢呼声