我的硬盘在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")
答案 0 :(得分:1)
尝试
NaiveBayesMultinomial NBM = new NaiveBayesMultinomial();
NBM = (NaiveBayesMultinomial)weka.core.SerializationHelper.read("D:/MultiNomial.model");