LIBSVM-mat使用方法

Libsvm-mat也是libsvm大家族的成員,只是matlab下的版本而已。


在libsvm的網站上下載libsvm-mat-2.9-1.zip文件,解壓後放在任意目錄下(比如c:/libsvm-mat-2.9-1下)

打開matlab,切換到c:/libsvm-mat-2.9-1目錄下(cd c:/libsvm-mat-2.9-1),鍵入以下命令:

 

mex -setup

 

Matlab會詢問你是否需要locate installed compiler,選擇y,然後根據需要選擇一個編譯器即可。確認時選擇y即可。

 (但是這裏通常有一個問題,就是MATLAB根本不知道你有沒有安裝c++編譯器,所以可能產生錯誤,所以如果選擇y不行,那就選擇n,自己來選擇要用的c++編譯器,前提條件是你必須安裝了對應的c++編譯器)

 

這部分編譯完成後,然後鍵入

 

make

 

就會生成svmtrain.dll,svmpredict.dll和read_sparse.dll這三個文件(對於Matlab 7.1及以上版本,生成的對應文件爲svmtrain.mexw32,svmpredict.mexw32和read_sparse.mexw32)

 

然後可以在matlab的菜單File->Set Path->Add Folder裏,把c:/libsvm-mat-2.9-1目錄添加進去,這樣以後在任何目錄下都可以調用libsvm的函數了。

 

爲了檢驗libsvm和matlab之間的接口是否已經配置完成,可以在matlab下執行以下命令:

 

load heart_scale.mat

 

model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 2');

 

如果運行正常並生成了model這個結構體(其中保存了所有的支持向量及其係數),那麼說明libsvm和matlab之間的接口已經完全配置成功。

 

使用時,根據你自己的訓練樣本的特徵數組、類別數組,對例子中的參數做對應替換就行了。
>> model = svmtrain(heart_scale_label, heart_scale_inst, '-c 1 -g 0.07');
自己使用時,heart_scale_label換成你自己的類別,heart_scale_inst換成自己的特徵屬性矩陣。

這個運行後就得到了訓練後的model模型。

下面就要使用model進行預測了:
>> [predict_label, accuracy, dec_values] = svmpredict(heart_scale_label, heart_scale_inst, model);

預測使用的數據格式和訓練樣本的相同,heart_scale_label換爲你測試樣本的類別列向量,heart_scale_inst換成你測試樣本 的特徵屬性矩陣。運行結果,就在predict_label, accuracy, dec_values三個變量中。

類別預測時,預測的類別放在predict_label中;迴歸預測時,結果放在dec_values中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章