13#if !defined(ULTRA_ORACLE_H)
37template<Indiv
idual P = gp::indiv
idual>
38[[nodiscard]] std::unique_ptr<basic_oracle>
45bool save(std::ostream &,
const std::unique_ptr<basic_oracle> &);
76 [[nodiscard]]
virtual value_t operator()(
77 const std::vector<value_t> &)
const = 0;
79 [[nodiscard]]
virtual bool is_valid()
const = 0;
81 [[nodiscard]]
virtual std::string name(
const value_t &)
const = 0;
83 const std::vector<value_t> &)
const = 0;
87 [[nodiscard]]
virtual std::string serialize_id()
const = 0;
88 virtual bool save(std::ostream &)
const = 0;
90 template<Indiv
idual P>
friend std::unique_ptr<basic_oracle>
91 serialize::oracle::load(std::istream &,
const symbol_set &);
108template<Indiv
idual P,
bool S>
110 protected internal::reg_oracle_storage<P, S>
123 static const
std::
string SERIALIZE_ID;
131 [[nodiscard]]
std::
string serialize_id() const noexcept final
132 {
return SERIALIZE_ID; }
150template<RegressionPredictor O>
160 [[nodiscard]]
bool is_valid()
const override {
return true; }
162 [[nodiscard]] std::string
name(
const value_t &v)
const override;
166 const std::vector<value_t> &)
const override;
167 [[nodiscard]] std::string serialize_id()
const override;
168 bool save(std::ostream &)
const override;
208 [[nodiscard]] std::string
name(
const value_t &)
const final;
219 std::vector<std::string> names_ {};
231template<
class I,
bool S>
236 std::vector<std::string> = {});
240 const std::vector<value_t> &)
const final;
245 static const
std::
string SERIALIZE_ID;
252 [[nodiscard]]
std::
string serialize_id() const noexcept final
253 {
return SERIALIZE_ID; }
260 std::vector<distribution<double>> gauss_dist_ {};
272template<
class I,
bool S>
277 std::vector<std::string> = {});
281 const std::vector<value_t> &)
const final;
286 static const
std::
string SERIALIZE_ID;
290 [[nodiscard]]
std::
string serialize_id() const noexcept final
291 {
return SERIALIZE_ID; }
311template<ClassificationPredictor O>
319 [[nodiscard]]
bool is_valid()
const override {
return true; }
322 const std::vector<value_t> &)
const override;
325 [[nodiscard]] std::string serialize_id()
const override;
326 bool save(std::ostream &)
const override;
341template<ClassificationPredictor O,
342 team_composition C = team_composition::standard>
346 template<Indiv
idual I>
348 std::vector<std::string> = {});
352 const std::vector<value_t> &)
const final;
356 static const
std::
string SERIALIZE_ID;
359 bool save(
std::ostream &) const final;
360 [[nodiscard]]
std::
string serialize_id() const noexcept final;
364 std::vector<O> team_;
375template<
class I,
bool S>
380 using basic_gaussian_oracle::team_class_oracle::team_class_oracle;
389template<
class I,
bool S>
394 using basic_binary_oracle::team_class_oracle::team_class_oracle;
400template<Indiv
idual P>
404 using reg_oracle::basic_reg_oracle::basic_reg_oracle;
408template<Indiv
idual P>
412 gaussian_oracle(
const P &ind,
const dataframe &d)
416 gaussian_oracle(std::istream &in,
const symbol_set &ss)
423template<Indiv
idual P>
427 binary_oracle(
const P &ind,
const dataframe &d)
431 binary_oracle(std::istream &in,
const symbol_set &ss)
std::size_t class_t
The type used as class ID in classification tasks.
Definition classification_result.h:22
basic_binary_oracle(const I &, const dataframe &, std::vector< std::string >={})
Definition oracle.h:558
bool save(std::ostream &) const final
Definition oracle.h:623
classification_result tag(const std::vector< value_t > &) const final
Definition oracle.h:597
bool is_valid() const final
Definition oracle.h:611
std::string name(const value_t &) const final
Returns the class name, falling back to a numeric name for unknown IDs.
Definition oracle.cc:35
value_t operator()(const std::vector< value_t > &) const final
Returns the predicted class label.
Definition oracle.cc:29
basic_class_oracle(std::vector< std::string >={})
Definition oracle.cc:23
bool load_names(std::istream &)
Loads the class names, accepting a zero count for omitted names.
Definition oracle.cc:57
static std::vector< std::string > class_names(const dataframe &)
Collects the class names from the training set.
Definition oracle.cc:45
bool save_names(std::ostream &) const
Saves a count followed by one class name per line.
Definition oracle.cc:75
bool save(std::ostream &) const final
Definition oracle.h:520
basic_gaussian_oracle(const I &, const dataframe &, std::vector< std::string >={})
Definition oracle.h:219
classification_result tag(const std::vector< value_t > &) const final
Definition oracle.h:438
bool is_valid() const final
Definition oracle.h:539
basic_reg_oracle(const P &)
Definition oracle.h:33
value_t operator()(const std::vector< value_t > &) const final
Definition oracle.h:60
bool save(std::ostream &) const final
Definition oracle.h:125
std::string name(const value_t &) const final
Definition oracle.h:104
bool is_valid() const final
Definition oracle.h:113
bool is_valid() const override
Definition oracle.h:319
class_oracle_adaptor(O, std::vector< std::string >={})
Definition oracle.h:640
classification_result tag(const std::vector< value_t > &) const override
Definition oracle.h:655
Definition dataframe.h:76
reg_oracle_adaptor(O)
Definition oracle.h:138
bool is_valid() const override
Definition oracle.h:160
std::string name(const value_t &v) const override
Definition oracle.h:164
value_t operator()(const std::vector< value_t > &) const override
Definition oracle.h:152
team_class_oracle(const gp::team< I > &, const dataframe &, std::vector< std::string >={})
Definition oracle.h:700
bool is_valid() const final
Definition oracle.h:824
classification_result tag(const std::vector< value_t > &) const final
Definition oracle.h:752
team_class_oracle(const gp::team< I > &t, const dataframe &d, std::vector< std::string > names)
Definition oracle.tcc:699
Definition symbol_set.h:115
bool save(std::ostream &out, F f)
Definition fitness.h:151
std::variant< D_VOID, D_INT, D_DOUBLE, D_STRING, const D_NULLARY *, D_ADDRESS, const D_VARIABLE *, D_IVECTOR > value_t
Definition value.h:54
bool save(std::ostream &out, const basic_oracle &ora)
Definition oracle.cc:99
team_composition
Definition oracle.h:187
Definition classification_result.h:28