Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 主成分分析?_Matlab_Matrix_Pca - Fatal编程技术网

Matlab 主成分分析?

Matlab 主成分分析?,matlab,matrix,pca,Matlab,Matrix,Pca,我在为PCA的东西挣扎 例如,我有: Data=100*3 substractdata=data-mean (the size will be same 100*3) covariance=3*3 EigenVector=3*3 EigenValue=3*3 为了减少我们的数据,我们必须消除基于k的本征值和本征向量的个数 例如k=2 那么 特征值将变为2*2 特征向量=2*2 第一个问题:是这样吗? 然后,我们必须投影出矩阵 project=EigenVector (which is 2*

我在为PCA的东西挣扎

例如,我有:

Data=100*3
substractdata=data-mean (the size will be same 100*3)
covariance=3*3
EigenVector=3*3
EigenValue=3*3
为了减少我们的数据,我们必须消除基于k的本征值和本征向量的个数

例如
k=2

那么

  • 特征值将变为2*2
  • 特征向量=2*2
第一个问题:是这样吗?

然后,我们必须投影出矩阵

project=EigenVector (which is 2*2) *substractdata (100*3)
第二个问题:由于特征值和减法数据的大小不同,我们如何计算它?

还有一个问题,

第三个问题:如果我们想使用缩减数据,我们应该使用项目?


第四个问题:如果我们想显示主成分(即特征向量的第一列和第二列),我们必须将主成分与数据(初始数据)或减分数据一起绘制?您的特征值3*3矩阵是对角矩阵。特征值是沿对角线的标量。要降低维数,请选择对应于两个最大特征值的
k=2
特征向量。所以你需要根据它们对应的特征值对特征向量进行排序,然后选择两个最大的特征值

因此,在约化后,特征值=2*2(只有两个特征值)和特征向量为3*2


由于特征向量现在是3*2,因此可以使用
substractdata*特征向量
将数据投影到2维子空间。重建后需要将平均值加回去,以显示数据和主成分。

让X表示原始的标准化100x3数据矩阵。然后分解为X'*X=V*D*V',其中V是正交矩阵,D是对角3x3矩阵。通过某种魔法,U=X*V是一个具有正交列的矩阵,X=U*S*V',其中S(奇异值的对角矩阵)是D的平方根。这也被称为奇异值分解,可以直接计算,而不形成(数值上不好的)积X'*X


现在您需要U的前两列(所有相关的库都返回D resp.S和降序对角线条目)。使用SVD,您可以直接访问它们,使用特征值分解U12=X*V12,也就是说,根据cyon,包含前两列(左奇异向量)的U的子矩阵U12是从包含V的前两列(右奇异向量)的V的子矩阵V12中获得的。

,以便投影数据,公式是数据(100x3矩阵)*特征向量(3x2矩阵)??非特征向量(3x2矩阵)*数据(100x3矩阵)“??Amd我们预测的是“数据”而不是“减法数据”??是的,100*3x3*2,你会得到100个2维向量。您可以投影
substractdata
,因为它是一个线性投影,然后再将平均值加回去。我会在我的回答中解决这个问题。好的,所以为了进行归约,我们计算“substractdata”,并将其用于进一步的处理??。。但为了显示主成分,我们将其与“数据”一起显示??是这样吗??