gpt4 book ai didi

OpenCV 2.4.3 PCA 类 - 当样本数小于维数时

转载 作者:行者123 更新时间:2023-12-02 17:53:03 25 4
gpt4 key购买 nike

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

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

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

我不知道为什么我会得到这些结果,因此我无法将数据转换到我的应用程序的主要组件上,有什么帮助吗?

PS:我使用的代码:

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

最佳答案

我会这样说:

如果样本数量小于数据维度,则保留组件的数量将被限制在样本数量上。

我们为 uni 的力学科目做了 3x3 PCA,一些非线性控制算法也使用了类似的方法——我的内存模糊不清,但它可能与关于伪逆和非方阵的假设有关......

一旦你深入研究了这个理论——网络搜索“样本少于维度的 pca”——它很快就会变得一团糟!

关于OpenCV 2.4.3 PCA 类 - 当样本数小于维数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com