| 305 | } |
| 306 | |
| 307 | static TClassificationTargetPtr CreateClassificationTarget(const TTargetDataProvider& targetDataProvider, ui32 targetIdx) { |
| 308 | const bool isMultiLabel = targetDataProvider.GetTargetDimension() > 1; |
| 309 | const ui32 numClasses = isMultiLabel ? 2 : *targetDataProvider.GetTargetClassCount(); |
| 310 | const auto extractClasses = [&](auto isBinClass) { |
| 311 | TConstArrayRef<float> target = (*targetDataProvider.GetTarget())[targetIdx]; |
| 312 | TVector<ui32> classes; |
| 313 | classes.yresize(target.size()); |
| 314 | |
| 315 | for (ui32 i = 0; i < target.size(); i++) { |
| 316 | classes[i] = static_cast<ui32>(isBinClass ? target[i] > 0.5f : target[i]); |
| 317 | } |
| 318 | return classes; |
| 319 | }; |
| 320 | return MakeIntrusive<TClassificationTarget>( |
| 321 | DispatchGenericLambda(extractClasses, numClasses == 2), |
| 322 | numClasses |
| 323 | ); |
| 324 | } |
| 325 | |
| 326 | static bool HasOnlineEstimators( |
| 327 | TConstArrayRef<NCatboostOptions::TFeatureCalcerDescription> featureCalcerDescription |
no test coverage detected