当使用在maven项目A中训练的模型到maven项目B时,在相同的Maven依赖下,不兼容的模型类

时间:2016-11-02 18:31:55

标签: maven weka prediction

我有一个大型maven项目A,我使用weka库来训练模型。现在我使用与A相同的maven依赖创建另一个小型maven项目B,并希望使用在A中训练的模型。

当我使用SerializationHelper类来读取模型并使用模型来预测项目B中的新实例时,它会遇到一些错误,例如模型的不兼容类(参见下图)。我只是想知道如果对A和B的maven依赖是相同的,是否有办法在项目B中使用A中训练的模型。或者我必须重新训练B中的模型并在B中使用它。谢谢。

New exception

Classifier cls = (Classifier) weka.core.SerializationHelper.read(model);
double clsLabel = cls.classifyInstance(Data.instance(i));

New Exception

1 个答案:

答案 0 :(得分:0)

SerializationHelper应该用于不同的项目和不同的机器。你的错误应该在其他地方。请尝试以下建议。

  1. 您的项目A和项目B具有不同的Java编译器设置。可能是A是5.0而B是8.0。
  2. 您的模型文件已损坏。首先在保存它的项目中尝试,项目A.
  3. 您正在保存不同的对象而不是分类器。尝试将您的班级名称打印到system.out并查看。
  4.  Object objModel = weka.core.SerializationHelper.read(model);
     String modelClassName = objModel.getClass().getCanonicalName();
     System.out.println(objModel);
    
    1. 对于Weka分类器,arff文件'标题应该相同,完全相同。如果您的培训和测试arff文件头不相同。你会遇到问题。