2

我们正在使用 Java-ML(LibSVM) 来针对多类问题执行 SVM 算法

        Classifier clas = new LibSVM();
        clas.buildClassifier(data);
        Dataset dataForClassification= FileHandler.loadDataset(new File(.), 0, ",");
        /* Counters for correct and wrong predictions. */
        int correct = 0, wrong = 0;
        /* Classify all instances and check with the correct class values */
        for (Instance inst : dataForClassification) {
            Object predictedClassValue = clas.classify(inst);
            Map<Object,Double> map = clas.classDistribution(inst);
            Object realClassValue = inst.classValue();
            if (predictedClassValue.equals(realClassValue))
                correct++;
            else
                wrong++;
        }

返回一个标准向量(意味着所有值都是 0 ,classDistributtion()但一个值等于 1)

java-ml - http://java-ml.sourceforge.net/

4

2 回答 2

1

尽管有其他答案,但可以输出 SVM 的概率估计,而 LibSVM 确实可以做到这一点。但是,我很确定您不能使用 Java-ML 中的此功能。该文件LibSVM.java只引用函数svm_predict_values,从不引用svm_predict_probabilities. 如果你觉得你真的需要它,将这个功能添加到 Java-ML 中可能不会太难。

于 2011-06-27T16:02:01.190 回答
-2

AFAIK,LibSVM 是确定性分类器,这意味着您将看到的唯一分布集中在单个类上,即标准向量。这与诸如朴素贝叶斯之类的概率分类器不同,后者可能给出不同于 0.0 和 1.0 的值。

于 2011-06-26T17:53:08.063 回答