先附代码pca回归
close all
clear
clc; %素质3连
format short
pzz = xlsread('7000sgfb','A1:DZ5549'); %读取文件
data = pzz';
n=randperm(130);%随机130个样本
%%%——————%%%
y_test = data(n(98:130),1); %随机选取33个测试样本
x_test = data(n(98:130),2:end);
y_train = data(n(1:97),1);
x_train = data(n(1:97),2:end);
%%%——————%%%
%主成分分析Pca,降成m维变量,提取95%以上的有效信息
swum =0;
m=0;
[coeff,score,latent,tsquared,explained]= princomp(data(1:97,2:end));
for ii = 1 : length(latent)
swum = latent(ii) + swum;
if swum/sum(latent) >= 0.95
m = ii;
break;
end
end
%————%降成m维后的回归分析
x = [ones(97,1) score(:,1:m)];
[b,brint,r] =regress(y_train,x);
x_test=(x_test - mean(x_train))*coeff(:,1:m);
y_fit = [ones(33,1),x_test]*b;
A(:,1) = y_test;
A(:,2) =y_fit;