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。
我使用了 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。