📄 svm.asv
字号:
%样本标准化函数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%输入X为样本矩阵(行向量样本),index为标准化方法
%输出X1为标准化后的样本矩阵
% function [X1]=XStd(X,index)
% [n,m]=size(X);
% switch index
% case '标准差标准化'
% for k=1:n
% X1(k,:)=(X(k,:)-mean(X(k,:)))/std(X(k,:));
% end
% case '模标准化'
% MOData=sqrt(sum(X.^2));
% X1=X./MOData(ones(n,1),:);
% case '中心标准化'
% MEANData=mean(X);
% X1=X-MEANData(ones(n,1),:);
% case '级差标准化'
% MEANData=mean(X);
% TempData1=X-MEANData(ones(n,1),:);
% Temp=minmax(X');
% TempData2=(Temp(:,2)-Temp(:,1))';
% X1=TempData1./TempData2(ones(n,1),:);
% case '级差正规化'
% MINData=min(X);
% TempData1=X-MINData(ones(n,1),:);
% Temp=minmax(X');
% TempData2=(Temp(:,2)-Temp(:,1))';
% X1=TempData1./TempData2(ones(n,1),:);
% end
function [maxerror] =SVM(T,L)
%clear
% H1=xlsread('tafu.xls',1,'A1:I136');
H=xlsread('testy.xls',1,'A1:J60');
H1=[];
for i=1:L
if T(1,L)==1
H1=[H1,H(:,1)];
end
end
G=T(1,L+1);
C=T(1,L+2);
P=T(1,L+3);
len=size(H1,1);
H2=H1(:,9);
delta=(max(H2)-min(H2)); %反归一
delta1=min(H2);
%H=xlsread('tading.xls',1,'A1:H123');
%
% [b,a]= butter(5,0.8);
% H1=filtfilt(b,a,H);
data=H1;
data=(data-ones(size(data,1),1)*min(data))./(ones(size(data,1),1)*(max(data)-min(data)));
H1=data ;
k=1;
for L=1:len
switch L
case 1
A1=H1(2:len,1:8);
B1=H1(2:len,9);
C1=H1(1,1:8);
D1=H1(1,9);
case len
A1=H1(1:len-1,1:8);
B1=H1(1:len-1,9);
C1=H1(len,1:8);
D1=H1(len,9);
otherwise
A1=[H1(1:L-1,1:8);H1(L+1:len,1:8)];
B1=[H1(1:L-1,9);H1(L+1:len,9)];
C1=H1(L,1:8);
D1=H1(L,9);
end
% model = svmtrain(B1, A1, '-s 3 -t 2 -g 0.11 -c 50 -p 0.015');
model = svmtrain(B1, A1, '-s 3 -t 2 -g G -c C -p P');
[y, accuracy] = svmpredict(D1, C1, model);
y= y*delta+delta1;
x=abs(H2(L)-y)/H2(L);
if k==1
Y=y;
X=x;
D=D1;
k=0;
else
Y=[Y;y];
X=[X;x];
D=[D;D1];
end
end
meanerror=mean(X)
maxerror=max(X)
stderror=std(X)
% X=abs(D1-y);
% error1=sqrt(sum(X.^2)/test_num)
% error2=max(abs(D1-y))
%
% % y= y*(max(H2)-min(H2))+min(H2);
% T=[1:1:60]';
% V=[1,60,0,0.2];
% T1=[50:1:100]';
% T2=[50:1:100]';
%
% plot(H2,Y,'rh','LineWidth',2 );
% hold on
% plot(T1,T2, 'k-','LineWidth',2 );
% axis(V);
plot(H2,'r--','LineWidth',2 );
% axis(V)
hold on
plot(Y,'b','linewidth',2);
% axis(V)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -