【问题标题】:Java-ML(LibSVM) How can I get the classes probabilities?Java-ML(LibSVM) 如何获得类概率?
【发布时间】:2011-09-22 21:13:14
【问题描述】:

我们正在使用 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/

【问题讨论】:

    标签: java machine-learning libsvm


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • libSVM 可以做多类并且可以估计分布,我只是不知道如何使用 Java-ml...
      猜你喜欢
      • 2016-12-30
      • 2016-04-04
      • 2016-06-28
      • 2014-08-11
      • 2019-10-25
      • 2018-08-28
      • 2011-02-15
      • 2020-10-09
      • 2014-11-18
      相关资源
      最近更新 更多