簡體   English   中英

使用具有最佳C和Gamma的libsvm訓練數據

[英]train data using libsvm with best C and Gamma

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM