Matlab 線性分類器與SVM

2021-10-06 23:01:17 字數 2047 閱讀 4912

利用最小二乘法求線性分類器係數**如下:

function

[ w,b ] = leastsquares( traindata,trainlabel )

%最小二乘法線性分類器

[nums,demens]=size(traindata)

; traindata=[traindata,ones(nums,1)]

; r=traindata'*traindata;

e=traindata'

*trainlabel;

w=inv(r)

*e; b=norm(trainlabel-traindata*w,2)

;end

svm即代入kkt條件的二次規劃問題

**如下:

function

[model] = svmtrain(x, y, c)

% 函式的核心就是對拉格朗日對偶式的二次規劃問題, 通過返回的alpha得到我們需要的支援向量

m = length(y)

; h = y * y' * ((x'

)'* x');

%線性核運算

f = -ones(m, 1)

; a = ;

b = ;

aeq = y';

beq = 0;

lb = zeros(m, 1);

ub = c * ones(m, 1);

alphas0 = zeros(m, 1);

epsilon = 0.1;

options = optimset('largescale', 'off', 'display', 'off')

; alphas1 = quadprog(h, f, a, b, aeq, beq, lb, ub, alphas0, options)

; logic_vector = abs(alphas1) > epsilon;

model.vec_x = x(logic_vector, :)

; model.vec_y = y(logic_vector)

; model.alphas = alphas1(logic_vector)

;end

function result = svmtest(model, x)

% 在svmtrain中我們主要計算的就是那幾個支援向量, 對應的, 核心就是alpha

% 現在有了alpha, 我們通過公式可以輕而易舉地計算出w, 我們還不知道b的值, 也即是超平面偏差的值

% 所有先將我們的支援向量代入到公式中, 計算出乙個臨時的w

% 對於一直的支援向量來說, 我們已經知道了它的label, 所有可以計算出b, 將超平面拉過來, 再將這個b運用到測試集中即可

% 帶入公式w = sum(alpha .

* y_sv)

*kernel(x_sv, x_test)

% x是輸入需要**的值

tmp = (model.alphas' .* model.vec_y'

*(model.vec_x*model.vec_x'))'

;% 計算出偏差, 也就是超平面的截距

total_bias = model.vec_y - tmp;

bias = mean(total_bias)

;% 我們已經得到了alpha, 因為w是由alpha表示的, 所以通過alpha可以計算出w

% w = sum(alpha .

* y_sv)

*kernel(x_sv, x_test)

% 其中y_sv是sv的標籤, x_sv是sv的樣本, x_test是需要**的資料

w = (model.alphas' .* model.vec_y'

*(model.vec_x*x'))'

; result.w = w;

result.y_pred = sign(w + bias)

; result.b = bias;

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...

SVM入門 線性分類器(2)

線性分類器 一定意義上,也可以叫做感知機 是最簡單也很有效的分類器形式.在乙個線性分類器中,可以看到svm形成的思路,並接觸很多svm的核心概念.用乙個二維空間裡僅有兩類樣本的分類問題來舉個小例子。如圖所示 c1和c2是要區分的兩個類別,在二維平面中它們的樣本如上圖所示。中間的直線就是乙個分類函式,...

支援向量機 線性分類SVM

模型原型 sklearn.svm.linearsvc penalty l2 loss squared hinge dual true,tol 0.0001,c 1.0,multi class ovr fit intercept true,intercept scaling 1,class weigh...