12using stream_redirect = py::call_guard<py::scoped_ostream_redirect, py::scoped_estream_redirect>;
17 using RetType = std::conditional_t<
18 std::is_same_v<T,Reg>, ArrayXf,
19 std::conditional_t<std::is_same_v<T,Cls>,
ArrayXb,
20 std::conditional_t<std::is_same_v<T,MCls>,
ArrayXi, ArrayXXf>>>;
22 py::class_<T> prog(m, name.data() );
23 prog.def(py::init<>())
25 [](
const json& j){ T p = j;
return p; })
28 static_cast<T &(T::*)(
const Dataset &d)
>(&T::fit),
29 "fit from Dataset object")
31 static_cast<T &(T::*)(
const Ref<const ArrayXXf> &X,
const Ref<const ArrayXf> &y)
>(&T::fit),
33 .def(
"replace_program",
34 static_cast<T &(T::*)(
const T&)
>(&T::replace_program),
35 py::arg(
"new_program"),
36 "Replace the current program with a new program, invalidating fitness")
37 .def(
"replace_program",
38 static_cast<T &(T::*)(
const json&)
>(&T::replace_program),
39 py::arg(
"json_program"),
40 "Replace the current program from a JSON representation, invalidating fitness")
42 static_cast<RetType (T::*)(
const Dataset &d)
>(&T::predict),
43 "predict from Dataset object")
45 static_cast<RetType (T::*)(
const Ref<const ArrayXXf> &X)
>(&T::predict),
46 "predict from X data")
49 py::arg(
"end_depth") = 0,
50 py::arg(
"keep_leaves_unlocked") =
true,
51 py::arg(
"keep_current_weights") =
false,
56 py::arg(
"type") =
"compact",
57 py::arg(
"pretty") =
false,
60 .def(
"get_dot_model", &T::get_dot_model, py::arg(
"extras")=
"")
61 .def(
"get_weights", &T::get_weights)
62 .def(
"size", &T::size, py::arg(
"include_weight")=
true)
63 .def(
"complexity", &T::complexity)
64 .def(
"linear_complexity", &T::linear_complexity)
65 .def(
"depth", &T::depth)
70 .def(
"set_search_space", &T::set_search_space)
72 .def(
"copy", [](
const T& self){ T clone(self);
return clone; })
88 if constexpr (std::is_same_v<T,Cls>)
90 prog.def(
"predict_proba",
91 static_cast<ArrayXf (T::*)(
const Dataset &d)
>(&T::predict_proba),
92 "predict from Dataset object")
94 static_cast<ArrayXf (T::*)(
const Ref<const ArrayXXf> &X)
>(&T::predict_proba),
95 "predict from X data")
Brush::RepresenterEngine Rep
Brush::MulticlassClassifierEngine MCls
Brush::ClassifierEngine Cls
py::call_guard< py::scoped_ostream_redirect, py::scoped_estream_redirect > stream_redirect
Brush::RegressorEngine Reg
void bind_program(py::module &m, string name)
py::call_guard< py::scoped_ostream_redirect, py::scoped_estream_redirect > stream_redirect
holds variable type data.
Eigen::Array< bool, Eigen::Dynamic, 1 > ArrayXb
< nsga2 selection operator for getting the front
Program< PT::Representer > RepresenterProgram
Program< PT::BinaryClassifier > ClassifierProgram
Eigen::Array< int, Eigen::Dynamic, 1 > ArrayXi
Program< PT::Regressor > RegressorProgram
Program< PT::MulticlassClassifier > MulticlassClassifierProgram