?? 最小二乘支持向量機(jī)軟測(cè)量.m
字號(hào):
format long
A=xlsread('f:\學(xué)習(xí)\畢業(yè)設(shè)計(jì)\2002PTA數(shù)據(jù)');
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要求調(diào)的參數(shù)就兩個(gè)。gam和sig2是最小二乘支持向量機(jī)的參數(shù),其中g(shù)am是正則化參數(shù), 決定了適應(yīng)誤
%差的最小化和平滑程度,sig2是RBF函數(shù)的參數(shù)。在工具箱中有一個(gè)函數(shù)gridsearch可以在一定的范圍內(nèi)用來
%尋找最優(yōu)的參數(shù)范圍。type有兩種類型,一種是classfication,用于分類,一種是function estimation,用于函數(shù)回歸。
[alpha,b]=trainlssvm({P_train,T_train,type,gam,sig2,'RBF_kernel','preprocess'});
%Trainlssvm函數(shù)是LS2SVM工具箱的重要函數(shù)之一,是最小二乘支持向量機(jī)的訓(xùn)練函數(shù).其中′RBF_kernel′是表明核函數(shù)是RBF函數(shù).
%核函數(shù)還有Lin_kernel,Poly_kernel等.alpha是支持向量, b是閾值。preprocess是表明數(shù)據(jù)已經(jīng)進(jìn)行歸一化,也可以是'original’,
%表明數(shù)據(jù)沒有進(jìn)行歸一化,缺省時(shí)是'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);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -