Evaluator based on a C/C++ library
This is the fastest way to evaluate a model. The library provides a C API and a simple C++ wrapper API. The C API interface can be accessed from any programming language.
Perform the following steps to build the library:
-
Clone the repository:
git clone https://github.com/catboost/catboost.git
-
Open the catboost directory from the local copy of the CatBoost repository.
- Compile the library:
ya make -r catboost/libs/model_interface/
The CatBoost model can be loaded from a file or initialized from the buffer memory.
C API
Perform the following steps to use this API:
- Link the required library (
libcatboostmodel.<so|dll|dylib>
). - Use the methods from the model_calcer_wrapper.h file (refer to the doxygen-style documentation for details).
Sample C code without include statements:
float floatFeatures[100];
char* catFeatures[2] = {"1", "2"};
double result[1];
ModelCalcerHandle modelHandle;
modelHandle = ModelCalcerCreate();
if (!LoadFullModelFromFile(modelHandle, "model.cbm")) {
printf("LoadFullModelFromFile error message: %s\n", GetErrorString());
}
if (!CalcModelPrediction(
modelHandle,
1,
&floatFeatures, 100,
&catFeatures, 2,
&result, 1
)) {
printf("CalcModelPrediction error message: %s\n", GetErrorString());
}
ModelCalcerDelete(modelHandle);
C++ wrapper API
A C++ wrapper for the C API interface is also available.
Refer to the wrapped_calcer.h file and the sample CMake project in the CatBoost repository for more details.
Usage example:
ModelCalcerWrapper calcer("model.cbm");
std::vector<float> floatFeatures(100);
std::vector<std::string> catFeatures = {"one", "two", "three"};
std::cout << calcer.Calc(floatFeatures, catFeatures) << std::endl;
ModelCalcerWrapper
also has a constructor to read data from the memory buffer.