| 317 | } |
| 318 | |
| 319 | static TVector<TVector<float>> BuildTargets(const TVector<TProcessedDataProvider>& datasetParts) { |
| 320 | const auto targetDim = datasetParts.empty() ? 0 : datasetParts[0].TargetData->GetTargetDimension(); |
| 321 | |
| 322 | auto result = TVector<TVector<float>>(targetDim); |
| 323 | for (auto targetIdx : xrange(targetDim)) { |
| 324 | result[targetIdx].reserve(GetDocCount(datasetParts)); |
| 325 | } |
| 326 | for (const auto& datasetPart : datasetParts) { |
| 327 | CB_ENSURE(datasetPart.TargetData->GetTargetDimension() == targetDim, "Inconsistent target dimensionality between dataset parts"); |
| 328 | const auto target = *datasetPart.TargetData->GetTarget(); |
| 329 | for (auto targetIdx : xrange(targetDim)) { |
| 330 | result[targetIdx].insert(result[targetIdx].end(), target[targetIdx].begin(), target[targetIdx].end()); |
| 331 | } |
| 332 | } |
| 333 | return result; |
| 334 | } |
| 335 | |
| 336 | static TVector<float> BuildWeights(const TVector<TProcessedDataProvider>& datasetParts) { |
| 337 | TVector<float> result; |
no test coverage detected