在我的 JAVA 代码中使用带有 weka 的 EM 聚类?
Posted
技术标签:
【中文标题】在我的 JAVA 代码中使用带有 weka 的 EM 聚类?【英文标题】:Using EM clustering with weka in my JAVA code? 【发布时间】: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)!” 【参考方案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”。以上是关于在我的 JAVA 代码中使用带有 weka 的 EM 聚类?的主要内容,如果未能解决你的问题,请参考以下文章
在java代码中使用weka过滤器(RemoveType)的选项p
尝试使用带有 Weka 的 Java 对新实例进行分类时出错 - 未定义输出实例格式
如何使用带有 Java 代码的 WEKA 评估类来显示标准差值
无法在 weka java *WEKA*DUMMY*STRING*FOR*STRING*ATTRIBUTES* 中获取类标签