// Copyright (C) 2011 Davis E. King (davis@dlib.net) // License: Boost Software License See LICENSE.txt for the full license. #undef DLIB_CROSS_VALIDATE_SEQUENCE_LABeLER_ABSTRACT_Hh_ #ifdef DLIB_CROSS_VALIDATE_SEQUENCE_LABeLER_ABSTRACT_Hh_ #include <vector> #include "../matrix.h" #include "svm.h" namespace dlib { // ---------------------------------------------------------------------------------------- template < typename sequence_labeler_type, typename sequence_type > const matrix<double> test_sequence_labeler ( const sequence_labeler_type& labeler, const std::vector<sequence_type>& samples, const std::vector<std::vector<unsigned long> >& labels ); /*! requires - is_sequence_labeling_problem(samples, labels) - sequence_labeler_type == dlib::sequence_labeler or an object with a compatible interface. ensures - Tests labeler against the given samples and labels and returns a confusion matrix summarizing the results. - The confusion matrix C returned by this function has the following properties. - C.nc() == labeler.num_labels() - C.nr() == labeler.num_labels() - C(T,P) == the number of times a sequence element with label T was predicted to have a label of P. - Any samples with a label value >= labeler.num_labels() are ignored. That is, samples with labels the labeler hasn't ever seen before are ignored. !*/ // ---------------------------------------------------------------------------------------- template < typename trainer_type, typename sequence_type > const matrix<double> cross_validate_sequence_labeler ( const trainer_type& trainer, const std::vector<sequence_type>& samples, const std::vector<std::vector<unsigned long> >& labels, const long folds ); /*! requires - is_sequence_labeling_problem(samples, labels) - 1 < folds <= samples.size() - for all valid i and j: labels[i][j] < trainer.num_labels() - trainer_type == dlib::structural_sequence_labeling_trainer or an object with a compatible interface. ensures - performs k-fold cross validation by using the given trainer to solve the given sequence labeling problem for the given number of folds. Each fold is tested using the output of the trainer and the confusion matrix from all folds is summed and returned. - The total confusion matrix is computed by running test_sequence_labeler() on each fold and summing its output. - The number of folds used is given by the folds argument. - The confusion matrix C returned by this function has the following properties. - C.nc() == trainer.num_labels() - C.nr() == trainer.num_labels() - C(T,P) == the number of times a sequence element with label T was predicted to have a label of P. !*/ // ---------------------------------------------------------------------------------------- } #endif // DLIB_CROSS_VALIDATE_SEQUENCE_LABeLER_ABSTRACT_Hh_