2016-02-20 74 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"); 
相關問題