Commit 3cdd2b27 authored by Rahul Kavi's avatar Rahul Kavi Committed by Maksim Shabunin

updated logistic regression program with new api example

parent af88f0c0
...@@ -76,6 +76,7 @@ int main() ...@@ -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() ...@@ -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() ...@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment