任务二:主成分分析:步骤、应用及代码实现。代码可以用任何你熟悉的编程语言。
主成分分析是将多指标化为少数几个综合指标的一种统计分析方法,这种降维的技术而生成的主成分,能够反映原始变量的绝大部分信息,通常表示为原始变量的线性组合。PCA的思想是将n维特征映射到m维上(m<n),这m维是全新的正交特征,称为主成分,这m维的特征是重新构造出来的,不是简单的从n维特征中减去n-m维特征。PCA的核心思想就是将数据沿最大方向投影,数据更易于区分。
PCM降维步骤:
1.我们一般选择一行是一个特征,对每个特征求平均值;原来的数据减去平均值得到新的中心化之后的数据;
2.求特征协方差矩阵;
3.根据协方差矩阵,求特征值与特征向量
4.对特征值按照降序的顺序排列,相应的也给出特征向量,选择几个主成分,求投影矩阵。
5.根据投影矩阵求出我们降维后的数据。
PCM的应用:
主成分分类
根据主成分分析,通过散点图可以看出,对于不同的指标,将会聚集在一起,故可以进行分类
主成分回归
对自变量出现多重共性的时候,主成分分析能够克服经典回归的不足
matlab代码实现
步骤:
1.把数据中心化
2.求特征协方差矩阵
3.求协方差矩阵的特征值和特征向量
4.将特征值从小到大排序,取最大的k个值,然后把对应的特征向量分别作为列向量组成特征矩阵K
5.把样本点投射到选定的选取的特征向量K
all;
close all;
X=[2.5 2.4;
0.5 0.7;
2.2 2.9;
1.9 2.2;
3.1 3.0;
2.3 2.7;
2 1.6;
1 1.1;
1.5 1.6;
1.1 0.9;];
X=X’
% X=[74 87
84 88 74 86 69 73 64;
%
85 83 83 77 69 84 74 85 84;
%
83 91 89 85 87 86 83 86 85;
%
69 100 82 96 84 82 97 98 76;
%
97 48 89 36 46 53 88 89 97;
%
59 98 93 94 98 100 79 83 61;];
% X=X’;
% X=[2 0
-1.4;
%
2.2 0.2 -1.5;
%
2.4 0.1 -1;
%
1.9 0 -1.2;];
% X=X’;
[a,b]=size(X);
M=sum(X)/a;
for i=1:b
B(:,i)=X(:,i)-M(i);
%B=zscore(X);
end
S=1/(a-1)BB’;
[vector,value]=eig(S);
vector
value=diag(value)
varine=sum(value);
[value_sort,subscript]=sort(value,‘descend’);
value_sort;
subscript;
value_sort=value_sort/sum(value_sort);
compare=0;
sign=0;
for i=1:b
if compare<0.9
sign=sign+1;
compare=compare+value_sort(i);
end
end
for i=1:sign
P(:,i)=vector(:,subscript(i));
end
P
D=zeros(sign,sign);
for i=1:sign
D(i,i)=value(subscript(i));
end
D