weka java_weka java加载模型和使用测试数据集

我尝试通过执行序列化和反序列化来构建weka模型,如weka wikii中的说明所述。使用培训中的bayesnet构建并希望加载该模型进行测试。培训和测试具有相同的属性 过滤器的设置是这样的:weka java加载模型和使用测试数据集

Remove rm = generateFilter(filterOption);

FilteredClassifier fc = new FilteredClassifier();

fc.setFilter(rm);

filterClassifier.setClassifier(randomTree);

filterClassifier.buildClassifier(data);

exportClassifier("randomTree", file, filterClassifier);

导出的代码是这个样子:

private void exportClassifier(String method, String file,

FilteredClassifier filterClassifier) throws IOException,

FileNotFoundException {

System.out.println(file + "." + method + ".model");

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(

file + "." + method + ".model"));

oos.writeObject(filterClassifier);

oos.flush();

oos.close();

}

但是当我尝试另一个测试加载它们设置这样的:

public String EvaluateModel(String file, File modelFile) throws Exception {

Instances data = populateInstance(file);

if (data.classIndex() == -1) {

System.out.println("reset index...");

data.setClassIndex(data.numAttributes() - 1);

}

FilteredClassifier classifier = (FilteredClassifier) weka.core.SerializationHelper

.read(new FileInputStream(modelFile));

//classifier.buildClassifier(data);

Evaluation eval = new Evaluation(data);

//eval.crossValidateModel(classifier, data, 10, new Random(1));

eval.evaluateModel(classifier, data);

String summaryString = eval

.toSummaryString("\nResults\n======\n", false);

System.out.println(summaryString);

System.out.println(eval.fMeasure(1) + " " + eval.precision(1) + " "

+ eval.recall(1));

return formatOutput(eval);

}

我喜欢例外:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1200

at weka.classifiers.bayes.net.estimate.DiscreteEstimatorBayes.getProbability(DiscreteEstimatorBayes.java:106)

at weka.classifiers.bayes.net.estimate.SimpleEstimator.distributionForInstance(SimpleEstimator.java:183)

at weka.classifiers.bayes.BayesNet.distributionForInstance(BayesNet.java:386)

at weka.classifiers.meta.FilteredClassifier.distributionForInstance(FilteredClassifier.java:437)

at weka.classifiers.Evaluation.evaluateModelOnceAndRecordPrediction(Evaluation.java:1439)

at weka.classifiers.Evaluation.evaluateModel(Evaluation.java:1407)

at com.besmart.raynor.dataprocessing.dataprocessor.weka.WekaRunner.EvaluateModel(WekaRunner.java:138)

at com.besmart.raynor.dataprocessing.dataprocessor.weka.WekaBatchRunner.batchReEvaluation(WekaBatchRunner.java:80)

at com.besmart.raynor.dataprocessing.dataprocessor.weka.WekaBatchRunner.main(WekaBatchRunner.java:103)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值