加载模型上的Java libSVM NullPointerException

时间:2016-12-05 17:41:32

标签: java libsvm

我一直在将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的其他元素 - 模型不为空;但是,当我试图预测给定矢量的结果时,它会崩溃。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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