| 615 | } |
| 616 | |
| 617 | TVector<TString> GetMaybeGeneratedModelFeatureIds( |
| 618 | const TFullModel& model, |
| 619 | const TFeaturesLayoutPtr datasetFeaturesLayout) |
| 620 | { |
| 621 | const NCB::TFeaturesLayout modelFeaturesLayout = MakeFeaturesLayout(model); |
| 622 | TVector<TString> modelFeatureIds(modelFeaturesLayout.GetExternalFeatureCount()); |
| 623 | if (AllFeatureIdsEmpty(modelFeaturesLayout.GetExternalFeaturesMetaInfo())) { |
| 624 | if (datasetFeaturesLayout) { |
| 625 | THashMap<ui32, ui32> columnIndexesReorderMap; // unused |
| 626 | CheckModelAndDatasetCompatibility(model, *datasetFeaturesLayout, &columnIndexesReorderMap); |
| 627 | const auto datasetFeaturesMetaInfo = datasetFeaturesLayout->GetExternalFeaturesMetaInfo(); |
| 628 | if (!AllFeatureIdsEmpty(datasetFeaturesMetaInfo)) { |
| 629 | CB_ENSURE( |
| 630 | datasetFeaturesMetaInfo.size() >= modelFeatureIds.size(), |
| 631 | "Dataset has less features than the model" |
| 632 | ); |
| 633 | for (auto i : xrange(modelFeatureIds.size())) { |
| 634 | modelFeatureIds[i] = datasetFeaturesMetaInfo[i].Name; |
| 635 | } |
| 636 | } |
| 637 | } |
| 638 | } else { |
| 639 | modelFeatureIds = modelFeaturesLayout.GetExternalFeatureIds(); |
| 640 | } |
| 641 | for (size_t i = 0; i < modelFeatureIds.size(); ++i) { |
| 642 | if (modelFeatureIds[i].empty()) { |
| 643 | modelFeatureIds[i] = ToString(i); |
| 644 | } |
| 645 | } |
| 646 | return modelFeatureIds; |
| 647 | } |
| 648 | |
| 649 | TVector<TString> GetMaybeGeneratedModelFeatureIds(const TFullModel& model, const TDataProviderPtr dataset) { |
| 650 | TFeaturesLayoutPtr datasetFeaturesLayout; |
nothing calls this directly
no test coverage detected