2016-02-20 25 views
0

我在d:\ MultiNomial.model的硬盘上安装了我的模型。 该模型可以从weka正确运行。 该模型用于将使用StringToVector作为过滤器的文本分类。 我正在使用java来使用Weka API加载该模型。 这是我的源代码使用Java API加载并保存Weka模型?

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-> Attribute-> StringToVector。 然后我选择了NaiveBayesMultinomial,并将我的模型保存在我的驱动器中。 现在,当我使用Java时,出现错误:weka.classifiers.meta.FilteredClassifier无法转换为weka.classifiers.bayes.NaiveBayesMultinomial。

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

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

作为异常状态,系列化分类的类型是不你正试图施展它。 – qqilihq

+0

我相信他们是相同的模型分类器算法。我还创建了另一个型号J48,并转让给J48,并有相同的错误! weka.classifiers.meta.FilteredClassifier不能转换为weka.classifiers.trees.J48 –

+0

是因为我使用FilteredClassifier“StringToVector”而代码不支持在应用分类器算法之前如何在反向模式下完成? –

回答

1

尝试

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