我在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);
当它想要构建(最后一行)时,它会得到一个错误,因为它只能获得一个集群。我该如何解决这个错误?
答案 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)
欢呼声