【发布时间】:2016-06-02 08:12:07
【问题描述】:
我的模型位于硬盘驱动器 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-> Attribute->StringToVector。 然后我选择了 NaiveBayesMultinomial 并将我的模型保存在我的驱动器中。 现在当我使用 Java 时,我得到了错误:weka.classifiers.meta.FilteredClassifier cannot be cast to weka.classifiers.bayes.NaiveBayesMultinomial.
我认为必须有一种方法告诉代码如何反转 StringToVector 然后使用:
NaiveBayesMultinomial NBM =(NaiveBayesMultinomial) weka.core.SerializationHelper.read("D:/MultiNomial.model")
【问题讨论】:
-
作为异常状态,序列化分类器不是您要强制转换的类型。
-
我确信它们是相同的模型分类器算法。我还创建了另一个模型 J48 并转换为 J48 并且有同样的错误! weka.classifiers.meta.FilteredClassifier 不能转换为 weka.classifiers.trees.J48
-
问题是因为我使用FilteredClassifier "StringToVector" 并且代码不支持在应用分类器算法之前如何在反向模式下完成?
-
@qqilihq 更新了问题
标签: java weka text-classification