在 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 进行降维,特征向量的维数错误的主要内容,如果未能解决你的问题,请参考以下文章

PCA降维(Opencv,C++)

机器学习算法-PCA降维技术

opencv实战——PCA算法的应用

常用降维方法之PCA 和 LDA

sklearn 特征降维利器 —— PCA TSNE

利用PCA进行数据降维