35 #ifndef SHARK_MODELS_TREES_CARTCLASSIFIER_H 36 #define SHARK_MODELS_TREES_CARTCLASSIFIER_H 57 template<
class LabelType>
77 template<
class Archive>
78 void serialize(Archive & ar,
const unsigned int version){
124 {
return "CARTClassifier"; }
127 return boost::shared_ptr<State>(
new EmptyState());
132 void eval(
const BatchInputType& patterns, BatchOutputType& outputs)
const{
137 get(outputs,0) = firstResult;
140 for(std::size_t i = 0; i != numPatterns; ++i){
145 void eval(
const BatchInputType& patterns, BatchOutputType& outputs,
State& state)
const{
146 eval(patterns,outputs);
149 void eval(RealVector
const & pattern, LabelType& output){
194 typename SplitMatrixType::const_iterator it;
197 if(it->leftNodeId != 0) {
198 r(it->attributeIndex)++;
269 std::random_shuffle(v.begin(), v.end());
276 double accuracyPermutedOOB = 1. - lossOOB.
eval(pDataOOB.
labels(),pPredOOB);
304 std::random_shuffle(v.begin(), v.end());
311 double msePermutedOOB = lossOOB.
eval(pDataOOB.
labels(),pPredOOB);
324 std::size_t index = 0;
325 for(; nodeId != m_splitMatrix[index].nodeId; ++index);
334 for(std::size_t i = 0; i < splitMatrix.size(); i++){
338 for(std::size_t i = 0; i < splitMatrix.size(); i++){
339 splitMatrix[i].nodeId = i;
344 template<
class Vector>
350 nodeId = m_splitMatrix[
nodeId].leftNodeId;
353 nodeId = m_splitMatrix[
nodeId].rightNodeId;
356 return m_splitMatrix[
nodeId].label;