Как обновить Bayes NormalClassifier из OpenCV?

Я пытаюсь использовать CvNormalBayesClassifier от OpenCV. Но я не могу обновить модель, которую я уже тренировал.
Вот мой код для обучения модели на начальном этапе:

Mat training_data = Mat(counter_instances, ALLFEATURESIZE, CV_32FC1);
Mat training_classifications = Mat(counter_instances, 1, CV_32SC1);;

CvNormalBayesClassifier *bayes = new CvNormalBayesClassifier;
//filling the training data, 1 row per instance.
//filling the classification data, 1 row and 1 column per instance, integer as class label
bayes->train(training_data, training_classifications);
bayes->save("bayes.model");

Таким образом, это работает без ошибок, и модель сохраняется.

Но когда я пытаюсь загрузить эту модель и обновить ее, я получаю сообщение об ошибке.
Я использую этот код:

Mat newTraining_data = Mat(1, ALLFEATURESIZE, CV_32FC1);
//fill data with one instance
Mat newLabel = Mat(1, 1, CV_32SC1);
newLabel.at<int>(0, 0) = (int) label; //some label
bayes->load("bayes.model");
bayes->train(newTraining_data, newLabel, Mat(), Mat(), true);

Это ошибка, которую я получаю:

OpenCV Error: Bad argument (There is only a single class) in
cvPreprocessCategoricalResponses, file /tmp/buildd/libopencv-2.3.1+svn6514+branch23
/modules/ml/src/inner_functions.cpp, line 729

Я попытался вставить все экземпляры, которые я использовал изначально, и просто добавить одну строку с новым экземпляром. Это работает как-то, но занимает столько же времени, сколько необходимо для обучения новой модели. Что действительно долго …

Что я делаю неправильно? Как это сделать правильно?

если никто не может помочь мне с этим:
Кто-нибудь знает реализацию наивного байесовского языка в C ++ с функцией загрузки / сохранения, функцией обновления и вероятностью возврата предсказанного класса?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector