2

マルチクラス問題で SVM アルゴリズムを実行するために、Java-ML(LibSVM) を使用しています。

        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 に等しい値が 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

私の知る限り、LibSVMは決定論的分類子です。つまり、表示される唯一の分布は単一のクラス、つまり標準ベクトルに集中しています。これは、0.0 と 1.0 以外の値を与える可能性がある Naive Bayes などの確率分類器とは異なります。

于 2011-06-26T17:53:08.063 に答える