```// Copyright (C) 2010  Davis E. King (davis@dlib.net)
// License: Boost Software License   See LICENSE.txt for the full license.
#undef DLIB_SORT_BASIS_VECTORs_ABSTRACT_Hh_
#ifdef DLIB_SORT_BASIS_VECTORs_ABSTRACT_Hh_

#include <vector>

#include "../matrix.h"
#include "../statistics.h"

namespace dlib
{

// ----------------------------------------------------------------------------------------

template <
typename kernel_type,
typename vect1_type,
typename vect2_type,
typename vect3_type
>
const std::vector<typename kernel_type::sample_type> sort_basis_vectors (
const kernel_type& kern,
const vect1_type& samples,
const vect2_type& labels,
const vect3_type& basis,
double eps = 0.99
);
/*!
requires
- is_binary_classification_problem(samples, labels)
- 0 < eps <= 1
- basis.size() > 0
- kernel_type is a kernel function object as defined in dlib/svm/kernel_abstract.h
It must be capable of operating on the elements of samples and basis.
- vect1_type == a matrix or something convertible to a matrix via mat()
- vect2_type == a matrix or something convertible to a matrix via mat()
- vect3_type == a matrix or something convertible to a matrix via mat()
ensures
- A kernel based learning method ultimately needs to select a set of basis functions
represented by a particular choice of kernel and a set of basis vectors.
sort_basis_vectors() attempts to order the elements of basis so that elements which are
most useful in solving the binary classification problem defined by samples and
labels come first.
- In particular, this function returns a std::vector, SB, of sorted basis vectors such that:
- 0 < SB.size() <= basis.size()
- SB will contain elements from basis but they will have been sorted so that
the most useful elements come first (i.e. SB is the most important).
- eps notionally controls how big SB will be.  Bigger eps corresponds to a
bigger basis.  You can think of it like asking for eps percent of the
discriminating power from the input basis.
!*/

// ----------------------------------------------------------------------------------------

}

#endif // DLIB_SORT_BASIS_VECTORs_ABSTRACT_Hh_

```