使用Java API加载和保存Weka模型?

时间:2016-02-20 18:54:02

标签: java weka text-classification

我的硬盘在d:\ MultiNomial.model上有我的模型。 该模型可以从weka正确运行。 构建模型是为了使用StringToVector作为过滤器对文本进行分类。 我正在使用Java来使用Weka API加载该模型。 这是我的源代码

import weka.core.*;
import weka.classifiers.bayes.NaiveBayesMultinomial;
import weka.core.converters.ConverterUtils.DataSource;
public class Classifier {

    public static void main(String[] args) throws Exception {
        // TODO Auto-generated method stub

        NaiveBayesMultinomial    NBM =(NaiveBayesMultinomial) weka.core.SerializationHelper.read("D:/MultiNomial.model");
        DataSource source= new DataSource(   "D:/test.arff");
        Instances Testset=source.getDataSet() ;
        Testset.setClassIndex(Testset.numAttributes()-1);

        Instance newInstance=Testset.instance(0);
        double PredictVal=NBM.classifyInstance(newInstance);
        System.out.println(PredictVal);

    }

}

但是当我尝试从Eclipse运行它时出现以下错误:

Exception in thread "main" java.lang.ClassCastException: weka.classifiers.meta.FilteredClassifier cannot be cast to weka.classifiers.bayes.NaiveBayesMultinomial

问题是什么?

在Weka中,我使用了FilteredClassifier - > Unsupervised->属性 - > StringToVector。 然后我选择了NaiveBayesMultinomial并将我的模型保存在我的驱动器中。 现在当我使用Java时,我得到了错误:weka.classifiers.meta.FilteredClassifier无法强制转换为weka.classifiers.bayes.NaiveBayesMultinomial。

我认为必须有一种方法告诉代码如何反转StringToVector然后使用:

NaiveBayesMultinomial  NBM =(NaiveBayesMultinomial) weka.core.SerializationHelper.read("D:/MultiNomial.model") 

1 个答案:

答案 0 :(得分:1)

尝试

NaiveBayesMultinomial NBM = new NaiveBayesMultinomial();
NBM = (NaiveBayesMultinomial)weka.core.SerializationHelper.read("D:/MultiNomial.model");