Как масштабировать тестовые данные, используя файл класса svm.cpp (LibSvm)

Я делаю проект, основанный на opencv и SVM (поддержка векторных машин). Там, чтобы идентифицировать показанный пользователем жест, мне нужно сделать классификацию, используя SVM. Я добавил файлы svm.cpp и svm.h в свой проект, и ниже приведен мой код для части прогнозирования.

svm_node x[featureVectorSize];

// inside a loop
for(int k;0 < featureVectorSize; k++)
{
x[k].index = k+1;
x[k].value = FeatureVectorVal[k]; // i have a vector to store feature values for test data    //(without scaling)
}

svm_model* newmodel = svm_load_model("Mymodels\\A.scale.model");
double *ProbVal = new double[1];
double result = svm_predict_probability(newmodel,x,ProbVal);
cout<<"result "<< result<<"\n";
cout<<"ProbVal "<< *ProbVal<<"\n";
svm_free_model_content(newmodel);
svm_free_and_destroy_model(&newmodel);

//some code to show output

Q1. когда я делаю классификацию с моделью A, она всегда дает совпадающее значение результата как -1. Это означает, что не совпадают с данными испытаний. После этого я жестко закодировал масштабированные значения объектов для тестовых данных (напишите выше FeatureVectorVal в текстовый файл и масштабируйте с помощью scale.exe, предоставляемого пакетом Libsvm). Затем я сделал прогноз с той же моделью. Теперь он дал мне результат как +1. Это означает, что мне нужно ввести масштабированные тестовые данные в структуру svm_node. Но в svm.cpp я не смог найти никакой функции для масштабирования моих тестовых данных. Как я могу масштабировать свои тестовые данные, используя функции svm.cpp?

Q2. Когда я делаю прогнозирование с более чем одной моделью (используя массив путей к файлам моделей), происходит сбой программы после прогнозирования с первой моделью и подсказывает мне;

if ((model->param.svm_type == C_SVC || model->param.svm_type == NU_SVC) && model->probA!=NULL && model->probB!=NULL)

строка в файле svm.cpp.

Нужна помощь, ребята .. Спасибо заранее 🙂

0

Решение

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

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

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

По вопросам рекламы [email protected]