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){
115 {
return "CARTClassifier"; }
118 return boost::shared_ptr<State>(
new EmptyState());
123 void eval(
const BatchInputType& patterns, BatchOutputType& outputs)
const{
128 get(outputs,0) = firstResult;
131 for(std::size_t i = 0; i != numPatterns; ++i){
136 void eval(
const BatchInputType& patterns, BatchOutputType& outputs,
State& state)
const{
137 eval(patterns,outputs);
140 void eval(RealVector
const & pattern, LabelType& output){
180 typename SplitMatrixType::const_iterator it;
183 if(it->leftNodeId != 0) {
184 r(it->attributeIndex)++;
255 std::random_shuffle(v.begin(), v.end());
262 double accuracyPermutedOOB = 1. - lossOOB.
eval(pDataOOB.
labels(),pPredOOB);
290 std::random_shuffle(v.begin(), v.end());
297 double msePermutedOOB = lossOOB.
eval(pDataOOB.
labels(),pPredOOB);
310 std::size_t index = 0;
311 for(; nodeId != m_splitMatrix[index].nodeId; ++index);
320 for(std::size_t i = 0; i < splitMatrix.size(); i++){
324 for(std::size_t i = 0; i < splitMatrix.size(); i++){
325 splitMatrix[i].nodeId = i;
330 template<
class Vector>
336 nodeId = m_splitMatrix[
nodeId].leftNodeId;
339 nodeId = m_splitMatrix[
nodeId].rightNodeId;
342 return m_splitMatrix[
nodeId].label;