Brush C++ API
A flexible interpretable machine learning framework
Toggle main menu visibility
Loading...
Searching...
No Matches
bind_individuals.h
Go to the documentation of this file.
1
#include "
module.h
"
2
3
#include "
../ind/individual.h
"
4
5
namespace
nl
=
nlohmann
;
6
namespace
br
=
Brush
;
7
8
using
Reg
=
Brush::RegressorIndividual
;
9
using
Cls
=
Brush::ClassifierIndividual
;
10
using
MCls
=
Brush::MulticlassClassifierIndividual
;
11
using
Rep
=
Brush::RepresenterIndividual
;
12
13
using
stream_redirect
= py::call_guard<py::scoped_ostream_redirect, py::scoped_estream_redirect>;
14
15
template
<br::ProgramType PT>
16
void
bind_individual
(py::module& m,
string
name)
17
{
18
using
Class =
br::Pop::Individual<PT>
;
19
20
using
RetType = std::conditional_t<
21
std::is_same_v<Class,Reg>, ArrayXf,
22
std::conditional_t<std::is_same_v<Class,Cls>,
ArrayXb
,
23
std::conditional_t<std::is_same_v<Class,MCls>,
ArrayXi
, ArrayXXf>>>;
24
25
py::class_<Class> ind(m, name.data() );
26
ind.def(py::init<>())
27
.def(py::init([](
br::Program<PT>
& prg){ Class i(prg);
28
return
i; })
29
)
30
.def(py::init([](
const
json& j){
br::Program<PT>
prg = j;
31
Class i(prg);
32
return
i; })
33
)
34
.def(
"init"
, &Class::init)
35
.def_property(
"objectives"
, &Class::get_objectives, &Class::set_objectives)
36
.def_property_readonly(
"program"
, &Class::get_program)
37
.def_property_readonly(
"fitness"
, &Class::get_fitness)
38
.def_property_readonly(
"id"
, &Class::get_id)
39
.def(
"get_model"
, &Class::get_model,
40
py::arg(
"fmt"
) =
"compact"
,
41
py::arg(
"pretty"
) =
false
)
42
.def(
"get_dot_model"
, &Class::get_dot_model,
43
py::arg(
"extras"
) =
""
)
44
.def(
"fit"
,
45
static_cast<
Class &(Class::*)(
const
Dataset
&d)
>
(&Class::fit),
46
"fit from Dataset object"
)
47
.def(
"fit"
,
48
static_cast<
Class &(Class::*)(
const
Ref<const ArrayXXf> &X,
const
Ref<const ArrayXf> &y)
>
(&Class::fit),
49
"fit from X,y data"
)
50
.def(
"replace_program"
,
51
static_cast<
Class &(Class::*)(
const
br::Program<PT>
&)
>
(&Class::replace_program),
52
py::arg(
"new_program"
),
53
"Replace the current program with a new program, invalidating fitness"
)
54
.def(
"replace_program"
,
55
static_cast<
Class &(Class::*)(
const
json&)
>
(&Class::replace_program),
56
py::arg(
"json_program"
),
57
"Replace the current program from a JSON representation, invalidating fitness"
)
58
.def(
"predict"
,
59
static_cast<
RetType (Class::*)(
const
Dataset
&d)
>
(&Class::predict),
60
"predict from Dataset object"
)
61
.def(
"predict"
,
62
static_cast<
RetType (Class::*)(
const
Ref<const ArrayXXf> &X)
>
(&Class::predict),
63
"predict from X data"
)
64
.def_static(
"from_json"
, [](
const
nl::json j) -> Class {
65
Class p = j;
66
return
p; })
67
.def(py::pickle(
68
[](
const
Class &p) {
// __getstate__
69
/* Return a tuple that fully encodes the state of the object */
70
// return py::make_tuple(p.value(), p.extra());
71
nl::json j = p;
72
return
j;
73
},
74
[](nl::json j) {
// __setstate__
75
Class p = j;
76
return
p;
77
}
78
)
79
)
80
;
81
82
if
constexpr
(std::is_same_v<Class,Cls>)
83
{
84
ind.def(
"predict_proba"
,
85
static_cast<
ArrayXf (Class::*)(
const
Dataset
&d)
>
(&Class::predict_proba),
86
"predict from Dataset object"
)
87
.def(
"predict_proba"
,
88
static_cast<
ArrayXf (Class::*)(
const
Ref<const ArrayXXf> &X)
>
(&Class::predict_proba),
89
"predict from X data"
)
90
;
91
}
92
93
}
Rep
Brush::RepresenterEngine Rep
Definition
bind_engines.h:25
MCls
Brush::MulticlassClassifierEngine MCls
Definition
bind_engines.h:26
Cls
Brush::ClassifierEngine Cls
Definition
bind_engines.h:24
stream_redirect
py::call_guard< py::scoped_ostream_redirect, py::scoped_estream_redirect > stream_redirect
Definition
bind_engines.h:31
Reg
Brush::RegressorEngine Reg
Definition
bind_engines.h:23
bind_individual
void bind_individual(py::module &m, string name)
Definition
bind_individuals.h:16
Brush::Data::Dataset
holds variable type data.
Definition
data.h:51
Brush::Pop::Individual
Definition
individual.h:15
ArrayXb
Eigen::Array< bool, Eigen::Dynamic, 1 > ArrayXb
Definition
functions.h:25
individual.h
module.h
Brush
< nsga2 selection operator for getting the front
Definition
bandit.cpp:3
Brush::MulticlassClassifierIndividual
Pop::Individual< PT::MulticlassClassifier > MulticlassClassifierIndividual
Definition
types.h:90
Brush::ArrayXi
Eigen::Array< int, Eigen::Dynamic, 1 > ArrayXi
Definition
types.h:40
Brush::RepresenterIndividual
Pop::Individual< PT::Representer > RepresenterIndividual
Definition
types.h:91
Brush::ClassifierIndividual
Pop::Individual< PT::BinaryClassifier > ClassifierIndividual
Definition
types.h:89
Brush::RegressorIndividual
Pop::Individual< PT::Regressor > RegressorIndividual
Definition
types.h:88
nlohmann
Definition
utils.h:30
Brush::Program
An individual program, a.k.a. model.
Definition
program.h:49
src
bindings
bind_individuals.h
Generated by
1.17.0