svm與matlab中的libsvm應用

2022-07-31 12:54:15 字數 2376 閱讀 2137

有關svm教程以及教材已經很多,資料中介紹的都很詳細。略過數學證明,用語言直觀簡潔地描述:svm就是乙個可以控制引數改變分隔平面的乙個二元分類器,得到1和-1的分類結果。除了分類,svm在加入了eps誤差引數之後可根據點距離分隔平面的遠近(?)給出具體的回歸函式值(?),這時的support vector machine就變身成為support vector regression,也就是svr。

至於各個引數具體的意義和設定,我也還是一知半解,在以後的應用中慢慢再學習。

matlab給出的是當前版本的matlab中可以支援的compiler。我選擇了vc 2008,

然後將路徑定位到軟體所在資料夾就可以了。之後再按照上述的教程安裝。

1

clear

2clc

3 riverdata=[8.07 48.8 0.27 0.0191 3.0;2.70 200.0 1.55 0.074 1500.0;2.35 70 0.43 0.10 110;

4 3.84 72 0.76 0.13 260;0.85 47.0 0.32 0.067 14.0;2.10 60.0 0.94 0.104 54.0;

5 2.1 53 0.83 0.107 47;0.4 19 0.16 0.116 9.9;0.85 34 0.15 0.055 9.5;

6 0.76 64.0 0.67 0.27 35;1.56 24 0.71 0.043 9.6;1.1 59 0.88 0.12 42;

7 2.16 69 1.55 0.17 160;0.94 26 0.34 0.067 33;0.91 37 0.4 0.067 39;

8 2.04 104 0.58 0.05 315;4.75 127 0.64 0.08 670;0.49 16.0 0.27 0.08 20;

9 0.85 18 0.6 0.1 21;0.58 25 1.01 0.14 14;2.47 34 0.82 0.18 65;

10 0.43 16 0.37 0.05 14;0.58 36 0.21 0.049 8.1];

11 riverdata_train=riverdata(1:16,1:4);

12 riverdata_trainlabels=riverdata(1:16,5);

13 riverdata_test=riverdata(17:23,1:4);

14 riverdata_testlabels=riverdata(17:23,5);

15 %優選引數

16 mse = 10^10;

17for log2c = -10:10,

18for log2g = -10:10,

19 cmd = ['

-v 3 -c

', num2str(2^log2c), '

-g ', num2str(2^log2g) , '

-s 3 -p 0.4 -n 0.1'];

20 cv =svmtrain(riverdata_trainlabels,riverdata_train,cmd);

21if (cv 22 mse = cv; bestc = 2^log2c; bestg = 2^log2g;

23end

24end

25end

26 % %輸出引數

27 fprintf('

(best c=%g, g=%g, mse=%g)\n

',bestc, bestg, mse);

28 %構建模型

29 cmd = ['

-c ', num2str(bestc), '

-g ', num2str(bestg) , '

-s 3 -p 0.4 -n 0.1'];

30 model =svmtrain(riverdata_trainlabels,riverdata_train,cmd);

31 %模型**

32 [predict,mse]=svmpredict(riverdata_testlabels,riverdata_test,model);

33 %資料視覺化

34 figure;plot(riverdata_testlabels,'

b*-'

)35 hold on;plot(predict,'

k+-'

);36 title('

資料視覺化');

37 legend('

原始資料

','回歸資料

');

這是從網上某個論壇cp下來的別人的一段**,其中「優選引數」部分貌似是通用的一段程式(?)

用法很簡單,需要的時候參考就好。

MATLAB中新增SVM包

在本人最近無意中修改了matlab自帶的svmtrain.m檔案 其實就是之前這個檔案要修改的話,會顯示唯讀,不讓修改,但是我強行修改之後程式就報錯,重灌matlab也沒有用 安裝之後原本的問題就好了,很神奇 使用方法 2 解壓後放到d program files matlab r2009a too...

Matlab 線性分類器與SVM

利用最小二乘法求線性分類器係數 如下 function w,b leastsquares traindata,trainlabel 最小二乘法線性分類器 nums,demens size traindata traindata traindata,ones nums,1 r traindata tr...

matlab的SVM簡單的例子

svm簡單的例子,適合初學者 學習,含有精確度的表示 編譯環境為matlab x 0 1012 1 y 0 0112 1 z 111 111 其中,x,y 代表二維的資料點,z 表示相應點的型別屬性。data 1 0 0 1 2 2 1,1 0,0 1,1 x,y 構成的資料點 groups 1 1...