【问题标题】:matlab libsvm: unable to predictmatlab libsvm:无法预测
【发布时间】:2015-01-07 07:34:30
【问题描述】:

我在 Matlab 上使用 libsvm。我想建立一个模型并使用这个模型进行预测。 svmpredict ([predict_label, accuracy_all, prob_values]) 的返回是空的。这是我的简单代码:

svm_model = svmtrain([train_label],[train],'-t 2, -c 100 -q');
[predict_label, accuracy_all, prob_values] = svmpredict(testlabels,testdata,svm_model,'-q, -b 1');

[predict_label, accuracy_all, prob_values] 是 0x0 矩阵。而且Matlab也显示了一些警告信息:

Usage: [predicted_label, accuracy, decision_values/prob_estimates] = svmpredict(testing_label_vector, testing_instance_matrix, model, 'libsvm_options')
Parameters:
  model: SVM model structure from svmtrain.
  libsvm_options:
    -b probability_estimates: whether to predict probability estimates, 0 or 1 (default 0); one-class SVM not supported yet
Returns:
  predicted_label: SVM prediction output vector.
  accuracy: a vector with accuracy, mean squared error, squared correlation coefficient.
  prob_estimates: If selected, probability estimate vector.

谁能帮帮我?

【问题讨论】:

  • 问题已解决。预测中不应该有“-q”。我认为 predict 不支持安静模式。

标签: matlab libsvm


【解决方案1】:

SVM 模型中的 q 是什么?它的价值在哪里?

SVM 中有两个参数需要明确定义 c 和 g ,您已将 100 作为 c 的值,但 q 没有值(或者必须是称为 gamma 的 g)

这是你需要的

 cmd = ['-t 2 -c ',num2str(C), ' -g ',num2str(gamma) ];
model = svmtrain2(trainClass, trainData, cmd);
[predClass, acc, decVals] = svmpredict(testClass, testData, model);

另外我认为svmtrain必须重命名为svmtrain2以避免与matlab的svmtrain函数混淆。

【讨论】:

  • -q 表示静默模式,它会阻止 svm 的所有输出。另外我使用了默认的 gamma,所以我没有指定它。
猜你喜欢
  • 2011-05-31
  • 2013-05-18
  • 2015-11-26
  • 2017-07-08
  • 2013-07-20
  • 2014-06-04
  • 2014-06-20
  • 2016-05-25
  • 2014-06-12
相关资源
最近更新 更多