56 lines
1.3 KiB
C++
56 lines
1.3 KiB
C++
#ifndef DLIB_CHECKERBOARD_TeST_H_
|
|
#define DLIB_CHECKERBOARD_TeST_H_
|
|
|
|
#include <dlib/matrix.h>
|
|
#include <vector>
|
|
#include <dlib/rand.h>
|
|
|
|
namespace dlib
|
|
{
|
|
|
|
template <typename scalar_type>
|
|
void get_checkerboard_problem (
|
|
std::vector<matrix<scalar_type,2,1> >& x,
|
|
std::vector<scalar_type>& y,
|
|
const long num_samples,
|
|
const long board_dimension = 8
|
|
)
|
|
/*!
|
|
requires
|
|
- num_samples > 0
|
|
- board_dimension > 0
|
|
ensures
|
|
- #x.size() == y.size() == num_samples
|
|
- is_binary_classification_problem(#x,#y) == true
|
|
- #x will contain points and #y labels that were
|
|
sampled randomly from a checkers board that has
|
|
board_dimension squares on each side.
|
|
!*/
|
|
{
|
|
static dlib::rand rnd;
|
|
|
|
x.clear();
|
|
y.clear();
|
|
|
|
matrix<scalar_type,2,1> sample;
|
|
for (long i = 0; i < num_samples; ++i)
|
|
{
|
|
sample(0) = rnd.get_random_double();
|
|
sample(1) = rnd.get_random_double();
|
|
sample *= board_dimension;
|
|
|
|
x.push_back(sample);
|
|
if (((int)sum(floor(sample)) %2) == 0)
|
|
y.push_back(+1);
|
|
else
|
|
y.push_back(-1);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
#endif // DLIB_CHECKERBOARD_TeST_H_
|
|
|