1
libsvmのpythonユーティリティでclassifierをコーディングしました。ここで私は私のPython APIを呼び出す方法の例です:LibSVM Predict Not working
fは(1024,1)ベクトルであるprint svmutil.svm_predict([2], [f.flatten().tolist()], libsvm_model, '-b 1')
。
モデルを保存し、C++ APIを使用してモデルをロードしました。しかし、同じベクトルを読み込んで予測しようとすると、結果が間違っています。
cv::Mat oneCol = fcMat.row(0);
svm_node *x = (struct svm_node *) malloc(1025*sizeof(struct svm_node));
for(int i=0; i<1024; i++){
x[i].index = i;
x[i].value = (double)oneCol.at<float>(i);
}
x[1024].index = -1;
double *prob_estimates=NULL;
prob_estimates = (double *) malloc(svmModel->nr_class*sizeof(double));
double retVal = svm_predict_probability(svmModel, x, prob_estimates);
cout << retVal << endl;
for(int j=0;j<svmModel->nr_class;j++)
cout << prob_estimates[j] << endl;
ここでは、OpenCVオブジェクトからベクターをロードしようとしています。しかし、予測モデルは間違っています。ここに何か悪いですか? LIBSVMで