Создать матрицу xgboost в переполнении стека

Я хотел бы использовать xgboost для классификации изображений в проекте C ++. У меня есть матрица функций (hist) cv :: Mat_ и вектор меток, std :: vector, как мне создать xgboost :: DMatrix в c ++? Я думаю, что я должен использовать DMatrix :: Create (), но я не понимаю, какие параметры я должен передать.

std::vector<int> labels; //read this labels from csv
auto features = extract_features(img_ident, dir);
cv::Mat_<float> training_set(features);

xgboost::DMatrix xgb_data = xgboost::DMatrix::Create(????);

4

Решение

Используйте c_api:

DMatrixHandle xgbData;
int success = XGDMatrixCreateFromMat(&features[0], m_nRowCount, m_nColCount, 0, &xgbData);
if(success != 0)
THROW_ERROR("Error creating DMatrix\n");

success = XGDMatrixSetFloatInfo(xgbData, "label", &matrixYLabels[0], m_nRowCount);
if(success != 0)
THROW_ERROR("Error setting Y values in DMatrix\n");

success = XGDMatrixSaveBinary(xgbData, filename, false);
if(success != 0)
THROW_ERROR("Error saving DMatrix\n");
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]