android中SVM算法的训练

android中SVM算法的训练,android,machine-learning,Android,Machine Learning,大家好,我在android上训练SVM算法时遇到了一些小问题。这是我的代码 Imgproc.calcHist(list, channels, new Mat(), hist, histSize, ranges); Imgproc.calcHist(lis, channels, new Mat(), his, histSize, ranges); // tl.setText(his.toString()); Mat train_data =

大家好,我在android上训练SVM算法时遇到了一些小问题。这是我的代码

Imgproc.calcHist(list, channels, new Mat(), hist, histSize, ranges);
          Imgproc.calcHist(lis, channels, new Mat(), his, histSize, ranges);
         // tl.setText(his.toString());
          Mat train_data = new Mat(2, 0, CvType.CV_32FC1);
          train_data.push_back(hist);
          train_data.push_back(his);
          Mat train_dat = new Mat(2, 0, CvType.CV_32FC1);
          train_dat.put(2, 0, labelArray);
           CvSVM svm = new CvSVM();
          CvSVMParams params = new CvSVMParams();
          params.set_svm_type(CvSVM.C_SVC);
          params.set_kernel_type(CvSVM.LINEAR);
          params.set_term_crit(new TermCriteria(TermCriteria.EPS, 100, 1e-6));
          svm.train_auto(train_data, train_dat, new Mat(), new Mat(), params);
当我运行它时,我会得到这种错误

03-15 13:08:30.065: E/cv::error()(381): OpenCV Error: Bad argument (Invalid response array) in cvPreprocessCategoricalResponses, file /home/reports/ci/slave/50-SDK/opencv/modules/ml/src/inner_functions.cpp, line 664
03-15 13:08:30.120: E/AndroidRuntime(381): CvException [org.opencv.core.CvException: /home/reports/ci/slave/50-SDK/opencv/modules/ml/src/inner_functions.cpp:664: error: (-5) Invalid response array in function cvPreprocessCategoricalResponses
03-15 13:08:30.120: E/AndroidRuntime(381):  at org.opencv.ml.CvSVM.train_auto_1(Native Method)
03-15 13:08:30.120: E/AndroidRuntime(381):  at org.opencv.ml.CvSVM.train_auto(CvSVM.java:395)

我需要你的帮助pliz.thnx

你正在创建两个两行零列的垫子,这非常可疑。最后OpenCV抱怨传递到train_auto的第二个数组的形状不正确。就你所展示的而言,这是无法形容的。您需要了解传递到train_auto的垫子的预期形状

下面是一个很好的示例,说明了传递到train auto的两个参数的大小:

此外,还不清楚是否有充分的理由使用这种奇特的设置(在Android中训练SVM),在完全理解之前,尝试在真实的机器上编程对您可能有用?我很确定这些错误在那里会更有帮助