嗨,我正在使用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/