3 #ifndef FORPY_DECIDERS_FASTDECIDER_H_ 4 #define FORPY_DECIDERS_FASTDECIDER_H_ 8 #include "../util/serialization/basics.h" 16 #include "../util/desk.h" 17 #include "../util/storage.h" 22 #pragma clang diagnostic push 23 #pragma clang diagnostic ignored "-Wunused-variable" 27 #pragma clang diagnostic pop 65 const size_t &n_valid_features_to_use = 0,
69 const uint &random_seed)
const {
70 return std::make_shared<FastDecider>(
80 LOG(WARNING) <<
"`n_valid_features_to_use` is greater than the number of " 83 <<
"the number accordingly.";
104 auto *ot_fd =
dynamic_cast<FastDecider *
>(other.get());
105 if (ot_fd ==
nullptr)
125 const std::function<
void(
void *)> &decision_param_transf =
nullptr)
const;
137 stream <<
"forpy::FastDecider[" <<
self.node_to_featsel.size()
141 std::pair<const std::vector<size_t> *,
142 const mu::variant<std::vector<float>, std::vector<double>,
143 std::vector<uint32_t>, std::vector<uint8_t>> *>
148 template <
class Archive>
150 ar(cereal::make_nvp(
"base", cereal::base_class<IDecider>(
this)),
159 const uint &min_samples_at_leaf,
Desk *d)
const;
170 mu::variant<std::vector<float>, std::vector<double>, std::vector<uint32_t>,
171 std::vector<uint8_t>>
178 #endif // FORPY_DECIDERS_FASTDECIDER_H_ void make_node(const TodoMark &todo_info, const uint &min_samples_at_leaf, const IDataProvider &data_provider, Desk *d) const
Optimizes a classifier for the given data and stores the params.
void _make_node__postprocess(const IDataProvider &dprov, Desk *d) const
A classifier manager for weak classifiers with a filter function, a feature calculation function and ...
bool is_compatible_with(const IDataProvider &dprov)
A data provider for the training of one tree.
size_t id_t
Element id type.
CEREAL_REGISTER_TYPE(forpy::FastDecider)
bool supports_weights() const
Whether this classifier manager supports sample weights during training.
typename mu::variant< Empty, STOT< float >, STOT< double >, STOT< uint >, STOT< uint8_t > > Data
Storing a variant of the provided data container type.
mu::variant< std::vector< float >, std::vector< double >, std::vector< uint32_t >, std::vector< uint8_t > > node_to_thresh_v
size_t get_data_dim() const
void serialize(Archive &ar, const uint &)
void _make_node__checks(const TodoMark &todo_info, const IDataProvider &data_provider, const uint &min_samples_at_leaf, Desk *d) const
bool autoscale_valid_features
void finalize_capacity(const size_t &size)
Stores the parameters for one marked tree node.
void ensure_capacity(const size_t &n_samples)
friend class cereal::access
FastDecider(const std::shared_ptr< IThreshOpt > &threshold_optimizer=nullptr, const size_t &n_valid_features_to_use=0, const bool &autoscale_valid_features=false)
bool operator==(const IDecider &rhs) const
std::shared_ptr< IThreshOpt > get_threshopt() const
size_t get_feat_vec_dim() const
Get the feature vector dimension.
bool decide(const id_t &node_id, const Data< MatCRef > &data_v, const std::function< void(void *)> &decision_param_transf=nullptr) const
Makes a decision for a node with already optimized parameters.
std::pair< const std::vector< size_t > *, const mu::variant< std::vector< float >, std::vector< double >, std::vector< uint32_t >, std::vector< uint8_t > > * > get_maps() const
std::vector< size_t > node_to_featsel
void transfer_or_run_check(const std::shared_ptr< IDecider > &other, IDataProvider *dprov)
virtual std::shared_ptr< IDecider > create_duplicate(const uint &random_seed) const
friend std::ostream & operator<<(std::ostream &stream, const FastDecider &self)
Interface for the decider. It does the optimization of the deciding classifier for each node and stor...
unsigned int uint
Convenience typedef for unsigned int.
std::shared_ptr< IThreshOpt > threshold_optimizer
void _make_node__opt(const IDataProvider &dprov, Desk *d) const
void set_data_dim(const size_t &val)