我将从分类中的Matrix数据计算特征值和特征向量。
行代表不同的类,列代表功能。
所以,例如,如果我有
X=
[2 3 4]
[3 2 4]
[4 5 6]
[8 9 0]
我必须使用SVD而不是PCA,因为矩阵不是正方形。
我所做的是:
计算每行的平均值。所以我有
Mean=
M1
M2
M3
M4
使用均值
对我的矩阵 X 进行减法 Substract=
[2-M1 3-M1 4-M1]
[3-M2 2-M2 4-M2]
[4-M3 5-M3 6-M3]
[8-M4 9-M4 0-M4]
协方差矩阵=(Substract * Substract ^ t)/(4-1)
[U,S,V] = svd(X)
我的所有步骤都是正确的吗?通过计算每行的平均值(作为类)?
如果我想将数据投影到特征空间(用于降维),这是特征向量(U或V)?
答案 0 :(得分:1)
无论你的矩阵是否是正方形,你都可以做PCA。实际上,您的矩阵很少是正方形,因为它的格式为n*p
,其中n
是观察数量,p
是要素数量。因此,您可以使用MATLAB的pricomp
函数
[W, pc] = princomp(data);
其中W
是权重矩阵,pc
是主要成分得分。您可以通过
plot(pc(1,:),pc(2,:),'.');
以第一和第二主成分方向显示您的数据。