如何使用LDA训练SVM

时间:2016-07-12 16:01:24

标签: c++ opencv svm pca linear-discriminant

我在OpenCV 3.0中使用C ++。

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

  • trainData :2750张图片x 1104功能。
  • trainLabels :2750张图片x每列1个标签

有了这些信息,我想培训一个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,因为我有两个班级(人和无人)。

这些是我的结果:

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

据我所知,特征向量应为1104x1104且投影 2750x1104,因此可以使用矩阵投影训练SVM。

我不知道代码中是否真的错了,也许我不能正确理解LDA是如何工作的。如果是的话,你能给我一些提示吗?事实上,我可以用LDA培训SVM吗?

提前致谢。

0 个答案:

没有答案