利用Matlab中的pca函数进行数据降维

利用Matlab中的pca函数进行数据降维,第1张

Matlab中关于pca函数的说明写得并不直观, 很多人最直接的目的只是想得到pca降维后的结果 ,但是根据官方解释文档,很难一下看出哪个输出参数才是最终降维后的特征。因此,本文记录如何使用Matlab中自带的pca函数对数据进行降维。

PS. 本文拆举并不详解pca的原理,仅仅记录如何使用Matlab中的pca函数。

输入参数:X是n x d的样本矩阵,其中n表示样本数,d表示特征纬度。

输出参数:

(1)coeff是主成分分量,即样本协方差矩阵的特征向量。

(2)score是主成分,即样本X在低维空间的投影,也就是我们想要得到森雀的降维后的数据。

注意:score的维度和原始样本X的维度此御早一致,若需要降到k维,则只需要取score的前k列即可。

此外,也可以根据coeff计算得到score,以下是具体步骤:

(1)计算样本X沿特征纬度的均值向量(因为X的每一列代表一个特征,因此此时是按照行计算均值):

(2) 利用去中心后的X乘上coeff便可以得到score:

运行后便可以看到res的结果非常非常小,此时便说明test和score非常接近。

[1] PCA原理分析和Matlab实现方法(三)

[2] Matlab: princomp() 主成分分析

以下是我的SVD高位矩阵去噪函数

function

f=PVC(x,n)

[u,s,v]=svd(x)

for

i=1:n

t=max(s)

[z,ind]=min(t)

s(ind,ind)=0

end

f=u*s*v'

n指你要下降的秩数,x指原高维矩阵,降维我不会了让颂绝,我也才学1年不到,只能樱顷写个降秩坦姿的给你,不知道有没有帮助

A=[1 2 3 45 6 7 89 10 11 1213 14 15 16]

y_img_index=1

for dim_sum=2:1:8

if(mod(dim_sum,2)==0)

for i=1:1:4

if dim_sum-i<=4 &dim_sum-i>0

imgtemp(y_img_index) = A(i,dim_sum-i)

y_img_index=y_img_index+1

end

end

else

for i=1:1:4

if dim_sum-i<=4 &dim_sum-i>0

imgtemp(y_img_index) = A(dim_sum-i,i)

y_img_index=y_img_index+1

end

end

end

end


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12386182.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存