| 2572 | } |
| 2573 | |
| 2574 | TQuantizedObjectsDataProviderPtr GetQuantizedObjectsData( |
| 2575 | const NCatboostOptions::TCatBoostOptions& params, |
| 2576 | TDataProviderPtr srcData, |
| 2577 | const TMaybe<TString>& bordersFile, |
| 2578 | TQuantizedFeaturesInfoPtr quantizedFeaturesInfo, |
| 2579 | NPar::ILocalExecutor* localExecutor, |
| 2580 | TRestorableFastRng64* rand, |
| 2581 | const TInitialBorders& initialBorders) { |
| 2582 | |
| 2583 | TQuantizationOptions quantizationOptions; |
| 2584 | PrepareQuantizationParameters( |
| 2585 | params, |
| 2586 | srcData->MetaInfo, |
| 2587 | bordersFile, |
| 2588 | &quantizationOptions, |
| 2589 | &quantizedFeaturesInfo); |
| 2590 | |
| 2591 | TRawObjectsDataProviderPtr rawObjectsDataProvider( |
| 2592 | dynamic_cast<TRawObjectsDataProvider*>(srcData->ObjectsData.Get())); |
| 2593 | CB_ENSURE(rawObjectsDataProvider, "Unexpected type of data provider"); |
| 2594 | |
| 2595 | if (srcData->RefCount() <= 1) { |
| 2596 | // can clean up |
| 2597 | auto dummy = srcData->ObjectsData.Release(); |
| 2598 | Y_UNUSED(dummy); |
| 2599 | } |
| 2600 | |
| 2601 | return Quantize( |
| 2602 | quantizationOptions, |
| 2603 | std::move(rawObjectsDataProvider), |
| 2604 | quantizedFeaturesInfo, |
| 2605 | rand, |
| 2606 | localExecutor, |
| 2607 | initialBorders |
| 2608 | ); |
| 2609 | } |
| 2610 | |
| 2611 | |
| 2612 | void PrepareQuantizationParameters( |