• 大小: 4KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Matlab
  • 标签: MATLAB  

资源简介

基于matlab的svr代码示例基于matlab的svr代码示例基于matlab的svr代码示例

资源截图

代码片段和文件信息

function [nsv beta bias] = svr(XYkerClosse)
%SVR Support Vector Regression
%
%  Usage: [nsv beta bias] = svr(XYkerClosse)
%
%  Parameters: X      - Training inputs
%              Y      - Training targets
%              ker    - kernel function
%              C      - upper bound (non-separable case)
%              loss   - loss function
%              e      - insensitivity
%              nsv    - number of support vectors
%              beta   - Difference of Lagrange Multipliers
%              bias   - bias term
%
%  Author: Steve Gunn (srg@ecs.soton.ac.uk)


  if (nargin < 3 | nargin > 6) % check correct number of arguments
    help svr
  else

    fprintf(‘Support Vector Regressing ....\n‘)
    fprintf(‘______________________________\n‘)
    n = size(X1);
    if (nargin<6) e=0.0; end
    if (nargin<5) loss=‘eInsensitive‘; end
    if (nargin<4) C=Inf; end
    if (nargin<3) ker=‘linear‘; end  

    % tolerance for Support Vector Detection
    epsilon = svtol(C);

    % Construct the Kernel matrix
    
    fprintf(‘Constructing ...\n‘);
    H = zeros(nn);  
    for i=1:n
       for j=1:n
          H(ij) = svkernel(kerX(i:)X(j:));
       end
    end

    % Set up the parameters for the Optimisation problem
    switch lower(loss)
      case ‘einsensitive‘
        Hb = [H -H; -H H];
        c = [(e*ones(n1) - Y); (e*ones(n1) + Y)];  
        vlb = zeros(2*n1);    % Set the bounds: alphas >= 0
        vub = C*ones(2*n1);   %                 alphas <= C
        x0 = zeros(2*n1);     % The starting point is [0 0 0   0]
        neqcstr = nobias(ker); % Set the number of equality constraints (1 or 0)  
        if neqcstr
          A = [ones(1n) -ones(1n)]; b = 0;     % Set the constraint Ax = b
        else
          A = []; b = []; 
        end
      case ‘quadratic‘
        Hb = H + eye(n)/(2*C);
        c = -Y;
        vlb = -1e30*ones(n1);   
        vub = 1e30*ones(n1);    
        x0 = zeros(n1);              % The start

评论

共有 条评论