OpenCV 2.4.3主元分析类-当样本数量少于维度数量时 [英] OpenCV 2.4.3 PCA class - when number of samples is less than number of dimensions

查看:0
本文介绍了OpenCV 2.4.3主元分析类-当样本数量少于维度数量时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用OpenCV中的PCA类在我的C++应用程序中执行主成分分析操作。我是OpenCV新手,遇到问题,希望有人能帮上忙。

我正在尝试在MatLab和PCA类上使用一个演示示例来检查答案 当我使用2*10数据数组和参数(CV_PCA_DATA_AS_COL)时,我在这里有两个维度,所以我希望有两个特征向量,每个特征向量有两个元素,这与预期的一样工作得很好,结果与MatLab相同。

但在使用10*2个数据数组(通常当样本数小于维数时)时,我得到了(2*10)个向量数组。即:10个特征向量,每个特征向量有2个元素。这是意想不到的,也不是由MatLab给出的结果(MatLab给出了10*10个特征向量矩阵)。

我不知道为什么会有这些结果,因此我无法在我的应用程序中投影主成分数据,有什么帮助吗?

P.S:我使用的代码:

Mat Mean ;
Mat H(10, 2, CV_32F); // then the matrix is filled by data
    PCA pca(H,Mean,CV_PCA_DATA_AS_COL,0) ;
pca.operator()(H,Mean,CV_PCA_DATA_AS_COL,0) ;
    cout<<pca.eigenvectors.rows // gives 2 instead of 10
    cout<<pca.eigenvectors.cols // gives 10 

推荐答案

我这样说:

如果样本数小于数据维度,则保留的组件数将固定在样本数。

我们在大学做了力学科目的3x3主成分分析,一些非线性控制算法也使用了类似的方法-我的记忆力很模糊,但这可能与关于伪逆和非方矩阵的假设有关...

一旦你深入研究这个理论--网络搜索‘样本少于维度的主成分分析’--它很快就会变得一团糟!

这篇关于OpenCV 2.4.3主元分析类-当样本数量少于维度数量时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆