我们使用 Java-ML(LibSVM) 来对多类别问题执行 SVM 算法
Classifier clas = new LibSVM(); clas.buildClassifier(data); Dataset dataForClassification= FileHandler.loadDataset(new File(.), 0, ","); /* 正确和错误预测的计数器 */ int correct = 0, wrong = 0; /* 对所有实例进行分类并与正确类别值进行检查 */ 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++; }
classDistribution()
返回一个标准向量(意味着所有值都是0,只有一个值等于1)
java-ml – http://java-ml.sourceforge.net/
回答:
尽管有其他回答,但 SVM 和 LibSVM 确实可以输出概率估计。然而,我相当确定你无法从 Java-ML 中使用这一功能。文件 LibSVM.java
始终只引用函数 svm_predict_values
,而从不引用 svm_predict_probabilities
。如果你确实需要这个功能,将其添加到 Java-ML 中应该不会太难。