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

📄 calr.m

📁 智能微粒群为最小二乘支持向量机调参的示例程序(LSSVM+PSO)
💻 M
字号:
function [alpha,bias]=calr(trnX,trnY,ker,C)
fprintf(' Support Vector Regressing ....\n')
fprintf('-------------------------------\n')
n = size(trnX,1);%训练样本的个数
epsilon = svtol(C);%表示C的下界
fprintf('Constructing ...\n');
H = zeros(n,n);  
for i=1:n
   for j=1:n
       H(i,j) = svkernel(ker,trnX(i,:),trnX(j,:));
   end
end
A=H+1/(2*C)*eye(n);%开始构造线性方程组
e=ones(n,1);
B=[0 e';e A];%方程组为BX=D
D=[0;trnY];
fprintf('Optimising ...\n');
st = cputime;%计时
%最小二乘法
[L,U]=lu(B);%对矩阵B进行LU分解,L*U=B,其中U为上三角矩阵,L为下三角阵,则方程组变形为LUX=D
Y=L\D;% \表示矩阵左除,即Y等于L左除D,即表示Y=UX
X=U\Y;% 然后又由UX=Y可得X等于U左除Y 
bias=X(1);%X的第一项即为b
alpha=zeros(n,1);
for i=1:n
  alpha(i)=X(i+1);%X的其他项对应所有的拉格朗日乘子
end  
svi = find( abs(alpha) > epsilon );
nsv = length( svi );%nsv表示支持向量的个数
fprintf('Support Vectors : %d (%3.1f%%)\n',nsv,100*nsv/n);

⌨️ 快捷键说明

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