📄 pca.m
字号:
clear,clc;
load bp_test1_withoutchoose1.mat;
origin_data=bp;
sum1=sum(origin_data,1);
[a,b]=size(origin_data);
std=zeros(a,b);
%for i=1:b
%std(:,i)=0.1+(0.8*(origin_data(:,i)-min(origin_data(:,i))))/(max(origin_data(:,i))-min(origin_data(:,i)));
%end;
for i=1:a
for j=1:b
std(i,j)=origin_data(i,j)/sum1(j);
end;
end;
fprintf('相关系数矩阵:\n')
std=CORRCOEF(origin_data);
fprintf('特征向量及特征值:\n')
[vec,val]=eig(std);
newval=diag(val);
[y,i]=sort(newval);
fprintf('特征根排序:\n')
for z=1:length(y)
newy(z)=y(length(y)+1-z)
end
fprintf('%g\n',newy)
rate=y/sum(y)
fprintf('\n贡献率:\n')
newrate=newy/sum(newy)
sumrate=0;
newi=[]
for k=length(y):-1:1
sumrate=sumrate+rate(k)
newi(length(y)+1-k)=i(k)
if sumrate>0.95 break
end
end
fprintf('主成份数:%g\n\n',length(newi))
fprintf('主成份载荷:\n')
for p=1:length(newi)
for q=1:length(y)
result(q,p)=sqrt(newval(newi(p)))*vec(q,newi(p))
end
end
disp(result)
%norm_data=origin_data*result;
norm_data=result;
load bp_test1_withoutchoose.mat;
origin_data=bp;
origin_data1(:,1:length(newi))=norm_data;
origin_data1(:,length(newi)+1:length(newi)+2)=origin_data(:,15:16)
[row,column]=size(origin_data1);
i=column
train_data=origin_data1(1:(row-30),:);
test_data=origin_data1((row-29):row,:);
%[r,c]=size(train_data);
p1=train_data;
t1=train_data(:,i);
p=p1';
t=t1';
%隐单元数目
n1=10;
%for i=1;28
net=newff(minmax(p),[n1,1],{'tansig','tansig'},'trainbr');%traingdx,trainlm,trainrp,trainbr
net.trainParam.epochs=1000;
net.trainParam.lr=0.1; %学习速率
net.trainParam.goal=0.001;
net=train(net,p,t);
%y=sim(net,p);
%end;
%将测试集验证建立的BP网络
%[r,c]=size(test_data);
p2=test_data;
t2=test_data(:,i);
p=p2';
t=t2';
y=sim(net,p);
Y_predict_recovery=y;
T_reality_recovery=origin_data1((row-29):row,i);
%plot(t,'k:+');hold on,plot(y,'r:.');legend('实际值','预测值');
plot(T_reality_recovery,'k:+');hold on,plot(Y_predict_recovery,'r:.');legend('实际值','预测值');
ylabel('粗选A/S');
hold on
figure;
relative_error=(Y_predict_recovery'-T_reality_recovery)./T_reality_recovery;
plot(relative_error,'g:*');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -