matlab下libSVM的用法

libSVM的安裝、編譯有問題的可以百度。下面給出一個簡單的例子,並對libSVM訓練後的model內部的幾個參數加以說明

%% 自定義的三個向量
x=[3 3;4 3; 1 1];
y=[1;1;-1];
[m,n]=size(x);
hold on;
axis([0 5 0 4]); % axis([xmin,xmax,ymin,ymax])
set(gca,'XTick',[0:1:5]) %改變x軸座標間隔顯示

for i=1:m
    if y(i)==1
        plot(x(i,1),x(i,2),'+');
    else
        plot(x(i,1),x(i,2),'o');
    end
end

%% 用libsvm訓練樣本,並進行正確率分析
model = svmtrain(y, x,'-s 0 -t 0'); %訓練svm模型
[predict_label]=svmpredict(y,x,model);%用訓練好的svm模型,預測數據

經過svmtrain後,得到svm的模型model。這個模型的幾個主要參數及意義:
rho:表示截距b,符號與一般教材上的公式相反。
sv_indices:表示求得的支持向量的索引
sv_coef:表示對應支持向量的係數ai,而且這些係數是已經和對應的標籤相乘過的。
SVs:表示具體的支持向量

有了這些信息後,可自行做預測(當然直接用svmpredict更簡單)
做線性預測時,假設查詢點爲x,預測結果=sum(ai*xi.*x)-rho,而不是sum(ai*yi*xi.*x)-rho
發佈了25 篇原創文章 · 獲贊 15 · 訪問量 41萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章