使用具有最佳C和Gamma的libsvm训练数据

时间:2013-05-17 12:26:04

标签: visual-studio-2010 machine-learning classification libsvm

您好我正在使用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来查看结果,我不知道是否应该调用其他内容?!

  

Model = svm_train(My_data,My_param); //我不知道如何填写my_param

     

svm_node Test_Vector = svm_scale_data(x); //使用与scaled_training数据相同的算法

     

double result = svm_predict(Model,Test_Vector);

由于

1 个答案:

答案 0 :(得分:1)

如果要通过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()即可。