| 49 | class MarginalImputer { |
| 50 | public: |
| 51 | MarginalImputer( |
| 52 | const TDataProvider& dataset, |
| 53 | NPar::ILocalExecutor* executor, |
| 54 | TRestorableFastRng64* randPtr) |
| 55 | : RandPtr(randPtr) |
| 56 | { |
| 57 | LocalExecutor = executor; |
| 58 | ReferenceSamplesCount = dataset.GetObjectCount(); |
| 59 | |
| 60 | auto objectsPtr = dynamic_cast<TRawObjectsDataProvider*>(dataset.ObjectsData.Get()); |
| 61 | CB_ENSURE_INTERNAL(objectsPtr, "Zero pointer to raw objects"); |
| 62 | auto referenceDataProviderPtr = TRawObjectsDataProviderPtr(objectsPtr); |
| 63 | |
| 64 | // float |
| 65 | ui32 floatFeaturesCount = dataset.MetaInfo.FeaturesLayout->GetFloatFeatureCount(); |
| 66 | for (ui32 featureIndex = 0; featureIndex < floatFeaturesCount; ++featureIndex) { |
| 67 | auto featureValues = (*referenceDataProviderPtr->GetFloatFeature(featureIndex))-> |
| 68 | ExtractValues(LocalExecutor); |
| 69 | ReferenceSamplesFloat.push_back(std::move(featureValues)); |
| 70 | } |
| 71 | |
| 72 | // categorical |
| 73 | ui32 catFeaturesCount = dataset.MetaInfo.FeaturesLayout->GetCatFeatureCount(); |
| 74 | for (ui32 featureIndex = 0; featureIndex < catFeaturesCount; ++featureIndex) { |
| 75 | auto featureValues = (*referenceDataProviderPtr->GetCatFeature(featureIndex))-> |
| 76 | ExtractValues(LocalExecutor); |
| 77 | ReferenceSamplesCategorical.push_back(std::move(featureValues)); |
| 78 | } |
| 79 | |
| 80 | // text |
| 81 | ui32 textFeaturesCount = dataset.MetaInfo.FeaturesLayout->GetTextFeatureCount(); |
| 82 | for (ui32 featureIndex = 0; featureIndex < textFeaturesCount; ++featureIndex) { |
| 83 | auto featureValues = (*referenceDataProviderPtr->GetTextFeature(featureIndex))-> |
| 84 | ExtractValues(LocalExecutor); |
| 85 | ReferenceSamplesText.push_back(std::move(featureValues)); |
| 86 | } |
| 87 | |
| 88 | // embedding |
| 89 | ui32 embeddingFeaturesCount = dataset.MetaInfo.FeaturesLayout->GetEmbeddingFeatureCount(); |
| 90 | for (ui32 featureIndex = 0; featureIndex < embeddingFeaturesCount; ++featureIndex) { |
| 91 | auto featureValues = (*referenceDataProviderPtr->GetEmbeddingFeature(featureIndex))-> |
| 92 | ExtractValues(LocalExecutor); |
| 93 | ReferenceSamplesEmbedding.push_back(std::move(featureValues)); |
| 94 | } |
| 95 | } |
| 96 | |
| 97 | void ImputeInplace( |
| 98 | const TVector<std::pair<ui32, EFeatureType>>& features, |
nothing calls this directly
no test coverage detected