@@ -99,6 +99,34 @@ class DecisionTree {
99
99
load_tree (filename);
100
100
}
101
101
102
+ DecisionTree (const DecisionTree& tree)
103
+ : nfeatures_(tree.nfeatures()),
104
+ nclasses_(tree.nclasses()),
105
+ nodecount_(tree.nodecount()),
106
+ maxdepth_(tree.maxdepth()),
107
+ classes_(tree.cclasses()),
108
+ feature_names_(tree.cfeature_names()),
109
+ left_child_(tree.cleft_child()),
110
+ right_child_(tree.cright_child()),
111
+ threshold_(tree.cthreshold()),
112
+ features_(tree.cfeatures()),
113
+ values_(tree.cvalues()) {}
114
+
115
+ DecisionTree& operator =(const DecisionTree& tree) {
116
+ nfeatures_ = tree.nfeatures ();
117
+ nclasses_ = tree.nclasses ();
118
+ nodecount_ = tree.nodecount ();
119
+ maxdepth_ = tree.maxdepth ();
120
+ classes_ = tree.cclasses ();
121
+ feature_names_ = tree.cfeature_names ();
122
+ left_child_ = tree.cleft_child ();
123
+ right_child_ = tree.cright_child ();
124
+ threshold_ = tree.cthreshold ();
125
+ features_ = tree.cfeatures ();
126
+ values_ = tree.cvalues ();
127
+ return *this ;
128
+ }
129
+
102
130
void load_tree (const std::string& filename) {
103
131
Morpheus::Oracle::load_tree (filename, *this );
104
132
}
@@ -150,15 +178,15 @@ class DecisionTree {
150
178
print_matrix (values (), nodecount (), nclasses (), std::cout, offset + 2 );
151
179
}
152
180
153
- size_type nfeatures () { return nfeatures_; }
154
- size_type nclasses () { return nclasses_; }
155
- size_type nodecount () { return nodecount_; }
156
- size_type maxdepth () { return maxdepth_; }
181
+ size_type nfeatures () const { return nfeatures_; }
182
+ size_type nclasses () const { return nclasses_; }
183
+ size_type nodecount () const { return nodecount_; }
184
+ size_type maxdepth () const { return maxdepth_; }
157
185
158
- void set_nfeatures (size_t nfeatures) { nfeatures_ = nfeatures; }
159
- void set_nclasses (size_t nclasses) { nclasses_ = nclasses; }
160
- void set_nodecount (size_t nodecount) { nodecount_ = nodecount; }
161
- void set_maxdepth (size_t maxdepth) { maxdepth_ = maxdepth; }
186
+ void set_nfeatures (const size_t nfeatures) { nfeatures_ = nfeatures; }
187
+ void set_nclasses (const size_t nclasses) { nclasses_ = nclasses; }
188
+ void set_nodecount (const size_t nodecount) { nodecount_ = nodecount; }
189
+ void set_maxdepth (const size_t maxdepth) { maxdepth_ = maxdepth; }
162
190
163
191
index_type& classes (size_t i) { return classes_ (i); }
164
192
index_type& left_child (size_t i) { return left_child_ (i); }
@@ -168,6 +196,16 @@ class DecisionTree {
168
196
value_type& values (size_t i, size_t j) { return values_ (i, j); }
169
197
string_type& feature_names (size_t i) { return feature_names_[i]; }
170
198
199
+ const index_type& cclasses (size_t i) const { return classes_ (i); }
200
+ const index_type& cleft_child (size_t i) const { return left_child_ (i); }
201
+ const index_type& cright_child (size_t i) const { return right_child_ (i); }
202
+ const value_type& cthreshold (size_t i) const { return threshold_ (i); }
203
+ const value_type& cfeatures (size_t i) const { return features_ (i); }
204
+ const value_type& cvalues (size_t i, size_t j) const { return values_ (i, j); }
205
+ const string_type& cfeature_names (size_t i) const {
206
+ return feature_names_[i];
207
+ }
208
+
171
209
index_vector& classes () { return classes_; }
172
210
index_vector& left_child () { return left_child_; }
173
211
index_vector& right_child () { return right_child_; }
@@ -176,6 +214,14 @@ class DecisionTree {
176
214
scalar_vector2d& values () { return values_; }
177
215
string_vector& feature_names () { return feature_names_; }
178
216
217
+ const index_vector& cclasses () const { return classes_; }
218
+ const index_vector& cleft_child () const { return left_child_; }
219
+ const index_vector& cright_child () const { return right_child_; }
220
+ const scalar_vector& cthreshold () const { return threshold_; }
221
+ const scalar_vector& cfeatures () const { return features_; }
222
+ const scalar_vector2d& cvalues () const { return values_; }
223
+ const string_vector& cfeature_names () const { return feature_names_; }
224
+
179
225
/* ! \cond */
180
226
private:
181
227
size_type nfeatures_, nclasses_, nodecount_, maxdepth_;
0 commit comments