| 98 | } |
| 99 | |
| 100 | void TCommonModelBuilderHelper::ProcessSplitsSet(const TSet<TModelSplit>& modelSplitSet, TModelTrees* trees) { |
| 101 | trees->SetApproxDimension(ApproxDimension); |
| 102 | for (auto& feature : FloatFeatures) { |
| 103 | feature.Borders.clear(); |
| 104 | } |
| 105 | trees->SetFloatFeatures(std::move(FloatFeatures)); |
| 106 | |
| 107 | MakeFeaturesUnused(MakeArrayRef(CatFeatures.begin(), CatFeatures.end())); |
| 108 | MakeFeaturesUnused(MakeArrayRef(TextFeatures.begin(), TextFeatures.end())); |
| 109 | MakeFeaturesUnused(MakeArrayRef(EmbeddingFeatures.begin(), EmbeddingFeatures.end())); |
| 110 | |
| 111 | trees->SetCatFeatures(std::move(CatFeatures)); |
| 112 | trees->SetTextFeatures(std::move(TextFeatures)); |
| 113 | trees->SetEmbeddingFeatures(std::move(EmbeddingFeatures)); |
| 114 | |
| 115 | trees->ProcessSplitsSet(modelSplitSet, |
| 116 | FloatFeaturesInternalIndexesMap, |
| 117 | CatFeaturesInternalIndexesMap, |
| 118 | TextFeaturesInternalIndexesMap, |
| 119 | EmbeddingFeaturesInternalIndexesMap); |
| 120 | for (const auto& split : modelSplitSet) { |
| 121 | const int binFeatureIdx = BinFeatureIndexes.ysize(); |
| 122 | Y_ASSERT(!BinFeatureIndexes.contains(split)); |
| 123 | BinFeatureIndexes[split] = binFeatureIdx; |
| 124 | } |
| 125 | Y_ASSERT(modelSplitSet.size() == BinFeatureIndexes.size()); |
| 126 | } |
| 127 | |
| 128 | |
| 129 | TObliviousTreeBuilder::TObliviousTreeBuilder( |
nothing calls this directly
no test coverage detected