Java-ML(LibSVM)如何获取类概率?

时间:2011-06-26 07:20:20

标签: java machine-learning libsvm

我们正在使用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++;
        }

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:-2)

AFAIK,LibSVM是一个确定性分类器,这意味着您将看到的唯一分布集中在一个类,即标准向量。这与Naive Bayes等概率分类器不同,它可能给出不同于0.0和1.0的值。