0

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

模型 = svm_train(My_data,My_param); //不知道怎么填写my_param

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

双倍结果 = svm_predict(Model,Test_Vector);

谢谢

4

1 回答 1

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().

于 2013-05-17T13:39:30.010 回答