Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c+中加载一个经过python训练的xgboost+;api,则预测结果为空_Python_C++_Xgboost - Fatal编程技术网

在c+中加载一个经过python训练的xgboost+;api,则预测结果为空

在c+中加载一个经过python训练的xgboost+;api,则预测结果为空,python,c++,xgboost,Python,C++,Xgboost,我正在python xgboost上训练一个13类分类,我的功能dim是3207,模型是在python xgboost训练后保存的,我检查了一些案例,结果是正常的。 但是当我在C++ XGBOST中加载模型并做预测时,结果是什么都没有。这是我的C++代码演示: BoosterHandle booster_ = nullptr; std::cout << "befor:" << booster_ << std::endl; if

我正在python xgboost上训练一个13类分类,我的功能dim是3207,模型是在python xgboost训练后保存的,我检查了一些案例,结果是正常的。 但是当我在C++ XGBOST中加载模型并做预测时,结果是什么都没有。这是我的C++代码演示:

  BoosterHandle booster_ = nullptr;
  std::cout << "befor:" << booster_ << std::endl;
  if (XGBoosterCreate(NULL, 0, &booster_) == 0 &&
       XGBoosterLoadModel(booster_, model_path.c_str()) == 0) {
    LOG(INFO) << "load xgboost model success !";
  } else {
    LOG(ERROR) << "load xgboost model error !";
    booster_ = NULL;
  }

  // build Dmatrix data, two fake example, the expect predict label is 1, prob = 0.927.
  float d_values[2][3207] = {0};
  d_values[0][0] = 1.0;
  d_values[0][8] = 1.0;
  d_values[0][6] = 1.0;
  d_values[0][14] = 1.0;
  d_values[1][0] = 1.0;
  d_values[1][8] = 1.0;
  d_values[1][6] = 1.0;
  d_values[1][14] = 1.0;
  std::cout <<"predict:" << booster_ << std::endl;
  int r = XGDMatrixCreateFromMat(&d_values[0][0], 2, 3207, 0.0, &data);
  if (r != 0) {
    LOG(ERROR) << "build DMatrix failed!!";
  }
  std::cout <<"r=" << r << std::endl;
  const float* out;
  uint64_t len;
  auto ret = XGBoosterPredict(booster_, data, 0, 0, &len, &out);
  if (ret < 0) {
    LOG(ERROR) << "xgboost inference error !";
    return -1;
  }
  std::cout << "len=" << len << std::endl;
  XGDMatrixFree(data);
  return 0;

此演示中的常量步骤,返回状态代码等于0,但最终LeN=0,有什么问题?

< P>我找到原因,我的Python XGBOOST是训练AcANDA,XGBOOST不同于C++ XGBOST源代码版本。
  r=0
  len=0