嗨,我正在使用libsvm(在VS2010中)来训练我的数据,我使用svm-scale.c成功地缩放了输入和输出数据,并且我的数据已准备好进行训练...

现在我有两个问题:

1)。

正如我从LIBSVM文档中读取的那样,我意识到首先需要训练缩放后的数据并获得模型。然后使用该模型预测最终结果,但是问题是当我想训练我的系统时,我不知道什么是我的模型参数的最佳选择,特别是(C,g)来训练我的数据!
我要做的是首先加载缩放后的数据,然后使用svm_problem将火车数据填充到svm_nodes,然后调用此函数:


  struct svm_model * svm_train(const struct svm_problem * prob,const struct svm_parameter * param);


2)。
另外我不确定libsvm函数的正确调用->我的意思是我先使用svm_train然后使用svm_predict查看结果,而且我不知道是否应该调用sth吗?


  型号= svm_train(My_data,My_param); //我不知道如何填写my_param
  
  svm_node Test_Vector = svm_scale_data(x); //使用与scaled_training数据相同的算法
  
  双重结果= svm_predict(Model,Test_Vector);


谢谢

最佳答案

如果要通过C ++调用LIBSVM,则可以通过让LIBSVM在内部进行交叉验证来优化参数。这样做时,您只需要遍历要测试的参数元组(C,gamma),并让LIBSVM执行交叉验证而不是进行适当的训练。

您可以使用以下API函数使LIBSVM执行交叉验证:

void svm_cross_validation(const struct svm_problem *prob, const struct svm_parameter *param, int nr_fold, double *target);


要回答您的另一个问题:是的,最好先调用svm_train(),然后再调用svm_predict()

关于visual-studio-2010 - 使用具有最佳C和Gamma的libsvm训练数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16609023/

10-12 21:26
查看更多