【发布时间】:2016-07-01 11:43:00
【问题描述】:
我目前正在开发一个系统,用于发现通过使用 Wekas 机器学习套件和分类器形成的关联。我的主要问题是构建分类器时使用的内存量超过了我的机器可以分配的量,导致它失败并且一切都停止了。我以为我发现通过使用 Naivebayes 的可更新版本,这将允许我将数据增量添加到分类器中,并且我可以为读者设置容量变量,但是我一直遇到我认为我已经解决的相同问题!代码和堆栈跟踪可以在下面找到。寻找任何解释,因为所有问题/示例都已检查无济于事。
package model;
import java.io.BufferedReader;
import java.io.FileReader;
import weka.core.Instances;
import weka.classifiers.bayes.NaiveBayesUpdateable;
import weka.core.Instance;
import weka.core.converters.ArffLoader;
import weka.core.converters.ArffLoader.ArffReader;
import java.io.File;
public class Naivebayes {
public static void main(String args[]) throws Exception {
String [] bayoptions = new String []{"-O"};
NaiveBayesUpdateable bayesins = new NaiveBayesUpdateable();
bayesins.setOptions(bayoptions);
bayesins.setDisplayModelInOldFormat(true);
BufferedReader read =
new BufferedReader(new FileReader("/Users/GinoRondelli/workspace/Movies/src/data/200TagsBroo.arff"));
ArffReader load = new ArffReader(read, 5000);
Instances naive = load.getStructure();
naive.setClassIndex(naive.numAttributes()-198);
Instance current;
while ((current = load.readInstance(naive)) != null){
naive.add(current);
}
bayesins.buildClassifier(naive);
System.out.println(bayesins);
}
}
还有堆栈跟踪:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at weka.estimators.DiscreteEstimator.<init>(DiscreteEstimator.java:59)
at weka.classifiers.bayes.NaiveBayes.buildClassifier(NaiveBayes.java:298)
at model.Naivebayes.main(Naivebayes.java:39)
【问题讨论】:
标签: java loops process classification weka