void TestLabels(const TLabels& gt_labels, const TLabels& predicted_labels) { int correct_predictions = 0; if (gt_labels.size() != predicted_labels.size()) { cout << "Error! Files with predicted and ground truth labels " "have different number of samples." << endl; return; } if (!gt_labels.size()) { cout << "Error! Dataset is empty."; return; } for (TLabels::const_iterator predicted_it = predicted_labels.begin(); predicted_it != predicted_labels.end(); ++predicted_it) { string sample = predicted_it->first; TLabels::const_iterator gt_it = gt_labels.find(sample); if (gt_it == gt_labels.end()) { cout << "Error! File " << sample << " has no ground truth label." << endl; return; } if (predicted_it->second == gt_it->second) ++correct_predictions; } cout << "Precision: " << double(correct_predictions) / gt_labels.size() << endl; }