我在OpenCV 3.0中使用C ++。
我有一个训练数据矩阵,其中包含我从一些图像中提取的特征( trainData )。这个矩阵的大小是2750x1104,因为我有2750个图像(正面和负面),每个都有1104个特征。我有2750x1的其他矩阵与标签( trainLabels )。
有了这些信息,我想培训一个SVM,我想评估使用PCA(主成分分析),LDA(线性判别分析)和两者结合的表现。我已经毫无问题地应用了PCA但是当我使用LDA时,我获得了一个2750x1(投影)的矩阵,SVM不能将其用作输入。
我已使用此link,但他们没有使用SVM。
这是代码:
LDA lda(trainData, trainLabels, num_components);
Mat eigenvectors = lda.eigenvectors();
Mat projected = lda.project(trainData);
我选择了 num_components 为1,因为我有两个班级(人和无人)。
这些是我的结果:
据我所知,特征向量应为1104x1104且投影 2750x1104,因此可以使用矩阵投影训练SVM。
我不知道代码中是否真的错了,也许我不能正确理解LDA是如何工作的。如果是的话,你能给我一些提示吗?事实上,我可以用LDA培训SVM吗?
提前致谢。