SVM的matlab實現 CVX工具箱應用

2021-08-01 10:41:17 字數 1717 閱讀 9366

然後是**:`

%untitled2 此處顯示有關此函式的摘要

% input:

% data: num-by-dim matrix .mun is

thenumber

of data points,

% dim is

thethe dimension of a point

% labels: num-by-1 vector, specifying the

class

that each point belongs

% to +1

or -1

% output:

% w: dim-by -1 vector ,the mormal dimension of hyperpalne

% b: a scalar, the bias

[num,dim]=size(data);

cvx_begin

variables w(dim) b;

minimize (norm(w));

subject to

labels.*(data*w+b)>=1;

cvx_end

end然後隨便隨機生成了10個2維樣本,執行結果如下:

線性不可分的時候,通過引入罰函式(penalty function)來解決,使得分類誤差最小。公式如下:

minw,b

,ξi1

2∥w∥

22+c

∑i=1

lξi

s.t.

yi(w

txi+

b)≥1

−ξi,

i=1,

...,

l ξi

≥0,i

=1,.

..,l

**依然很簡單:

%untitled2 此處顯示有關此函式的摘要

% input:

% data: num-by-dim matrix .mun is

thenumber

of data points,

% dim is

thethe dimension of a point

% labels: num-by-1 vector, specifying the

class

that each point belongs

% to +1

or -1

% output:

% w: dim-by -1 vector ,the mormal dimension of hyperpalne

% b: a scalar, the bias

[num,dim]=size(data);

cvx_begin

variables w(dim) b,xi(num);

minimize (sum(w.^2)/2+c * sum(xi.^2));

subject to

labels.* (data * w+b)>=1-xi;

xi>=0;

cvx_end

end是不是很簡單?例子以後再給吧。(公式亂碼,請嘗試其它瀏覽器)

未完待續,

SVM線性分類MATLAB實現

資料集需要自行處理,這裡針對的是cancer資料集 clear ticload c users administrator desktop cancer.mat mu cancer 1 444,zi cancer 445 end,整理資料,第一列 1,2 作為標籤 cycle n 1 進行cycle...

matlab 在cvx中使用Mosek

在cvx中預設的solver是sdt3,解決一般的問題沒有問題,但是發現涉及到高維向量 e.p.求解1000 維向量 的求解時,會很慢,所以嘗試換乙個solver,以改善效能。目前嘗試了mosek,感覺是比sdt3快點的。搞了乙個晚上,總結一下。因為非professional版本的cvx不包含mos...

SVM輸出分類概率的matlab實現

說明 1 資料的標籤在最後一列 2 tr 訓練資料,te 測試資料 3 svm的引數說明 s svm型別 svm設定型別 預設0 0 c svc 1 v svc 2 一類svm 3 e svr 4 v svr t 核函式型別 核函式設定型別 預設2 0 線性核函式 u v 1 多項式核函式 ru v...