0
在this後,你可以找到一個非常好的教程,介紹如何將SVM分類器應用到MNIST數據集。我想知道是否可以使用邏輯迴歸而不是SVM分類器。所以我搜索了openCV中的Logistic迴歸,並且我發現兩個分類器的語法幾乎完全相同。所以我猜我可能只是註釋掉以下部分:MNIST數據集上的邏輯迴歸
cv::Ptr<cv::ml::SVM> svm = cv::ml::SVM::create();
svm->setType(cv::ml::SVM::C_SVC);
svm->setKernel(cv::ml::SVM::POLY);//LINEAR, RBF, SIGMOID, POLY
svm->setTermCriteria(cv::TermCriteria(cv::TermCriteria::MAX_ITER, 100, 1e-6));
svm->setGamma(3);
svm->setDegree(3);
svm->train(trainingMat , cv::ml::ROW_SAMPLE , labelsMat);
,取而代之的是:
cv::Ptr<cv::ml::LogisticRegression> lr1 = cv::ml::LogisticRegression::create();
lr1->setLearningRate(0.001);
lr1->setIterations(10);
lr1->setRegularization(cv::ml::LogisticRegression::REG_L2);
lr1->setTrainMethod(cv::ml::LogisticRegression::BATCH);
lr1->setMiniBatchSize(1);
lr1->train(trainingMat, cv::ml::ROW_SAMPLE, labelsMat);
但首先,我得到這個錯誤: OpenCV的錯誤:錯誤的參數(數據和標籤必須是浮點矩陣)
然後,我改變
cv::Mat labelsMat(labels.size(), 1, CV_32S, labelsArray);
:
cv::Mat labelsMat(labels.size(), 1, CV_32F, labelsArray);
現在我得到這個錯誤:OpenCV的錯誤:錯誤的參數(數據應該有ATLEAST兩班)
我有10個班(0,1,...,9),但我不知道爲什麼我得到這個錯誤。我的代碼與上述教程中的代碼幾乎完全相同。
可能的分類之一,你'將'labelsArray'中的整數值解釋爲浮點數。嘗試這種方式,讓我知道:'cv :: Mat labelsMat(labels.size(),1,CV_32S,labelsArray); labelsMat.convertTo(labelsMat,CV_32F);'(數據相同) – Miki
@miki這很好用。謝謝 – MoNo