我使用了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) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method.invoke(Method.java:497)at weka.classifiers.functions.LibSVM.invokeMethod(LibSVM.java:1339)at at weka.classifiers.functions.LibSVM.distributionForInstance(LibSVM.java:1497) 在bgu.ml.Main.main(Main.java:36)引起: java.lang.ArrayIndexOutOfBoundsException:1 at libsvm.svm.svm_get_labels(svm.java:2296)... 9更多
由于
答案 0 :(得分:1)
问题出现了,因为火车组和测试装置的标题不相同。 更深刻的是,当测试只是假的时候,火车有真假两类的实例。