@@ -768,7 +768,9 @@ TBinClassTarget::TBinClassTarget(
768768 )
769769{
770770 if (!skipCheck) {
771- CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
771+ if (target) {
772+ CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
773+ }
772774 CheckDataSize (weights->GetSize (), GetObjectCount (), " weights" );
773775 CheckMaybeEmptyBaseline (baseline, GetObjectCount ());
774776 }
@@ -779,7 +781,9 @@ TBinClassTarget::TBinClassTarget(
779781
780782
781783void TBinClassTarget::GetSourceDataForSubsetCreation (TSubsetTargetDataCache* subsetTargetDataCache) const {
782- subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
784+ if (Target) {
785+ subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
786+ }
783787 subsetTargetDataCache->Weights .emplace (Weights, TSharedWeights<float >());
784788 if (Baseline) {
785789 subsetTargetDataCache->Baselines .emplace (Baseline, TSharedVector<float >());
@@ -793,7 +797,7 @@ TTargetDataProviderPtr TBinClassTarget::GetSubset(
793797 return MakeIntrusive<TBinClassTarget>(
794798 GetSpecification ().Description ,
795799 std::move (objectsGrouping),
796- subsetTargetDataCache.Targets .at (Target),
800+ Target ? subsetTargetDataCache.Targets .at (Target) : Target ,
797801 subsetTargetDataCache.Weights .at (Weights),
798802
799803 // reuse empty vector
@@ -875,7 +879,9 @@ TMultiClassTarget::TMultiClassTarget(
875879 classCount >= 2 ,
876880 " MultiClass target data must have at least two classes (got " << classCount <<" )"
877881 );
878- CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
882+ if (target) {
883+ CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
884+ }
879885 CheckDataSize (weights->GetSize (), GetObjectCount (), " weights" );
880886 CheckBaseline (baseline, GetObjectCount (), classCount);
881887 }
@@ -892,7 +898,9 @@ TMultiClassTarget::TMultiClassTarget(
892898
893899
894900void TMultiClassTarget::GetSourceDataForSubsetCreation (TSubsetTargetDataCache* subsetTargetDataCache) const {
895- subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
901+ if (Target) {
902+ subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
903+ }
896904 subsetTargetDataCache->Weights .emplace (Weights, TSharedWeights<float >());
897905 for (const auto & oneBaseline : Baseline) {
898906 subsetTargetDataCache->Baselines .emplace (oneBaseline, TSharedVector<float >());
@@ -913,7 +921,7 @@ TTargetDataProviderPtr TMultiClassTarget::GetSubset(
913921 GetSpecification ().Description ,
914922 std::move (objectsGrouping),
915923 ClassCount,
916- subsetTargetDataCache.Targets .at (Target),
924+ Target ? subsetTargetDataCache.Targets .at (Target) : Target ,
917925 subsetTargetDataCache.Weights .at (Weights),
918926 std::move (subsetBaseline),
919927 true
@@ -981,7 +989,9 @@ TRegressionTarget::TRegressionTarget(
981989 )
982990{
983991 if (!skipCheck) {
984- CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
992+ if (target) {
993+ CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
994+ }
985995 CheckDataSize (weights->GetSize (), GetObjectCount (), " weights" );
986996 CheckMaybeEmptyBaseline (baseline, GetObjectCount ());
987997 }
@@ -991,7 +1001,9 @@ TRegressionTarget::TRegressionTarget(
9911001}
9921002
9931003void TRegressionTarget::GetSourceDataForSubsetCreation (TSubsetTargetDataCache* subsetTargetDataCache) const {
994- subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
1004+ if (Target) {
1005+ subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
1006+ }
9951007 subsetTargetDataCache->Weights .emplace (Weights, TSharedWeights<float >());
9961008 if (Baseline) {
9971009 subsetTargetDataCache->Baselines .emplace (Baseline, TSharedVector<float >());
@@ -1005,7 +1017,7 @@ TTargetDataProviderPtr TRegressionTarget::GetSubset(
10051017 return MakeIntrusive<TRegressionTarget>(
10061018 GetSpecification ().Description ,
10071019 std::move (objectsGrouping),
1008- subsetTargetDataCache.Targets .at (Target),
1020+ Target ? subsetTargetDataCache.Targets .at (Target) : Target ,
10091021 subsetTargetDataCache.Weights .at (Weights),
10101022
10111023 // reuse empty vector
@@ -1054,7 +1066,9 @@ TGroupwiseRankingTarget::TGroupwiseRankingTarget(
10541066 )
10551067{
10561068 if (!skipCheck) {
1057- CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
1069+ if (target) {
1070+ CheckDataSize (target->size (), (size_t )GetObjectCount (), " target" );
1071+ }
10581072 CheckDataSize (weights->GetSize (), GetObjectCount (), " weights" );
10591073 CheckMaybeEmptyBaseline (baseline, GetObjectCount ());
10601074 CheckGroupInfo (*groupInfo, *ObjectsGrouping, false );
@@ -1066,7 +1080,9 @@ TGroupwiseRankingTarget::TGroupwiseRankingTarget(
10661080}
10671081
10681082void TGroupwiseRankingTarget::GetSourceDataForSubsetCreation (TSubsetTargetDataCache* subsetTargetDataCache) const {
1069- subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
1083+ if (Target) {
1084+ subsetTargetDataCache->Targets .emplace (Target, TSharedVector<float >());
1085+ }
10701086 subsetTargetDataCache->Weights .emplace (Weights, TSharedWeights<float >());
10711087 if (Baseline) {
10721088 subsetTargetDataCache->Baselines .emplace (Baseline, TSharedVector<float >());
@@ -1081,7 +1097,7 @@ TTargetDataProviderPtr TGroupwiseRankingTarget::GetSubset(
10811097 return MakeIntrusive<TGroupwiseRankingTarget>(
10821098 GetSpecification ().Description ,
10831099 std::move (objectsGrouping),
1084- subsetTargetDataCache.Targets .at (Target),
1100+ Target ? subsetTargetDataCache.Targets .at (Target) : Target ,
10851101 subsetTargetDataCache.Weights .at (Weights),
10861102
10871103 // reuse empty vector
0 commit comments