PCA 小代码

PCA 小代码   仅做一下小的测试 了解PCA的功能   将2维数据降成一维后  与原数据对比

 

 

Row= 2;
Col= 10;


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. ' ;



average=zeros(Row, 1);

for m= 1:Row    
    average(m)=sum(X(m,:))/Col;
end

XX=zeros(Row,Col);
for n= 1:Col
XX(:,n)=X(:,n)-average;          
end

S=XX*XX ' /(Col-1);

[V,D]=eig(S);

% 是否去掉比较小的特征根对应的特征向量上的信息
% V( 1, 1)= 0;   
% V( 2, 1)= 0;

Y=V ' *XX

YY=V*Y

Row=2;
Col=10;


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.';



average=zeros(Row,1);

for m=1:Row    
    average(m)=sum(X(m,:))/Col;
end

XX=zeros(Row,Col);
for n=1:Col
XX(:,n)=X(:,n)-average;          
end


S=zeros(Row,Row);

for n=1:Col
    S=S+XX(:,n)*(XX(:,n).');
end

S=S/(Col-1);

[V,D]=eig(S);

VV=zeros(Row,1);
VV(:,1)=V(:,2);


X3=zeros(m,n);
for n=1:Col
X3(:,n)=(VV.')*XX(:,n);
end



XR=zeros(m,n);
for n=1:Col
XR(:,n)=VV*X3(1,n);
end


figure;
plot(XX(1,:),XX(2,:),'o');
hold on;

plot(X3(1,:),X3(2,:),'+');


转载于:https://www.cnblogs.com/feathersky/archive/2009/06/19/1506445.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值