【问题标题】:Using a saved model to test data through Java code (Weka)使用已保存的模型通过 Java 代码测试数据(Weka)
【发布时间】:2018-06-05 17:46:06
【问题描述】:

我对机器学习完全陌生,所以在某些情况下我的理解可能是错误的。我正在尝试通过使用 weka 通过 Java 代码加载保存的模型来测试数据。

    Instances testingData = readArffFile(testFile);
            try
            {
                LibSVM cls = (LibSVM) weka.core.SerializationHelper.read(model);

                Evaluation eval = new Evaluation(testingData);
                eval.crossValidateModel(cls, testingData, 10, new Random(1));
              //eval.evaluateModel(cls, testingData);
}

当我保存模型时,我使用了交叉验证。 现在我有点困惑,是使用eval.crossValidateModel() 还是eval.evaluateModel()

如果我使用evaluateModel(),它会给我错误的准确性(远高于应有的水平)。我认为这是因为<Evaluation eval = new Evaluation(testingData);> 行在相同数据上对其进行训练,然后在相同数据上进行测试。这不是我想要的。我想在没有训练的情况下测试模型上的数据(我认为训练后保存模型)

如果我使用eval.crossValidateModel(),我认为它仍在再次训练模型,因为据我所知,交叉验证将数据集拆分为 k-folds,然后对 k-1 进行训练,然后对剩余的折叠进行测试。

那么有没有办法只使用这个加载的模型进行测试?

提前致谢。

【问题讨论】:

    标签: java machine-learning weka machine-learning-model


    【解决方案1】:

    尝试在火车数据上创建evalEvaluation eval = new Evaluation(train);

    如果您没有火车数据,请使用: Evaluation eval = new Evaluation(test); eval.useNoPriors(); 创建eval后使用eval.evaluateModel(classifier, test);对测试数据进行分类。

    【讨论】:

      猜你喜欢
      • 2013-05-24
      • 2015-03-07
      • 2017-03-06
      • 2011-10-22
      • 2016-06-02
      • 1970-01-01
      • 2016-11-12
      • 2018-04-03
      • 2014-06-06
      相关资源
      最近更新 更多