0

我正在使用 C++ 和 OpenCV 3.0。

我有一个训练数据矩阵,其中包含我从一些图像(trainData)中提取的特征。这个矩阵的大小是 2750x1104,因为我有 2750 张图像(正面和负面),每张有 1104 个特征。我有其他带有标签的 2750x1 矩阵(trainLabels)。

  • trainData:2750 张图像 x 1104 个特征。
  • trainLabels : 2750 张图片 x 每列 1 个标签

有了这些信息,我想训练一个 SVM,并且我想评估使用 PCA(主成分分析)、LDA(线性判别分析)和两者组合的性能。我已经毫无问题地应用了 PCA,但是当我使用 LDA 时,我获得了SVM 不能用作输入的 2750x1(投影)矩阵。

我使用了这个链接,但他们不使用 SVM。

这是代码:

LDA lda(trainData, trainLabels, num_components);
Mat eigenvectors = lda.eigenvectors();
Mat projected = lda.project(trainData);

我选择num_components为 1,因为我有两个班级(人与无人)。

这些是我的结果:

  • 特征向量:1104 行 x 1 列
  • 预计:2750 行 x 1 列

据我所知,特征向量应该是 1104x1104 和投影2750x1104 所以可以使用矩阵来训练 SVM投影

我不知道我的代码是否真的错了,也许我没有正确理解 LDA 的工作原理。如果是这样,你能给我一些建议吗?事实上,我可以用 LDA 训练 SVM 吗?

提前致谢。

4

0 回答 0