21 #ifndef _PRECOMPUTED_BINARY_CLASSIFIER_ORACLE_H
22 #define _PRECOMPUTED_BINARY_CLASSIFIER_ORACLE_H
38 #include "Classifier/IndirectBinaryClassifier.h"
40 #include "detail/BinaryClassifierOptimize.h"
44 template<
class Policy>
49 template<
class FeatureType>
61 template<
class DataType>
66 std::pair<DataType, int> best_ret;
72 float *store =
new float[histo_bin_size];
75 for(
int i = f0; i< f1; ++i)
82 for(
int j = 0; j<histo_bin_size; ++j)
88 for(
int j=0; j<n_samples; ++j)
94 int bin = src->
bin[int64_t(i) * n_samples + k];
96 int bin = src->
bin[uint32_t(i * n_samples + k)];
103 std::pair<int, int> ret;
105 double w = SimpleOptimize(ret, store, histo_bin_size, wp, wn);
124 std::pair<DataType, float> * store =
new std::pair<DataType, float> [n_samples];
129 for(
int j=0; j< n_samples; ++j)
133 store[j].first = src->
response[int64_t(best_i) * n_samples + k];
135 store[j].first = src->
response[uint32_t(best_i * n_samples + k)];
137 store[j].second = src->
weights[k];
141 std::sort(&store[0], &store[n_samples]);
146 *out_w = Optimize(best_ret, store, n_samples, wp, wn,
false);
148 std::cout <<
"Before Optmization: " << bestw <<
" | After Optimization: " << * out_w <<
'\n';
149 c->th = best_ret.first;
150 c->parity = best_ret.second;
164 DataType delta = (maxr > minr) ? (maxr - minr + 1) : (1);
167 c->th = minr + ((best_ret.first * delta) / histo_bin_size);
168 c->parity = best_ret.second;
179 template<
class DataType>
189 float wp = 0.0, wn = 0.0;
190 for(
int i=0; i<n_samples; ++i)
201 if(max_concurrent_jobs>1)
206 double *outw =
new double[max_concurrent_jobs];
208 for(
int i =0; i<max_concurrent_jobs; ++i)
210 int f0 = (src.
n_features * i) / max_concurrent_jobs;
211 int f1 = (src.
n_features * (i+1) ) / max_concurrent_jobs;
218 for(
int i=0; i<max_concurrent_jobs; ++i)
223 root = candidates[i];
228 delete [] candidates;
231 #endif // #ifdef _MULTITHREAD
233 build_decision_stump_heuristic(&bestw, &root, &src, 0, src.
n_features, wp, wn);
242 std::cerr <<
"Error: no precompute bin. This oracle is not implemented now." << std::endl;
A classifier composed by a Feature Extractor and an Evaluation Policy A "Second Level" classifier...
Definition: BinaryClassifier.h:38
int * category
category list
Definition: PrecomputedPatternResponse.h:48
this header contains PrecomputedPatternResponse class, used to store hash information provided by a m...
double * weights
weights list
Definition: PrecomputedPatternResponse.h:50
int number_of_bins
Quantization level.
Definition: PrecomputedPatternResponse.h:58
int * bin
precomputed bin matrix (rows features, columns samples)
Definition: PrecomputedPatternResponse.h:56
Definition: thread_group.h:82
void join_all()
wait all threads terminate
Definition: thread_group.h:114
proposal 1 for thread group
int n_features
number of feature preallocated
Definition: PrecomputedPatternResponse.h:46
int n_samples
number of samples
Definition: PrecomputedPatternResponse.h:44
Definition: PrecomputedPatternResponse.h:41
int feature_index
the index of the feature used during the classification stage
Definition: IndirectBinaryClassifier.h:49
method to create function pointer for thread call
std::pair< ResponseType, ResponseType > * response_range
precomputed response ranges
Definition: PrecomputedPatternResponse.h:54
bool create_thread(const sprint::thread_function &p)
create an additional thread
Definition: thread_group.h:102
A classifier composed by an index of a feature and an Evaluation Policy.
Definition: IndirectBinaryClassifier.h:37
A Binary Classifier. Implements the class BinaryClassifier.
ResponseType * response
response matrix. For performance reason it each row is a feature and columns are samples ...
Definition: PrecomputedPatternResponse.h:52
Definition: PrecomputedBinaryClassifierOracle.h:45
Definition: PrecomputedBinaryClassifierOracle.h:50