【问题标题】:Using EM clustering with weka in my JAVA code?在我的 JAVA 代码中使用带有 weka 的 EM 聚类?
【发布时间】:2015-06-22 12:14:58
【问题描述】:

我在 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);

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

【问题讨论】:

  • 说真的,如果您需要我们提供帮助,您需要告诉我们错误消息......也可以考虑使用 ELKI 对我来说更快,并且有更多的聚类算法。
  • 抱歉我的重播迟了。错误是:“weka.core.WekaException: weka.clusterers.EM: 没有足够的训练实例(必需:1,提供:0)!”

标签: java cluster-analysis weka


【解决方案1】:

您是否尝试过不使用任何其他选项?例如

    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)

干杯

【讨论】:

  • TNX 供您重播。它对我不起作用。我不知道为什么。我更喜欢使用“try_catch”。
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 2013-04-14
  • 2013-06-08
  • 1970-01-01
  • 2015-05-14
  • 2014-03-07
  • 2014-06-06
  • 2013-04-17
相关资源
最近更新 更多