21 #ifndef _DATA_SET_UTILS_H
22 #define _DATA_SET_UTILS_H
40 template<
class AggTypeDst,
class AggTypeSrc>
45 template<
class AggTypeDst,
class AggTypeSrc>
50 template<
class AggTypeDst,
class AggTypeSrc>
57 template<
class AggTypeDst,
class AggTypeSrc>
62 template<
class AggTypeDst,
class AggTypeSrc>
66 template<
class AggTypeDst,
class AggTypeSrc>
71 template<
class AggTypeDst,
class AggTypeSrc>
76 template<
class AggTypeDst,
class AggTypeSrc>
81 p.height = src.height;
85 n.height = src.height;
87 for(
typename std::vector<typename AggTypeSrc::PatternType >::const_iterator i = src.
templates.begin(); i!= src.
templates.end(); ++i)
95 template<
class AggTypeDst,
class AggTypeSrc>
101 for(
int i=0; i<src.
Size(); ++i)
106 std::multimap<double,int> d;
108 for(
int i=0; i<src.
Size(); ++i)
109 d.insert(std::pair<double,int>(src.
templates[i].d, i) );
111 std::multimap<double,int>::reverse_iterator rit = d.rbegin();
112 for(
int i=0; i<m; ++i)
122 template<
class AggTypeDst,
class AggTypeSrc>
128 for(
int i=0; i<src.
Size(); ++i)
133 std::multimap<double,int> d;
135 for(
int i=0; i<src.
Size(); ++i)
136 d.insert(std::pair<double,int>(src.
templates[i].d, i) );
138 std::multimap<double,int>::iterator rit = d.begin();
139 for(
int i=0; i<m; ++i)
149 template<
class AggTypeDst,
class AggTypeSrc>
155 for(
int i=0; i<src.
Size(); ++i)
163 std::cout <<
"Ammount of Energy: " << wP <<
"(+) " << wN <<
"(-)" << std::endl;
164 float th = perc * std::min(wP,wN);
165 std::cout <<
"\tthreshold = " << th << std::endl;
171 while(aP < th || aN < th)
174 if((src.
templates[i].category == 1) && (aP < th))
179 else if((src.
templates[i].category == -1) && (aN < th))
187 template<
class AggTypeDst,
class AggTypeSrc>
193 for(
int i=0; i<src.
Size(); ++i)
198 double *d =
new double [src.
Size()];
202 for(
int i =0; i<src.
Size(); ++i)
206 for(
int i =0; i<src.
Size(); ++i)
208 daux += std::sqrt(src.
templates[i].d) / dsum;
213 for(
int i=0; i<m; ++i)
226 template<
class AggTypeDst,
class AggTypeSrc>
231 for(
int i=0; i<m; ++i)
235 template<
class AggTypeDst,
class AggTypeSrc>
239 std::vector<bool> bitset(m);
243 dst.width = src.width;
244 dst.height = src.height;
249 validation->
templates.reserve(m-(nA+nB));
250 validation->width = src.width;
251 validation->height = src.height;
254 for(
int i =0; i<m; ++i) bitset[i]=
false;
255 for(
int i =0; i<nA+nB; ++i)
265 if( src.
templates[n].category == 1 && nA==0)
267 if( src.
templates[n].category == -1 && nB==0)
288 for(
int i=0; i<m; ++i)
void ExtractWorst(DataSetHandle< AggTypeDst > &dst, const DataSetHandle< AggTypeSrc > &src, int m)
Definition: DataSetUtils.h:96
void Insert(const PatternType &p)
add a new pattern to the list
Definition: DataSet.h:117
void ExtractReweighingEnergy(DataSetHandle< AggTypeDst > &dst, const DataSetHandle< AggTypeSrc > &src, float perc)
Definition: DataSetUtils.h:150
unsigned int Size() const
Return number of allocated samples (complete size of DataSet)
Definition: DataSet.h:101
ListType templates
a collection of Pattern used in this dataset
Definition: DataSet.h:73
an exclusive random generator
Definition: bitset.h:32
void Clear()
Reset (but not release memory)
Definition: DataSet.h:94
void RandomSample(DataSetHandle< AggTypeDst > &dst, DataSetHandle< AggTypeDst > *validation, const DataSetHandle< AggTypeSrc > &src, int nA, int nB)
Definition: DataSetUtils.h:236
int randslot(const double *slots, int n)
void RandomSampleWithDistribution(DataSetHandle< AggTypeDst > &dst, const DataSetHandle< AggTypeSrc > &src, int m)
Definition: DataSetUtils.h:188
void Split(DataSetHandle< AggTypeDst > &p, DataSetHandle< AggTypeDst > &n, const DataSetHandle< AggTypeSrc > &src)
Definition: DataSetUtils.h:77
additional typedef, for portability under win32
void RandomUniqueSample(DataSetHandle< AggTypeDst > &dst, const DataSetHandle< AggTypeSrc > &src, int m)
Definition: DataSetUtils.h:227
some usefull bit operator function
void ExtractBest(DataSetHandle< AggTypeDst > &dst, const DataSetHandle< AggTypeSrc > &src, int m)
Definition: DataSetUtils.h:123