Java-ML (LibSVM) Как я могу получить вероятности классов? - PullRequest
2 голосов
/ 26 июня 2011

Мы используем 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 ]

1 голос
/ 27 июня 2011

Несмотря на другие ответы, возможно вывести оценки вероятности для SVM, и LibSVM делает это.Тем не менее, я вполне уверен, что вы не можете использовать эту функцию из Java-ML.Файл LibSVM.java относится только к функции svm_predict_values и никогда svm_predict_probabilities.Вероятно, было бы не сложно добавить эту функциональность в Java-ML, если бы вы почувствовали, что она вам действительно нужна.

0 голосов
/ 26 июня 2011

AFAIK, LibSVM - это детерминированный классификатор, означающий, что вы увидите только те распределения, которые сосредоточены на одном классе, то есть на стандартном векторе.Это отличается от вероятностного классификатора, такого как Наивный Байес, который может давать значения, отличные от 0,0 и 1,0.

...