在 OpenCV 中使用 PCA 进行降维,特征向量的维数错误
Posted
技术标签:
【中文标题】在 OpenCV 中使用 PCA 进行降维,特征向量的维数错误【英文标题】:Dimension reduction with PCA in OpenCV, wrong dimensions of eigenvectors 【发布时间】:2021-08-11 19:06:45 【问题描述】:我不确定这个问题是否已经在 *** 上,但我找不到它,所以我决定提出一个新问题。我正在尝试减少特征矩阵的维度。我有 58 个特征和 30 个实例/测量值。我想将特征数量减少到 40。但我的矩阵维度似乎有问题。
featureMatrix_cv 是我的 30 行 58 列的特征矩阵
PCA pca_analysis(featureMatrix_cv, cv::Mat(), cv::PCA::DATA_AS_ROW, 40);
cv::Mat neu = pca_analysis.project(featureMatrix_cv.row(0));
第一个问题是,pca_analysis.eigenvectors
我认为尺寸错误(30 行和 58 列)。我在几个教程中读到,我应该得到 N 个 N 维特征向量,其中 N 是特征的数量(这里是 58)。 pca_analysis.eigenvalues
(30 行 1 列)也有同样的问题,它的大小应该是 (58, 1)。
在第二行中,我尝试将第一个实例投影到新的维度空间中,但这不起作用,因为pca_analysis.project
返回的不是 40 个值,而是一个包含 30 个值的矩阵。我在教程中读到投影向量/矩阵应该有 40 个值,即特征空间的维度。
有没有人可以帮助我或遇到类似的问题?
【问题讨论】:
【参考方案1】:好的,所以在找到this thread 之后,我现在知道问题所在了:我需要的实例多于功能!如果我有 58 个特征,我只需要至少 58 个样本。这对我来说不是问题,因为我有足够的数据,我只是一直使用 30 个样本进行测试。
【讨论】:
以上是关于在 OpenCV 中使用 PCA 进行降维,特征向量的维数错误的主要内容,如果未能解决你的问题,请参考以下文章