updated logistic regression program with new api example
This commit is contained in:
parent
af88f0c067
commit
3cdd2b2761
@ -76,6 +76,7 @@ int main()
|
|||||||
Mat labels_train, labels_test;
|
Mat labels_train, labels_test;
|
||||||
|
|
||||||
Mat responses, result;
|
Mat responses, result;
|
||||||
|
FileStorage fs1, fs2;
|
||||||
|
|
||||||
FileStorage f;
|
FileStorage f;
|
||||||
|
|
||||||
@ -120,12 +121,17 @@ int main()
|
|||||||
|
|
||||||
cout<<"initializing Logisitc Regression Parameters\n"<<endl;
|
cout<<"initializing Logisitc Regression Parameters\n"<<endl;
|
||||||
|
|
||||||
LogisticRegressionParams params = LogisticRegressionParams(0.001, 10, LogisticRegression::REG_L2, 1, LogisticRegression::BATCH, 1);
|
// LogisticRegressionParams params1 = LogisticRegressionParams(0.001, 10, LogisticRegression::BATCH, LogisticRegression::REG_L2, 1, 1);
|
||||||
|
// params1 (above) with batch gradient performs better than mini batch gradient below with same parameters
|
||||||
|
LogisticRegressionParams params1 = LogisticRegressionParams(0.001, 10, LogisticRegression::MINI_BATCH, LogisticRegression::REG_L2, 1, 1);
|
||||||
|
|
||||||
|
// however mini batch gradient descent parameters with slower learning rate(below) can be used to get higher accuracy than with parameters mentioned above
|
||||||
|
// LogisticRegressionParams params1 = LogisticRegressionParams(0.000001, 10, LogisticRegression::MINI_BATCH, LogisticRegression::REG_L2, 1, 1);
|
||||||
|
|
||||||
cout<<"training Logisitc Regression classifier\n"<<endl;
|
cout<<"training Logisitc Regression classifier\n"<<endl;
|
||||||
|
|
||||||
LogisticRegression lr_(data_train, labels_train, params);
|
LogisticRegression lr1(data_train, labels_train, params1);
|
||||||
lr_.predict(data_test, responses);
|
lr1.predict(data_test, responses);
|
||||||
labels_test.convertTo(labels_test, CV_32S);
|
labels_test.convertTo(labels_test, CV_32S);
|
||||||
|
|
||||||
cout<<"Original Label :: Predicted Label"<<endl;
|
cout<<"Original Label :: Predicted Label"<<endl;
|
||||||
@ -141,21 +147,24 @@ int main()
|
|||||||
cout<<"saving the classifier"<<endl;
|
cout<<"saving the classifier"<<endl;
|
||||||
|
|
||||||
// save the classfier
|
// save the classfier
|
||||||
lr_.save("NewLR_Trained.xml");
|
fs1.open("NewLR_Trained.xml",FileStorage::WRITE);
|
||||||
|
lr1.write(fs1);
|
||||||
|
fs1.release();
|
||||||
|
|
||||||
// load the classifier onto new object
|
// load the classifier onto new object
|
||||||
LogisticRegression lr2;
|
LogisticRegressionParams params2 = LogisticRegressionParams();
|
||||||
|
LogisticRegression lr2(params2);
|
||||||
cout<<"loading a new classifier"<<endl;
|
cout<<"loading a new classifier"<<endl;
|
||||||
|
fs2.open("NewLR_Trained.xml",FileStorage::READ);
|
||||||
lr2.load("NewLR_Trained.xml");
|
FileNode fn2 = fs2.root();
|
||||||
|
lr2.read(fn2);
|
||||||
|
fs2.release();
|
||||||
|
|
||||||
Mat responses2;
|
Mat responses2;
|
||||||
|
|
||||||
// predict using loaded classifier
|
// predict using loaded classifier
|
||||||
cout<<"predicting the dataset using the loaded classfier\n"<<endl;
|
cout<<"predicting the dataset using the loaded classfier\n"<<endl;
|
||||||
|
|
||||||
lr2.predict(data_test, responses2);
|
lr2.predict(data_test, responses2);
|
||||||
|
|
||||||
// calculate accuracy
|
// calculate accuracy
|
||||||
cout<<"accuracy using loaded classifier: "<<100 * (float)cv::countNonZero(labels_test == responses2)/responses2.rows<<"%"<<endl;
|
cout<<"accuracy using loaded classifier: "<<100 * (float)cv::countNonZero(labels_test == responses2)/responses2.rows<<"%"<<endl;
|
||||||
waitKey(0);
|
waitKey(0);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user