SVM训练数据错误

SVM Training Data Error

本文关键字:错误 数据 SVM      更新时间:2023-10-16

我正在使用Opencv 3.0,我尝试了这个代码,但我得到了这个错误:

using namespace std;
using namespace cv;
using namespace cv::ml;
int main(int argc, char** argv){
 int labels[10] = { 0, 0, 1, 1, 0, 1, 1, 1, 1, 0};
 cv::Mat lablesMat(10, 1, CV_32SC1, labels);
 float trainingData[10][2] = { { 100, 10 }, { 150, 10 }, { 600, 200 }, { 600, 10 }, { 10, 100 }, { 455, 10 }, { 345, 255 }, { 10, 501`z` }, { 401, 255 }, { 30, 150 } };
 cv::Mat trainDataMat(10, 2, CV_32FC1, trainingData);
SVM::Params params;
    params.svmType    = SVM::C_SVC;
    params.kernelType = SVM::LINEAR;
    params.termCrit   = TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6);
    // Train the SVM
    Ptr<SVM> svm = StatModel::train<SVM>(trainDataMat, ROW_SAMPLE, lablesMat, params);
 //Create test features
 float testData[2] = { 150, 15 };
 cv::Mat testDataMat(2, 1, CV_32FC1, testData);
 //Predict the class labele for test data sample
 float predictLable = svm->predict(testDataMat);
 std::cout << "Predicted label :" << predictLable << "n";
    return(0);
}

OpenCV错误:断言在预测中失败(samples.cols=var_count&&samples.type()=CV_32F),在引发"cv::Exception"的实例后调用了terminatewhat():错误:(-215)samples.cols==var_count&amp;samples.type()==函数中的CV_32F预测

问题是测试向量应该有1行和2列

 cv::Mat testDataMat(1, 2, CV_32FC1, testData);