| 256 | } |
| 257 | |
| 258 | void TFeatureEvaluationSummary::CreateLogs( |
| 259 | const NCatboostOptions::TOutputFilesOptions& outputFileOptions, |
| 260 | const NCatboostOptions::TFeatureEvalOptions& featureEvalOptions, |
| 261 | const TVector<THolder<IMetric>>& metrics, |
| 262 | ui32 iterationCount, |
| 263 | bool isTest, |
| 264 | ui32 foldRangeBegin, |
| 265 | ui32 absoluteOffset |
| 266 | ) { |
| 267 | if (!outputFileOptions.AllowWriteFiles()) { |
| 268 | return; |
| 269 | } |
| 270 | |
| 271 | const ui32 featureSetCount = GetFeatureSetCount(); |
| 272 | const auto topLevelTrainDir = outputFileOptions.GetTrainDir(); |
| 273 | const auto& metricsHistory = MetricsHistory[isTest]; |
| 274 | const auto& featureStrengths = FeatureStrengths[isTest]; |
| 275 | const auto& regularFeatureStrengths = RegularFeatureStrengths[isTest]; |
| 276 | const auto& models = Models[isTest]; |
| 277 | const auto& metricsMetaJson = GetJsonMeta( |
| 278 | iterationCount, |
| 279 | outputFileOptions.GetName(), |
| 280 | GetConstPointers(metrics), |
| 281 | /*learnSetNames*/{"learn"}, |
| 282 | /*testSetNames*/{"test"}, |
| 283 | /*parametersName=*/ "", |
| 284 | ELaunchMode::CV); |
| 285 | const ui32 absoluteBegin = foldRangeBegin + featureEvalOptions.Offset; |
| 286 | const ui32 absoluteEnd = absoluteBegin + featureEvalOptions.FoldCount; |
| 287 | const bool useSetZeroAlways = !isTest && featureEvalOptions.FeatureEvalMode != NCB::EFeatureEvalMode::OneVsOthers; |
| 288 | for (ui32 setIdx : xrange(featureSetCount)) { |
| 289 | for (ui32 absoluteFoldIdx : xrange(absoluteBegin, absoluteEnd)) { |
| 290 | const auto foldDir = MakeFoldDirName( |
| 291 | featureEvalOptions, |
| 292 | isTest, |
| 293 | setIdx, |
| 294 | absoluteFoldIdx); |
| 295 | auto options = outputFileOptions; |
| 296 | options.SetTrainDir(JoinFsPaths(topLevelTrainDir, foldDir)); |
| 297 | TLogger logger; |
| 298 | InitializeFileLoggers( |
| 299 | options, |
| 300 | metricsMetaJson, |
| 301 | /*namesPrefix*/"", |
| 302 | /*isDetailedProfile*/false, |
| 303 | &logger); |
| 304 | CreateLogFromHistory( |
| 305 | options, |
| 306 | metrics, |
| 307 | metricsHistory[useSetZeroAlways ? 0 : setIdx][absoluteFoldIdx - absoluteOffset], |
| 308 | iterationCount, |
| 309 | &logger |
| 310 | ); |
| 311 | const auto fstrPath = options.CreateFstrIternalFullPath(); |
| 312 | if (!fstrPath.empty()) { |
| 313 | OutputStrengthDescriptions( |
| 314 | featureStrengths[useSetZeroAlways ? 0 : setIdx][absoluteFoldIdx - absoluteOffset], |
| 315 | fstrPath); |
no test coverage detected