⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svmtrn.asv

📁 This is a support vector machine program developed based on quadprog. Polynomial and RBF kernel are
💻 ASV
字号:
function [alpha_s, y_s, x_s, b0] = SVMtrn(X,y,K,K_p)

% Kernel,  K = 1 : Polynomial,  K = 2 : RBF,  K_p : Kernel Parameter
% alpha_s : Support vector
% y_s & x_s : train data according to S.Vs
% b0 : intercept

Q = zeros(length(X), length(X));  % H = Q
if K == 1
    for i = 1:length(X)
        for j = 1:length(X)
            Q(i,j) = y(i)*y(j)*((X(i,:)*X(j,:)'+1).^K_p);
        end
    end
elseif K == 2
    for i = 1:length(X)
        for j =1:length(X)
            Q(i,j) = y(i)*y(j)*exp(-((norm((X(i,:)-X(j,:))))^2)/(2*K_p^2));
        end
    end
else
end

f = -(ones(length(X),1));
Aeq = y';
beq = 0;
lb = zeros(length(X),1);
x0 = zeros(length(X),1);

options = optimset('LargeScale', 'off');
alpha = quadprog(Q+1e-10*eye(length(X)), f, [], [], Aeq, beq, lb, [], x0, options);

% select support vectors.
s_idx = find(alpha > 1e-10);

alpha_s = alpha(s_idx);
y_s = y(s_idx); 
x_s = X(s_idx,:);

% compute b0 using first support vector
if K == 1
    sum = 0;
    for i=1:length(s_idx)
        sum = sum + alpha_s(i)*y_s(i)*((x_s(i,:)*x_s(1,:)'+1).^K_p);
    end
    b0 = y_s(1) - sum;
elseif K == 2
    sum = 0;
    for i=1:length(s_idx)
        sum = sum + alpha_s(i)*y_s(i)*exp(-((norm((x_s(i,:)-x_s(1,:))))^2)/(2*K_p^2));
    end
    b0 = y_s(1) - sum;
else
end
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -