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中。