SVM всегда получает по одной строке данных на вектор объектов.Таким образом, размерность вектора признаков равна длине строки.Если вы имеете дело с двумерными данными, то для каждого вектора объектов есть 2 элемента.Пример двумерных данных на этой веб-странице:
http://www.csie.ntu.edu.tw/~cjlin/libsvm/
код эквивалентной демонстрации в OpenCV http://sites.google.com/site/btabibian/labbook/svmusingopencv
Дело в том, что даже если вы думаетегистограммы как 2D с 9-элементными ячейками, вектор признаков фактически является уплощенной версией этого.Так что правильно сгладить его в длинный вектор признаков.Результатом для меня стал вектор признаков длины 2304 (16x16x9), и я получаю 100% точность прогноза на небольшом тестовом наборе (то есть, вероятно, он немного меньше 100%, но работает исключительно хорошо).
Причинаэто работает так, что SVM работает над системой весов на элемент вектора признаков.Так что это не имеет никакого отношения к измерению задачи, гиперплоскость всегда находится в том же измерении, что и вектор признаков.Еще один способ взглянуть на это - забыть о гиперплоскости и просто просмотреть ее как набор весов для каждого элемента в векторе признаков.В этом случае для каждого элемента требуется один вес, затем он умножает каждый элемент на его вес и выводит результат.