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

Function UpdateIgnoredFeaturesInLearn

catboost/libs/train_lib/eval_feature.cpp:567–628  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

565
566
567static TVector<TTrainingDataProviders> UpdateIgnoredFeaturesInLearn(
568 const NCatboostOptions::TFeatureEvalOptions& options,
569 ETrainingKind trainingKind,
570 ui32 testedFeatureSetIdx,
571 const TVector<TTrainingDataProviders>& foldsData
572) {
573 TVector<ui32> ignoredFeatures;
574 const auto& testedFeatures = options.FeaturesToEvaluate.Get();
575 const auto featureEvalMode = options.FeatureEvalMode;
576 if (trainingKind == ETrainingKind::Testing) {
577 if (featureEvalMode == NCB::EFeatureEvalMode::OthersVsAll) {
578 ignoredFeatures = testedFeatures[testedFeatureSetIdx];
579 } else {
580 THashSet<ui32> ignoredFeaturesAsSet;
581 for (const auto& featureSet : testedFeatures) {
582 ignoredFeaturesAsSet.insert(featureSet.begin(), featureSet.end());
583 }
584 for (ui32 featureIdx : testedFeatures[testedFeatureSetIdx]) {
585 ignoredFeaturesAsSet.erase(featureIdx);
586 }
587 ignoredFeatures.insert(ignoredFeatures.end(), ignoredFeaturesAsSet.begin(), ignoredFeaturesAsSet.end());
588 }
589 } else if (EqualToOneOf(featureEvalMode, NCB::EFeatureEvalMode::OneVsAll, NCB::EFeatureEvalMode::OthersVsAll)) {
590 // no additional ignored features
591 } else if (featureEvalMode == NCB::EFeatureEvalMode::OneVsOthers) {
592 ignoredFeatures = testedFeatures[testedFeatureSetIdx];
593 } else {
594 CB_ENSURE(
595 featureEvalMode == NCB::EFeatureEvalMode::OneVsNone,
596 "Unknown feature evaluation mode " + ToString(featureEvalMode)
597 );
598 for (const auto& featureSet : testedFeatures) {
599 ignoredFeatures.insert(
600 ignoredFeatures.end(),
601 featureSet.begin(),
602 featureSet.end());
603 }
604 }
605
606 TStringBuilder logMessage;
607 logMessage << "Feature set " << testedFeatureSetIdx;
608 if (trainingKind == ETrainingKind::Baseline) {
609 logMessage << ", baseline";
610 } else {
611 logMessage << ", testing";
612 }
613 if (ignoredFeatures.empty()) {
614 logMessage << ", no additional ignored features";
615 } else {
616 std::sort(ignoredFeatures.begin(), ignoredFeatures.end());
617 logMessage << ", additional ignored features " << JoinRange(":", ignoredFeatures.begin(), ignoredFeatures.end());
618 }
619 CATBOOST_INFO_LOG << logMessage << Endl;
620
621 TVector<TTrainingDataProviders> result;
622 result.reserve(foldsData.size());
623
624 for (const auto& foldData : foldsData) {

Callers 1

EvaluateFeaturesImplFunction · 0.85

Calls 14

EqualToOneOfFunction · 0.85
ToStringFunction · 0.70
sortFunction · 0.50
JoinRangeFunction · 0.50
GetMethod · 0.45
insertMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
eraseMethod · 0.45
emptyMethod · 0.45
reserveMethod · 0.45

Tested by

no test coverage detected