【问题标题】:Java libSVM NullPointerException on loaded model加载模型上的 Java libSVM NullPointerException
【发布时间】:2017-04-20 04:39:53
【问题描述】:

我一直在将 libSVM 用于 Java 项目,在对相当大的数据集进行训练后,使用 api 中的函数将模型保存到文件中。后来,我尝试加载文件以进行一些预测,但每次调用 svm.svm_predict 函数时都会收到 NullPointerException。我可以验证该代码是否适用于较小的模型文件,但对于这个较大的集合来说不断失败。以下是完整的错误信息:

Exception in thread "main" java.lang.NullPointerException
    at libsvm.Kernel.dot(svm.java:213)
    at libsvm.Kernel.k_function(svm.java:232)
    at libsvm.svm.svm_predict_values(svm.java:2349)
    at libsvm.svm.svm_predict(svm.java:2406)
    at com.svm.SVM.predict(...)
    at com.svm.SVM.main(...)

奇怪的是,我可以打印出概率并访问 SVM 的其他元素——模型不为空;但是,每当我尝试预测给定向量的结果时,它都会崩溃。有什么想法吗?

【问题讨论】:

    标签: java libsvm


    【解决方案1】:

    测试数据必须有向量中每个部分的数据。 IE。 - 如果最大的训练样本对向量有 105 个部分,那么每个测试向量必须有 105 个部分。即使你只有给定测试向量的 15 个部分,你也需要用其他 90 个元素填充它。如果您没有分配适当大小的数组,libSVM 会尝试访问给定的测试数据数组之外的元素以进行预测。

    【讨论】:

      猜你喜欢
      • 2014-04-25
      • 2012-06-02
      • 2013-07-10
      • 2015-07-06
      • 2017-02-08
      • 2012-05-28
      • 2011-12-12
      • 2013-09-03
      • 2018-05-16
      相关资源
      最近更新 更多