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

📄 bsvkernel.m

📁 Matlab codes for Hidden Sapce Support vector machines
💻 M
字号:
function k = bsvkernel(u,v,kernel,kernelparam)%  BSVKERNEL kernel for Support Vector Methods%%  Usage: k = svkernel(u,v,kernel kernelparam)%%  Parameters:       u,v -           - input parameters%                    kernel          - kernel type%                    kernelparam     - kernel parameter%              %%  Values for ker: 'linear'  -%                  'poly'    - kenelparam(1) is degree of polynomial%                  'rbf'     - kenelparam(1) is width of rbfs (sigma)%                  'sigmoid' - kenelparam(1) is scale, p2 is offset%                  'spline'  -%                  'bspline' - kenelparam(1) is degree of bspline%                  'fourier' - kenelparam(1) is degree%                  'erfb'    - kenelparam(1) is width of rbfs (sigma)%                  'anova'   - kenelparam(1) is max order of terms%                if (nargin < 1) % check correct number of arguments     help svkernel  else     p2=-1;    % could check for correct number of args in here    % but will slow things down further    switch lower(kernel)      case 'linear'        k = sum(u.*v,2) +1;      case 'poly'        k = (sum(u.*v,2) + 1).^kernelparam(1);      case 'rbf'        k = exp(-sum((u-v).^2,2)/2/(kernelparam(1)^2));       case 'crbf'        k = exp(-sum(conj(u-v).*(u-v),2)/2/(kernelparam(1)^2));      case 'coswave'        k = exp(-sum((u-v).^2,2)/2/(kernelparam(1)^2)).*prod(cos((u-v)/kernelparam),2);      case 'wave2'        tempx=sum((u-v).^2,2);        k = exp(-tempx/kernelparam(1)^2).*prod(1-2*((u-v)/kernelparam(1)).^2,2);      case 'wave4'        tempx=sum((u-v).^2,2);        k = exp(-tempx/kernelparam(1)^2).*prod(1-4*((u-v)/kernelparam(1)).^2+4/3*((u-v)/kernelparam(1)).^4,2);      case 'wave6'        tempx=sum((u-v).^2,2);        k = exp(-tempx/kernelparam(1)^2).*prod(1-6*((u-v)/kernelparam(1)).^2+4*((u-v)/kernelparam(1)).^4-8/15*((u-v)/kernelparam(1)).^6,2);      case 'cauchy'          k = kernelparam(1).^2./( kernelparam(1).^2 + sum((u-v).^2,2));      case 'erbf'        k = exp(-sqrt(sum((u-v).^2,2))/kernelparam(1));      case 'sinc'        k = sinc((u-v)/pi/kernelparam(1));      case 'cos'        temp = sum(u.*v,2)./kernelparam(1);        k = cos(temp);      case 'sigmoid'        k = tanh(kernelparam(1)*u*v'/length(u) + p2);      case 'fourier'        z = sin(kernelparam(1) + 1/2)*2*ones(length(u),1);        i = find(u-v);        z(i) = sin(kernelparam(1) + 1/2)*(u(i)-v(i))./sin((u(i)-v(i))/2);        k = prod(z);      case 'spline'        z = 1 + u.*v + (1/2)*u.*v.*min(u,v) - (1/6)*(min(u,v)).^3;        k = prod(z);      case 'bspline'        z = 0;        for r = 0: 2*(kernelparam(1)+1)          z = z + (-1)^r*binomial(2*(kernelparam(1)+1),r)*(max(0,u-v + kernelparam(1)+1 - r)).^(2*kernelparam(1) + 1);        end        k = prod(z);      case 'anovaspline1'        z = 1 + u.*v + u.*v.*min(u,v) - ((u+v)/2).*(min(u,v)).^2 + (1/3)*(min(u,v)).^3;        k = prod(z);       case 'anovaspline2'        z = 1 + u.*v + (u.*v).^2 + (u.*v).^2.*min(u,v) - u.*v.*(u+v).*(min(u,v)).^2 + (1/3)*(u.^2 + 4*u.*v + v.^2).*(min(u,v)).^3 - (1/2)*(u+v).*(min(u,v)).^4 + (1/5)*(min(u,v)).^5;        k = prod(z);      case 'anovaspline3'        z = 1 + u.*v + (u.*v).^2 + (u.*v).^3 + (u.*v).^3.*min(u,v) - (3/2)*(u.*v).^2.*(u+v).*(min(u,v)).^2 + u.*v.*(u.^2 + 3*u.*v + v.^2).*(min(u,v)).^3 - (1/4)*(u.^3 + 9*u.^2.*v + 9*u.*v.^2 + v.^3).*(min(u,v)).^4 + (3/5)*(u.^2 + 3*u.*v + v.^2).*(min(u,v)).^5 - (1/2)*(u+v).*(min(u,v)).^6 + (1/7)*(min(u,v)).^7;        k = prod(z);      case 'anovabspline'        z = 0;        for r = 0: 2*(kernelparam(1)+1)          z = z + (-1)^r*binomial(2*(kernelparam(1)+1),r)*(max(0,u-v + kernelparam(1)+1 - r)).^(2*kernelparam(1) + 1);        end        k = prod(1 + z);      otherwise        k = u*v';    end  end

⌨️ 快捷键说明

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