void TTreeNode::removeStoredInfo() { distribution = PDistribution(); contingency = PDomainContingency(); examples = PExampleGenerator(); if (branches) const_PITERATE(TTreeNodeList, bi, branches) if (*bi) (*bi)->treeSize(); }
PConditionalProbabilityEstimator TConditionalProbabilityEstimatorConstructor_ByRows::operator()(PContingency frequencies, PDistribution apriori, PExampleGenerator gen, const long &weightID, const int &attrNo) const { if (!frequencies) frequencies = mlnew TContingencyAttrClass(gen, weightID, attrNo); if (frequencies->varType != TValue::INTVAR) if (frequencies->outerVariable) raiseError("attribute '%s' is not discrete", frequencies->outerVariable->get_name().c_str()); else raiseError("discrete attribute for condition expected"); /* We first try to construct a list of Distributions; if we suceed, we'll return an instance of TConditionProbabilityEstimator_FromDistribution. If we fail, we'll construct an instance of TConditionProbabilityEstimator_ByRows. */ // This list stores conditional estimators for the case we fail PProbabilityEstimatorList cpel = mlnew TProbabilityEstimatorList(); PContingency newcont = mlnew TContingencyAttrClass(frequencies->outerVariable, frequencies->innerVariable); TDistributionVector::const_iterator fi(frequencies->discrete->begin()), fe(frequencies->discrete->end()); for (int i = 0; fi!=fe; fi++, i++) { PProbabilityEstimator est = estimatorConstructor->call(*fi, apriori, PExampleGenerator(), 0, attrNo); cpel->push_back(est); PDistribution dist = est->call(); if (!dist) break; if (i >= newcont->discrete->size()) newcont->discrete->push_back(dist); else newcont->discrete->operator[](i) = dist; } if (fi==fe) return mlnew TConditionalProbabilityEstimator_FromDistribution(newcont); /* We failed at constructing a matrix of probabilites. We'll just complete the list of estimators. */ for (; fi!=fe; fi++) cpel->push_back(estimatorConstructor->call(*fi, apriori, gen, weightID)); TConditionalProbabilityEstimator_ByRows *cbr = mlnew TConditionalProbabilityEstimator_ByRows(); PConditionalProbabilityEstimator wcbr = cbr; cbr->estimatorList = cpel; return wcbr; }