Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

Cannot classify correctly.

$
0
0
Dear Sir, I am playing with the model of Logistic Regression. I just want to classify a set of numbers from 0 to 9 for the numbers smaller than 5 as class "0" and others as class "1". However, It has a response of number 0 as "0" others as "1". Would someone tell me what's wrong. thank a lot. Mat data(30, 1, CV_32S); Mat labels(30, 1, CV_32S); Mat test(30, 1, CV_32S); // make training and testing data for (int i = 0; i < 30; i++) { data.at(i) = i % 10; test.at(i) = i % 10; if (i % 10 < 5) { labels.at(i) = 0; } else { labels.at(i) = 1; } } cout << data.t() << endl; cout << labels.t() << endl; data.convertTo(data, CV_32F); labels.convertTo(labels, CV_32F); cout << "Training samples:" << data.rows << ", Testing samples:" << test.rows << endl; cout << "Training..." << endl; Ptr lr1 = LogisticRegression::create(); lr1->setLearningRate(0.001); lr1->setIterations(10); lr1->setRegularization(LogisticRegression::REG_L2); lr1->setTrainMethod(LogisticRegression::BATCH); lr1->setMiniBatchSize(1); lr1->train(data, ROW_SAMPLE, labels); cout << "Testing..." << endl; Mat responses; test.convertTo(test, CV_32F); cout << test.t() << endl; lr1->predict(test, responses); cout << "Done!" << endl << endl; cout << "Original vs Predicted:" << endl; labels.convertTo(labels, CV_32S); cout << labels.t() << endl; cout << responses.t() << endl; getchar(); return 0; Train data: 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 Labels: 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1 Test=Train Response: 0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1

Viewing all articles
Browse latest Browse all 19555

Trending Articles