将InputMappedClassifier weka实现为java

时间:2016-07-31 17:34:51

标签: java weka

我已经尝试将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);

1 个答案:

答案 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); 

如果列车数据集包含测试数据集中不存在的要素,则在评估模型之前还必须应用相反的要素。

希望它有所帮助。