使用 LibSVM 的 Java 代码中的 Weka 错误"cannot handle numeric class"



我试图使用Weka使用基于LibSVM的分类器,但我得到了这个错误:

Exception in thread "main" weka.core.UnsupportedAttributeTypeException:weka.classifiers.functions.LibSVM: Cannot handle numeric class!
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.test(Unknown Source)
    at weka.core.Capabilities.testWithFail(Unknown Source)
    at weka.classifiers.functions.LibSVM.buildClassifier(Unknown Source)
    at imgclassifier.ImgClassifier.main(ImgClassifier.java:45)
Java Result: 1

这是我的代码:

try {
   File f = new File("australian.txt");
   LibSVMLoader loader = new LibSVMLoader();
   loader.setSource(f);
   Instances i = loader.getDataSet();
   LibSVM svm = new LibSVM();
   svm.buildClassifier(i);
}catch (IIOException e) {
   e.printStackTrace();
}

australian.txt就是一个例子:LibSVM数据集有人能解释一下错误在哪里吗?提前感谢

我不能批评您的整个方法,但您缺少的一项重要内容是告诉SVM您想要进行回归。(与许多人的印象相反,LibSVM可以进行回归;请参阅http://www.csie.ntu.edu.tw/~cjlin/libsvm/-"libsvm对于…回归(epsilon SVR,nu SVR)…")

你需要这样做来告诉它做回归:

svm.setSVMType(new SelectedTag(LibSVM.SVMTYPE_EPSILON_SVR, LibSVM.TAGS_SVMTYPE)); // -S 3=epsilon-SVR

/抢劫

PS-直到我使用Java面向对象的方法,使用LibSVM对象上的方法,而不是使用基于字符串的"选项"方法,对所有参数进行编码,我仍然会出现"无法处理数值类"错误。我不知道为什么会这样,可能是转移注意力,但事实确实如此。

设置要预测的列的类索引。试试这个吧,

i.setClassIndex( train.numAttributes() - 1 );

相关内容

最新更新