在 OpenCV 中使用 PCA 进行降维,特征向量的维数错误
Dimension reduction with PCA in OpenCV, wrong dimensions of eigenvectors
我不确定这个问题是否已经在 Whosebug 上,但我找不到它所以我决定提出一个新问题。我正在尝试减少特征矩阵的维度。我有 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)。
在第二行中,我尝试将第一个实例投影到新维度 space,但这不起作用,因为不是 40 个值,而是 pca_analysis.project
returns 一个有 30 个值的矩阵。我在教程中读到投影 vector/matix 应该有 40 个值,即特征的维度 space.
有没有人可以帮助我或遇到类似的问题?
好的,所以在找到 this thread 之后,我现在知道问题出在哪里了:我需要的实例多于特征!如果我有 58 个特征,我只需要至少 58 个样本。这对我来说不是问题,因为我有足够的数据,我一直在使用30个样本进行测试。
我不确定这个问题是否已经在 Whosebug 上,但我找不到它所以我决定提出一个新问题。我正在尝试减少特征矩阵的维度。我有 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)。在第二行中,我尝试将第一个实例投影到新维度 space,但这不起作用,因为不是 40 个值,而是
pca_analysis.project
returns 一个有 30 个值的矩阵。我在教程中读到投影 vector/matix 应该有 40 个值,即特征的维度 space.
有没有人可以帮助我或遇到类似的问题?
好的,所以在找到 this thread 之后,我现在知道问题出在哪里了:我需要的实例多于特征!如果我有 58 个特征,我只需要至少 58 个样本。这对我来说不是问题,因为我有足够的数据,我一直在使用30个样本进行测试。