我正在使用 libsvm并且文档使我相信有一种方法可以输出输出分类准确性的可信概率。是这样吗?如果是这样,谁能提供一个清楚的例子说明如何在代码中做到这一点?
目前,我正在以下列方式使用 Java 库
SvmModel model = Svm.svm_train(problem, parameters);
SvmNode x[] = getAnArrayOfSvmNodesForProblem();
double predictedValue = Svm.svm_predict(model, x);
最佳答案
鉴于您的代码片段,我假设您想要使用与 libSVM 打包在一起的 Java API ,而不是 jlibsvm 提供的更详细的.
要启用概率估计预测,请使用svm_parameter 字段 训练模型 probability 设置为 1。然后,只需更改您的代码,使其调用 svm 方法 svm_predict_probability
而不是 svm_predict
。
修改您的代码段,我们有:
parameters.probability = 1;
svm_model model = svm.svm_train(problem, parameters);
svm_node x[] = problem.x[0]; // let's try the first data pt in problem
double[] prob_estimates = new double[NUM_LABEL_CLASSES];
svm.svm_predict_probability(model, x, prob_estimates);
值得一提的是,使用多类别概率估计进行训练可以改变分类器做出的预测。有关更多信息,请参阅问题 Calculating Nearest Match to Mean/Stddev Pair With LibSVM .
关于java - 如何使用 libsvm 计算多类预测的概率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761590/