LibSVM.classifyInstance(实例实例)抛出java.lang.NullPointerException

LibSVM.classifyInstance(Instance instance) throw java.lang.NullPointerException

我使用了 Maven LibSVM 版本 1.0.6 (link)

如果我在创建模型之前设置 setProbabilityEstimates(true),我在尝试对新实例进行分类时会收到 NullPointerException。

我的代码:

LibSVM svm;
svm = new LibSVM();
svm.setProbabilityEstimates(true);
try {
    svm.buildClassifier(training);
} catch (Exception e) {
    e.printStackTrace();
}

svm.classifyInstance(newInstance);

异常堆栈跟踪:

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at weka.classifiers.functions.LibSVM.invokeMethod(LibSVM.java:1339) at weka.classifiers.functions.LibSVM.distributionForInstance(LibSVM.java:1497) at bgu.ml.Main.main(Main.java:36) Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at libsvm.svm.svm_get_labels(svm.java:2296) ... 9 more

谢谢

出现这个问题是因为 headers 训练集和测试集不一样。 更深入地说,train 有 true 和 false 的实例 类,而 test 只有 false。