超高维数据(数据维度远大于样本数)的降维

超高维数据(数据维度远大于样本数)的降维该如何处理?
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

clear ;clc;
img1 = double(imread('im1.jpg'));
img2 = double(imread('im2.jpg'));
img = cat(3,img1,img2);
img = img / 255;
img_size = size(img);
img = reshape(img, img_size(3), img_size(1) * img_size(2));
X = img;
[V,pcaX] = PCAt(X,2);
gscatter(pcaX(:,1),pcaX(:,2));
function [V,pcaX] = PCAt(X,k)
%输入: X-样本矩阵,每行为一个样本 
%输出: V-主成分向量
% pcaX-降维后的k维样本属性向量组成的矩阵,每一行一个样本,列数k为降维后的样本属性列数
[n,m] = size(X);
meanV = mean(X); %样本均值向量
Z = (X-repmat(meanV,n,1));
CovM = Z*Z'; %计算协方差矩阵的转置
[V,D] = eigs(CovM,k); %计算CovM的前k个特征值和特征向量
V = Z'*V; %得到协方差矩阵(CovM)'的特征向量
%特征向量归一化为单位特征向量
for i=1:k
V(:,i) = V(:,i)/norm(V(:,i));
end
pcaX = Z*V; %线性变换(投影)降维至k维
save('PCA.mat','V','meanV'); %保存变换矩阵V和变换原点meanV
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq-120

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值