84 lines
3.3 KiB
C++
84 lines
3.3 KiB
C++
// 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_
|
|
|
|
|
|
|