我将使用PCA/SVD对提取的特征进行降维。
假设我想使用SIFT作为特征并使用SVM作为分类器进行分类。
我有3张训练图片,并将它们排列在不同的行中。
因此,第一行表示第一张图片,第二行表示第二张图片,第三行表示第三张图片...
而列则代表着特征。
我的问题是:
1.在SVD或将t转换为A*A'矩阵后在PCA中使用它是否会给我相同的特征向量( e1和u1 )??
2.当我将我的图像排列在不同的行中,并且每个图像的特征在不同的列中时,PCA / SVD用于提取表示变量之间关系的特征向量。那么在这种情况下,变量是行(图像)还是列(特征)??
3.如果我想使用eigs函数,我是否必须使用(Cov函数)将我的矩阵转换为协方差矩阵?还是eigs函数将手动执行此操作?
非常感谢您的回答。
假设我想使用SIFT作为特征并使用SVM作为分类器进行分类。
我有3张训练图片,并将它们排列在不同的行中。
因此,第一行表示第一张图片,第二行表示第二张图片,第三行表示第三张图片...
而列则代表着特征。
A=[ 1 2 3 4 5
4 5 6 7 8
0 0 1 9 0]
为了进行降维(从我的3x5矩阵/非方阵),我们需要进行A*特征向量操作。
现在我需要从我的A矩阵中提取特征向量。据我所知,SVD用于非方阵,因此要执行PCA(eigs函数),我需要通过将其与其转置相乘使其变成方阵。
如果我直接进行SVD,则会出现以下情况:
[u1,s1,v1] = svd(A);
我接收到
u1 =
-0.4369 0.1426 0.8882
-0.8159 0.3530 -0.4580
-0.3788 -0.9247 -0.0379
v1 =
-0.2229 0.2206 -0.7088 -0.6070 -0.1754
-0.2984 0.2910 -0.3857 0.4705 0.6754
-0.3966 0.2301 -0.0910 0.5382 -0.7012
-0.6547 -0.7495 0.0045 -0.0598 0.0779
-0.5248 0.5020 0.5836 -0.3419 0.1233
当我使用PCA(eigs函数)时,{由于我需要按不同行排列图像的功能,因此我需要执行A*A'},我得到了
c=A*A'
[e1 e2]=eigs(c);
e1 =
0.4369 0.1426 0.8882
0.8159 0.3530 -0.4580
0.3788 -0.9247 -0.0379
我的问题是:
1.在SVD或将t转换为A*A'矩阵后在PCA中使用它是否会给我相同的特征向量( e1和u1 )??
2.当我将我的图像排列在不同的行中,并且每个图像的特征在不同的列中时,PCA / SVD用于提取表示变量之间关系的特征向量。那么在这种情况下,变量是行(图像)还是列(特征)??
3.如果我想使用eigs函数,我是否必须使用(Cov函数)将我的矩阵转换为协方差矩阵?还是eigs函数将手动执行此操作?
非常感谢您的回答。