C++

Purpose

Apply the model in C++ format. The method is available within the output C++ file with the model description.

Note

  • The ApplyCatboostModel method is inferior in performance compared to the native CatBoost application methods, especially on large models and datasets.

Method call format

For datasets that contain only numerical features:

double ApplyCatboostModel(const std::vector<float>& features);

For datasets that contain both numerical and categorical features:

double ApplyCatboostModel(const std::vector<float>& floatFeatures, const std::vector<std::string>& catFeatures);

Parameters

features (floatFeatures)

The list of numerical features.

Possible types: float

catFeatures

The list of categorical features.

Possible types: string

Note

Numerical and categorical features must be passed separately in the same order they appear in the train dataset.

For example, let's assume that the train dataset contains the following features:

  • Numerical features: f1, f3
  • Categorical features: f2, f4

In this case, the following code must be used to apply the model:

ApplyCatboostModel({f1, f3}, {f2, f4})

Type of return value

Prediction of the model for the object with given features.

The result is identical to the code below but does not require the library linking (libcatboostmodel.<so|dll|dylib> for Linux/macOS or libcatboostmodel.dll for Windows):

  • For datasets that contain only numerical features:

    #include <catboost/libs/model_interface/wrapped_calcer.h>
    double ApplyCatboostModel(const std::vector<float>& features) {
        ModelCalcerWrapper calcer("model.cbm");
        return calcer.Calc(features, {});
    }
    
  • For datasets that contain both numerical and categorical features:

    #include <catboost/libs/model_interface/wrapped_calcer.h>
    double ApplyCatboostModel(const std::vector<float>& floatFeatures, const std::vector<std::string>& catFeatures) {
        ModelCalcerWrapper calcer("model.cbm");
        return calcer.Calc(floatFeatures, catFeatures);
    }
    

Compilers

  • For datasets that contain only numerical features:

    C++11 with support of non-static data member initializers and extended initializer lists.

  • For datasets that contain both numerical and categorical features:

    C++14 compiler with aggregate member initialization support. Tested with the following compilers:

    • Clang++ 3.8
    • g++ 5.4.1 20160904
Previous
Next