6

I'm trying to use a classifier LibSVM-based using Weka, but i got this error:

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

this is my code:

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 is an example taken here:LibSVM DataSets can anyone explain me where is the error? thanks in advance

4

2 回答 2

7

我不能批评你的整个方法,但你缺少的一个重要项目是告诉 SVM 你想做回归。(与很多人的印象相反,LibSVM可以做回归;见http://www.csie.ntu.edu.tw/~cjlin/libsvm/ - “LIBSVM 是… for … regression (epsilon-SVR, nu-SVR)… ")

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

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

/抢

PS - 在我使用 Java 面向对象的方法、使用 LibSVM 对象上的方法而不是使用基于字符串的“选项”方法对所有参数进行编码之前,我仍然收到“无法处理数字类”错误。我不知道这是为什么,并且可能是一个红鲱鱼,但它确实存在。

于 2015-03-17T21:23:58.653 回答
-1

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

i.setClassIndex( train.numAttributes() - 1 );
于 2015-08-10T05:12:44.827 回答