我已经尝试将Weka的InputMappedClassifier添加到java代码中。因为我的数据训练和测试不兼容。在我可以将模型用于其他分类器之前,有人可以给我一个建议吗?
有我的代码
InputMappedClassifier mapped = new InputMappedClassifier();
mapped.buildClassifier(Training);
Instances mappedClassifierDataset = mapped.getModelHeader(Training);
for (int i = 0; i < Training.numInstances(); i++) {
Instance map = mapped.constructMappedInstance(Training.instance(i));
mappedClassifierDataset.add(map);
}
System.out.println(mappedClassifierDataset);
Classifier classifier = new NaiveBayes();
classifier.buildClassifier(Training);
Evaluation eval = new Evaluation(Testing);
eval.evaluateModel(classifier, Testing);
evalResut = eval.toSummaryString("\nResults\n======\n", false);
答案 0 :(得分:0)
我想您只想使用InputMappedClassifier,因为训练和测试数据集不兼容。但这些数据集有多少不兼容? 如果您的测试日期功能是训练数据集功能的超集,则以下代码有效(列车中的所有功能也存在于测试和其他功能中)
InputMappedClassifier mappedCls = new InputMappedClassifier();
cls.buildClassifier(data);
mappedCls.setModelHeader(data);
mappedCls.setClassifier(cls);
mappedCls.setSuppressMappingReport(true);
Evaluation eval = new Evaluation(testdata);
eval.evaluateModel(mappedCls, testdata);
如果列车数据集包含测试数据集中不存在的要素,则在评估模型之前还必须应用相反的要素。
希望它有所帮助。