LIBSVM SVM in octave - 如何使用自己(没有" svmpredict")使用从" svmtrain"返回的参数。

时间:2017-02-27 17:38:51

标签: c++ octave svm libsvm

嗨我之前有ANN(人工神经网络)的背景,我用八度音程做了。我成功地将网络从八度转换为c ++。

我这样做的方法是查看从网络返回的参数(wight矩阵和偏差矩阵)并将其复制到c ++参数并进行正确的计算。

现在我开始使用八度音阶的svm,用LIBSVM我成功训练

这里是训练的代码:

Writer

以及预测验证组(新组)的结果 这里是预测代码:

model = svmtrain(vOutput, vInput,'-g 1 -c 100 ' ); 

它工作得很好..但我需要用c ++来做,所以我想了解如何在不使用svmpredict构建函数的情况下自己预测结果。

我在火车后得到的参数是:

[predicted_label, accuracy, dec_values] = svmpredict(targetHit', inputHit, model); 

但我不知道如何使用这些参数。 如果有人可以帮我解释如何在不使用svmpredict函数的情况下手动使用参数。

O.k我找到了这段代码:

fieldnames(model)
ans =
{
  [1,1] = Parameters
  [2,1] = nr_class
  [3,1] = totalSV
  [4,1] = rho
  [5,1] = Label
  [6,1] = sv_indices
  [7,1] = ProbA
  [8,1] = ProbB
  [9,1] = nSV
  [10,1] = sv_coef
  [11,1] = SVs
} 

但它与svmpredict的结果并不相容..

1 个答案:

答案 0 :(得分:1)

此代码可以帮助您:

w = (model.sv_coef' * full(model.SVs));
bias = -model.rho;
predictions = sign(inputMiss * w' + bias);

但它与svmpredict的结果不兼容 - >它应该适合(再次检查。