📄 最小二乘支持向量机软测量.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 + -