OpenCV中PCA降维,特征向量维数错误



我不确定这个问题是否已经在stackoverflow上,但我找不到它,所以我决定打开一个新的问题。我在尝试降低一个特征矩阵的维数。我有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返回具有30个值的矩阵而不是40个值。我在教程中读到投影向量/矩阵应该有40个值,这是特征空间的维度。

有没有人可以帮助我或有类似的问题?

好的,找到这个线程后,我现在知道问题是什么了:我需要更多的实例而不是功能!如果我有58个特征,我只需要至少58个样本。这对我来说不是问题,因为我有足够的数据,我只是一直使用30个样本进行测试。

最新更新