В каждой книге и примере всегда они показывают только бинарную классификацию (два класса), и новый вектор может принадлежать любому классу.
Здесь проблема, у меня есть 4 класса (c1, c2, c3, c4). У меня есть обучающие данные для 4 классов.
Для нового вектора вывод должен быть похожим
C1 80% (победитель)
c2 10%
c3 6%
c4 4%
Как сделать это? Я планирую использовать libsvm (потому что это самый популярный). Я не знаю много об этом. Если какой-либо из Вас, парни использовали его ранее, говорит мне определенные команды, что я, как предполагается, использую.
Обычно используются методы One vs. Rest и One vs. One. В первом методе вы получаете n классификаторов и результирующий класс будет иметь наивысшую оценку. Во втором методе результирующий класс получается большинством голосов всех классификаторов.
AFAIR, libsvm поддерживает обе стратегии многоклассовой классификации.
.Проблему классификации нескольких классов всегда можно свести к двоичной проблеме, рекурсивно выбирая случайные разделы набора классов. Это не обязательно менее эффективно и результативно, чем изучение всех классов одновременно, так как проблемы суб-обучения требуют меньшего количества примеров, так как проблема разбиения меньше. (Это может потребовать, в лучшем случае, постоянного времени порядка больше, например, в два раза больше). Это также может привести к более точному обучению.
Я не обязательно рекомендую это, но это один из ответов на ваш вопрос, и это общий метод, который может быть применен к любому алгоритму обучения двоичных систем.
.