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:
  1. Clone the repository:

    git clone https://github.com/catboost/catboost.git
  2. Open the catboost directory from the local copy of the CatBoost repository.

  3. 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:
  1. Link the required library (libcatboostmodel.<so|dll|dylib>).
  2. 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.