1#ifndef LIGHTGBM_C_API_H_
2#define LIGHTGBM_C_API_H_
15#include <LightGBM/export.h>
17typedef void* DatasetHandle;
18typedef void* BoosterHandle;
20#define C_API_DTYPE_FLOAT32 (0)
21#define C_API_DTYPE_FLOAT64 (1)
22#define C_API_DTYPE_INT32 (2)
23#define C_API_DTYPE_INT64 (3)
25#define C_API_PREDICT_NORMAL (0)
26#define C_API_PREDICT_RAW_SCORE (1)
27#define C_API_PREDICT_LEAF_INDEX (2)
28#define C_API_PREDICT_CONTRIB (3)
36LIGHTGBM_C_EXPORT
const char* LGBM_GetLastError();
48LIGHTGBM_C_EXPORT
int LGBM_DatasetCreateFromFile(
const char* filename,
49 const char* parameters,
50 const DatasetHandle reference,
65LIGHTGBM_C_EXPORT
int LGBM_DatasetCreateFromSampledColumn(
double** sample_data,
68 const int* num_per_col,
69 int32_t num_sample_row,
70 int32_t num_total_row,
71 const char* parameters,
81LIGHTGBM_C_EXPORT
int LGBM_DatasetCreateByReference(
const DatasetHandle reference,
82 int64_t num_total_row,
95LIGHTGBM_C_EXPORT
int LGBM_DatasetPushRows(DatasetHandle dataset,
116LIGHTGBM_C_EXPORT
int LGBM_DatasetPushRowsByCSR(DatasetHandle dataset,
119 const int32_t* indices,
142LIGHTGBM_C_EXPORT
int LGBM_DatasetCreateFromCSR(
const void* indptr,
144 const int32_t* indices,
150 const char* parameters,
151 const DatasetHandle reference,
169LIGHTGBM_C_EXPORT
int LGBM_DatasetCreateFromCSC(
const void* col_ptr,
171 const int32_t* indices,
177 const char* parameters,
178 const DatasetHandle reference,
193LIGHTGBM_C_EXPORT
int LGBM_DatasetCreateFromMat(
const void* data,
198 const char* parameters,
199 const DatasetHandle reference,
213LIGHTGBM_C_EXPORT
int LGBM_DatasetCreateFromMats(int32_t nmat,
219 const char* parameters,
220 const DatasetHandle reference,
232LIGHTGBM_C_EXPORT
int LGBM_DatasetGetSubset(
233 const DatasetHandle handle,
234 const int32_t* used_row_indices,
235 int32_t num_used_row_indices,
236 const char* parameters,
246LIGHTGBM_C_EXPORT
int LGBM_DatasetSetFeatureNames(
247 DatasetHandle handle,
248 const char** feature_names,
249 int num_feature_names);
259LIGHTGBM_C_EXPORT
int LGBM_DatasetGetFeatureNames(
260 DatasetHandle handle,
261 char** feature_names,
262 int* num_feature_names);
269LIGHTGBM_C_EXPORT
int LGBM_DatasetFree(DatasetHandle handle);
277LIGHTGBM_C_EXPORT
int LGBM_DatasetSaveBinary(DatasetHandle handle,
278 const char* filename);
291LIGHTGBM_C_EXPORT
int LGBM_DatasetSetField(DatasetHandle handle,
292 const char* field_name,
293 const void* field_data,
306LIGHTGBM_C_EXPORT
int LGBM_DatasetGetField(DatasetHandle handle,
307 const char* field_name,
309 const void** out_ptr,
318LIGHTGBM_C_EXPORT
int LGBM_DatasetUpdateParam(DatasetHandle handle,
const char* parameters);
326LIGHTGBM_C_EXPORT
int LGBM_DatasetGetNumData(DatasetHandle handle,
335LIGHTGBM_C_EXPORT
int LGBM_DatasetGetNumFeature(DatasetHandle handle,
347LIGHTGBM_C_EXPORT
int LGBM_BoosterCreate(
const DatasetHandle train_data,
348 const char* parameters,
358LIGHTGBM_C_EXPORT
int LGBM_BoosterCreateFromModelfile(
359 const char* filename,
360 int* out_num_iterations,
370LIGHTGBM_C_EXPORT
int LGBM_BoosterLoadModelFromString(
371 const char* model_str,
372 int* out_num_iterations,
380LIGHTGBM_C_EXPORT
int LGBM_BoosterFree(BoosterHandle handle);
385LIGHTGBM_C_EXPORT
int LGBM_BoosterShuffleModels(BoosterHandle handle,
int start_iter,
int end_iter);
393LIGHTGBM_C_EXPORT
int LGBM_BoosterMerge(BoosterHandle handle,
394 BoosterHandle other_handle);
402LIGHTGBM_C_EXPORT
int LGBM_BoosterAddValidData(BoosterHandle handle,
403 const DatasetHandle valid_data);
411LIGHTGBM_C_EXPORT
int LGBM_BoosterResetTrainingData(BoosterHandle handle,
412 const DatasetHandle train_data);
420LIGHTGBM_C_EXPORT
int LGBM_BoosterResetParameter(BoosterHandle handle,
const char* parameters);
428LIGHTGBM_C_EXPORT
int LGBM_BoosterGetNumClasses(BoosterHandle handle,
int* out_len);
436LIGHTGBM_C_EXPORT
int LGBM_BoosterUpdateOneIter(BoosterHandle handle,
int* is_finished);
446LIGHTGBM_C_EXPORT
int LGBM_BoosterRefit(BoosterHandle handle,
const int32_t* leaf_preds, int32_t nrow, int32_t ncol);
457LIGHTGBM_C_EXPORT
int LGBM_BoosterUpdateOneIterCustom(BoosterHandle handle,
467LIGHTGBM_C_EXPORT
int LGBM_BoosterRollbackOneIter(BoosterHandle handle);
474LIGHTGBM_C_EXPORT
int LGBM_BoosterGetCurrentIteration(BoosterHandle handle,
int* out_iteration);
481LIGHTGBM_C_EXPORT
int LGBM_BoosterNumModelPerIteration(BoosterHandle handle,
int* out_tree_per_iteration);
488LIGHTGBM_C_EXPORT
int LGBM_BoosterNumberOfTotalModel(BoosterHandle handle,
int* out_models);
495LIGHTGBM_C_EXPORT
int LGBM_BoosterGetEvalCounts(BoosterHandle handle,
int* out_len);
503LIGHTGBM_C_EXPORT
int LGBM_BoosterGetEvalNames(BoosterHandle handle,
int* out_len,
char** out_strs);
511LIGHTGBM_C_EXPORT
int LGBM_BoosterGetFeatureNames(BoosterHandle handle,
int* out_len,
char** out_strs);
518LIGHTGBM_C_EXPORT
int LGBM_BoosterGetNumFeature(BoosterHandle handle,
int* out_len);
530LIGHTGBM_C_EXPORT
int LGBM_BoosterGetEval(BoosterHandle handle,
533 double* out_results);
544LIGHTGBM_C_EXPORT
int LGBM_BoosterGetNumPredict(BoosterHandle handle,
558LIGHTGBM_C_EXPORT
int LGBM_BoosterGetPredict(BoosterHandle handle,
577LIGHTGBM_C_EXPORT
int LGBM_BoosterPredictForFile(BoosterHandle handle,
578 const char* data_filename,
582 const char* parameter,
583 const char* result_filename);
597LIGHTGBM_C_EXPORT
int LGBM_BoosterCalcNumPredict(BoosterHandle handle,
627LIGHTGBM_C_EXPORT
int LGBM_BoosterPredictForCSR(BoosterHandle handle,
630 const int32_t* indices,
638 const char* parameter,
666LIGHTGBM_C_EXPORT
int LGBM_BoosterPredictForCSC(BoosterHandle handle,
669 const int32_t* indices,
677 const char* parameter,
702LIGHTGBM_C_EXPORT
int LGBM_BoosterPredictForMat(BoosterHandle handle,
710 const char* parameter,
721LIGHTGBM_C_EXPORT
int LGBM_BoosterSaveModel(BoosterHandle handle,
724 const char* filename);
735LIGHTGBM_C_EXPORT
int LGBM_BoosterSaveModelToString(BoosterHandle handle,
751LIGHTGBM_C_EXPORT
int LGBM_BoosterDumpModel(BoosterHandle handle,
766LIGHTGBM_C_EXPORT
int LGBM_BoosterGetLeafValue(BoosterHandle handle,
779LIGHTGBM_C_EXPORT
int LGBM_BoosterSetLeafValue(BoosterHandle handle,
792LIGHTGBM_C_EXPORT
int LGBM_BoosterFeatureImportance(BoosterHandle handle,
795 double* out_results);
805LIGHTGBM_C_EXPORT
int LGBM_NetworkInit(
const char* machines,
806 int local_listen_port,
814LIGHTGBM_C_EXPORT
int LGBM_NetworkFree();
816LIGHTGBM_C_EXPORT
int LGBM_NetworkInitWithFunctions(
int num_machines,
int rank,
817 void* reduce_scatter_ext_fun,
818 void* allgather_ext_fun);
822#define THREAD_LOCAL __declspec(thread)
824#define THREAD_LOCAL thread_local
827static char* LastErrorMsg() {
static THREAD_LOCAL
char err_msg[512] =
"Everything is fine";
return err_msg; }
829#pragma warning(disable : 4996)
830inline void LGBM_SetLastError(
const char* msg) {
831 std::strcpy(LastErrorMsg(), msg);