MCPcopy Create free account
hub / github.com/catboost/catboost / GetTreeNodeToLeaf

Function GetTreeNodeToLeaf

catboost/private/libs/algo/tree_print.cpp:264–279  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

262}
263
264TVector<ui32> GetTreeNodeToLeaf(const TFullModel& model, size_t treeIdx) {
265 CB_ENSURE(treeIdx < model.GetTreeCount(),
266 "Requested tree leaves for nodes for tree " << treeIdx << ", but model has " << model.GetTreeCount());
267 Y_ASSERT(!model.IsOblivious());
268 const size_t offset = model.ModelTrees->GetModelTreeData()->GetTreeStartOffsets()[treeIdx];
269 const auto start = model.ModelTrees->GetModelTreeData()->GetNonSymmetricNodeIdToLeafId().begin() + offset;
270 const auto end = start + model.ModelTrees->GetModelTreeData()->GetTreeSizes()[treeIdx];
271 auto applyData = model.ModelTrees->GetApplyData();
272 const size_t firstLeafOffset = applyData->TreeFirstLeafOffsets[treeIdx];
273 const size_t dimensionsCount = model.GetDimensionsCount();
274 TVector<ui32> nodeToLeaf(start, end);
275 for (auto& value : nodeToLeaf) {
276 value = (value - firstLeafOffset) / dimensionsCount;
277 }
278 return nodeToLeaf;
279}

Callers

nothing calls this directly

Calls 8

GetTreeStartOffsetsMethod · 0.80
GetTreeSizesMethod · 0.80
GetApplyDataMethod · 0.80
GetTreeCountMethod · 0.45
IsObliviousMethod · 0.45
beginMethod · 0.45
GetDimensionsCountMethod · 0.45

Tested by

no test coverage detected