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

📄 最小二乘支持向量机软测量.m

📁 LSSVM
💻 M
字号:
format long
A=xlsread('f:\学习\毕业设计\2002PTA数据');
for a=1:232
    if A(a,1)<28000.00000,
        disp(a)
    end
end
for a=1:232
    if A(a,2)<140000.00000,
        disp(a)
    end
end
for a=1:232
    if A(a,3)<340.00000,
        disp(a)
    end 
end
for a=1:232
    if A(a,5)<190,
        disp(a)
    end 
end
for a=1:232
    if A(a,8)<40000,
        disp(a)
    end 
end
for a=1:232
    if A(a,9)<180,
        disp(a)
    end 
end
for a=1:232
    if A(a,10)<3.5,
        disp(a)
    end 
end
for a=1:232
    if A(a,11)<2600,
        disp(a)
    end 
end
for a=1:232
    if A(a,11)>3300,
        disp(a)
    end 
end
V=[13

    14

    28

    58

    66

    75

   115

   118

   119

   120

   128

   157

   192

    13

    14

    28

    58

    66

    75

   115

   157

   192

    13

    25

    58

   115

   157

   192

    13

    58

   192

     5

    13

    14

    28

    58

    59

    66

    75

    87

   105

   115

   157

   168

   192

   118

   119

   120

    75

   168

   192

    13

    28

    58

    66

    75

   115

   157

   192

   168

   212

   214

   215

   216
]';
A(V,:)=[];
p=A(:,1:10);
t=A(:,11);
%归一化处理
pp=p(1:110,:);
mean_pp=mean(pp);
std_pp=std(pp);
[P_train,mean_pp,std_pp]=prestd(pp);
tt=t(1:110,:);
mean_tt=mean(tt);
std_tt=std(tt);
[T_train,mean_tt,std_tt]=prestd(tt);
P_test=p(111:209,:);
T_test=t(111:209,:);
type='function estimation';
syms gam;
syms sig2;
[gam,sig2,cost]=tunelssvm({P_train,T_train,type,10,10,'RBF_kernel','preprocess'});
%LS2SVM要求调的参数就两个。gam和sig2是最小二乘支持向量机的参数,其中gam是正则化参数, 决定了适应误
%差的最小化和平滑程度,sig2是RBF函数的参数。在工具箱中有一个函数gridsearch可以在一定的范围内用来
%寻找最优的参数范围。type有两种类型,一种是classfication,用于分类,一种是function estimation,用于函数回归。
[alpha,b]=trainlssvm({P_train,T_train,type,gam,sig2,'RBF_kernel','preprocess'});
%Trainlssvm函数是LS2SVM工具箱的重要函数之一,是最小二乘支持向量机的训练函数.其中′RBF_kernel′是表明核函数是RBF函数.
%核函数还有Lin_kernel,Poly_kernel等.alpha是支持向量, b是阈值。preprocess是表明数据已经进行归一化,也可以是'original’,
%表明数据没有进行归一化,缺省时是'preprocess'。
p_test=[];
y=[];
Y=[];
for i=1:99;
[p_test(i,:),mean_pp,std_pp]=prestd(P_test(i,:));
y(i,:)=simlssvm({P_train,T_train,type,gam,sig2,'RBF_kernel','preprocess'},p_test(i,:));
Y(i,:)=poststd(y(i,:),mean_tt,std_tt);
end
%绘制误差曲线
plot(Y,'.')
hold on
plot(T_test)
hold off
erro=Y-T_test;
m=erro./T_test;
b1=std(erro);
b2=std(m);

⌨️ 快捷键说明

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