returns [datasetIdx][metricDescription] -> TMetricHolder
| 424 | |
| 425 | // returns [datasetIdx][metricDescription] -> TMetricHolder |
| 426 | static TVector<THashMap<TString, TMetricHolder>> CalcAdditiveStats(const TErrorCalcerParams& errorCalcerParams) { |
| 427 | const size_t workerCount = TMasterEnvironment::GetRef().RootEnvironment->GetSlaveCount(); |
| 428 | |
| 429 | // poll workers |
| 430 | auto additiveStatsFromAllWorkers = ApplyMapper<TErrorCalcer>( |
| 431 | workerCount, |
| 432 | TMasterEnvironment::GetRef().SharedTrainData, |
| 433 | errorCalcerParams); |
| 434 | Y_ASSERT(additiveStatsFromAllWorkers.size() == workerCount); |
| 435 | |
| 436 | auto& additiveStats = additiveStatsFromAllWorkers[0]; |
| 437 | for (size_t workerIdx : xrange<size_t>(1, workerCount)) { |
| 438 | const auto& workerAdditiveStats = additiveStatsFromAllWorkers[workerIdx]; |
| 439 | for (auto datasetIdx : xrange(workerAdditiveStats.size())) { |
| 440 | auto& datasetStats = additiveStats[datasetIdx]; |
| 441 | for (auto& [description, stats] : workerAdditiveStats[datasetIdx]) { |
| 442 | THashMap<TString, TMetricHolder>::insert_ctx insertCtx; |
| 443 | auto it = datasetStats.find(description, insertCtx); |
| 444 | if (it == datasetStats.end()) { |
| 445 | datasetStats.insert_direct(std::make_pair(description, stats), insertCtx); |
| 446 | } else { |
| 447 | it->second.Add(stats); |
| 448 | } |
| 449 | } |
| 450 | } |
| 451 | } |
| 452 | return additiveStats; |
| 453 | } |
| 454 | |
| 455 | void CalcErrorsDistributed( |
| 456 | const NCB::TTrainingDataProviders& trainData, |
no test coverage detected