Я использую C ++ с OpenCV 3.0.
У меня есть матрица тренировочных данных с функциями, которые я извлек из некоторых изображений (trainData). Размер этой матрицы составляет 2750×1104, потому что у меня есть 2750 изображений (положительных и отрицательных) с 1104 объектами в каждом. У меня есть другая матрица 2750×1 с метками (trainLabels).
С помощью этой информации я хочу обучить SVM, и я хотел бы оценить эффективность использования PCA (анализ основных компонентов), LDA (линейный дискриминационный анализ) и их комбинации. Я применил PCA без проблем, но когда я использую LDA, я получаю матрицу 2750×1 (проектируется) что SVM не может использовать в качестве входных данных.
Я использовал это ссылка на сайт, но они не используют SVM.
Это код:
LDA lda(trainData, trainLabels, num_components);
Mat eigenvectors = lda.eigenvectors();
Mat projected = lda.project(trainData);
Я выбрал num_components как 1, потому что у меня есть два класса (человек & нет человека).
И вот мои результаты:
Насколько я понимаю собственные векторы должно быть 1104×1104 и проектируется 2750×1104, чтобы SVM можно было тренировать с матрицей проектируется.
Я не знаю, действительно ли я ошибаюсь в коде, может быть, я не правильно понимаю, как работает LDA. Если да, не могли бы вы дать мне несколько советов? На самом деле, могу ли я обучить SVM с LDA?
Заранее спасибо.
Задача ещё не решена.
Других решений пока нет …