MCPcopy Create free account
hub / github.com/catboost/catboost / ProcessCdData

Method ProcessCdData

catboost/libs/data/libsvm_loader.cpp:405–441  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

403 }
404
405 void TLibSvmDataLoader::ProcessCdData(TVector<ui32>* catFeatures, TVector<TString>* featureNames) {
406 catFeatures->clear();
407
408 TVector<TColumn> columns = Args.CdProvider->GetColumnsDescription(/*columnCount*/ Nothing());
409 CB_ENSURE(
410 columns.size() >= 1,
411 "CdProvider has no columns. libsvm format contains at least one column"
412 );
413
414 size_t featuresStartColumn = 1;
415
416 if (DataMetaInfo.HasGroupId) {
417 CB_ENSURE(
418 (columns.size() >= 2) && (columns[1].Type == EColumn::GroupId),
419 "libsvm format data contains 'qid' but Column Description doesn't specify it at the second column"
420 );
421 ++featuresStartColumn;
422 }
423
424 for (auto columnIdx : xrange(featuresStartColumn, columns.size())) {
425 const auto& column = columns[columnIdx];
426 switch (column.Type) {
427 case EColumn::Categ:
428 catFeatures->push_back(columnIdx - featuresStartColumn);
429 [[fallthrough]];
430 case EColumn::Num:
431 featureNames->push_back(column.Id);
432 break;
433 default:
434 CB_ENSURE(
435 false,
436 "Column Description. Column #" << columnIdx
437 << ": Bad type for libsvm format: " << column.Type << ". Expected feature type."
438 );
439 }
440 }
441 }
442
443 namespace {
444 TExistsCheckerFactory::TRegistrator<TFSExistsChecker> LibSvmExistsCheckerReg("libsvm");

Callers

nothing calls this directly

Calls 6

NothingFunction · 0.85
xrangeFunction · 0.85
clearMethod · 0.45
GetColumnsDescriptionMethod · 0.45
sizeMethod · 0.45
push_backMethod · 0.45

Tested by

no test coverage detected