23 template<
class O=arma::uword>
27 std::pair<arma::Col<O>,arma::Col<O>> operator()
28 (
const arma::Col<O>& total,
const size_t size,
const T N )
32 return std::pair<arma::Col<O>,arma::Col<O>>(a,b);
35 void operator() (
const size_t size,
36 const arma::Row<size_t> Ns,
38 std::vector<std::pair<arma::Col<O>,arma::Col<O>>>& collect,
39 const size_t seed = SEED )
41 arma::Col<O> total = arma::regspace<arma::Col<O>>(0,size-1);
42 mlpack::RandomSeed(seed);
45 collect.resize(repeat*Ns.n_elem);
46 for (
size_t j = 0; j < repeat; ++j)
47 for (
size_t i = 0; i < Ns.n_elem; ++i)
48 collect.at(counter++) = (*this)(total, size, Ns[i]);
62 template<
class O=arma::uword>
66 std::pair<arma::Col<O>,arma::Col<O>> operator()
67 (
const arma::Col<O> total,
const size_t size,
const T N )
69 auto sel = arma::randi<arma::uvec>(N, arma::distr_param(0,size-1));
70 sel = arma::sort(sel);
72 return std::pair<arma::Col<O>,arma::Col<O>>(sel,rest);
75 void operator() (
const size_t size,
76 const arma::Row<size_t> Ns,
78 std::vector<std::pair<arma::Col<O>,arma::Col<O>>>& collect,
79 const size_t seed = SEED )
81 arma::Col<O> total = arma::regspace<arma::Col<O>>(0,size-1);
82 mlpack::RandomSeed(seed);
85 collect.resize(repeat*Ns.n_elem);
86 for (
size_t j = 0; j < repeat; ++j)
87 for (
size_t i = 0; i < Ns.n_elem; ++i)
88 collect.at(counter++) = (*this)(total, size, Ns[i]);
100 template<
class O=arma::uword>
103 void operator() (
const size_t size,
104 const arma::Row<size_t> Ns,
106 std::vector<std::pair<arma::Col<O>,arma::Col<O>>>& collect,
107 const size_t seed = SEED )
110 auto total = arma::regspace<arma::Col<O>>(0,size-1);
112 collect.resize(repeat*Ns.n_elem);
113 mlpack::RandomSeed(seed);
114 for (
size_t j = 0; j < repeat; ++j)
116 arma::Col<O> trainset,testset;
117 for (
size_t i=0; i < Ns.n_elem; i++)
120 Split(total,trainset,testset,Ns[i]);
122 Migrate(trainset,testset,Ns[i]-Ns[i-1]);
123 collect.at(counter++) =
124 std::pair<arma::Col<O>,arma::Col<O>>(trainset,testset);
void Split(const arma::Mat< T > &input, const arma::Row< U > &inputLabel, arma::Mat< T > &trainData, arma::Mat< T > &testData, arma::Row< U > &trainLabel, arma::Row< U > &testLabel, const size_t trainNum)
T SetDiff(const T &check, const T &with)
void Migrate(arma::Mat< T > &train_inp, arma::Row< U > &train_lab, arma::Mat< T > &test_inp, arma::Row< U > &test_lab, const size_t N)