dmitryikh / leaves

pure Go implementation of prediction part for GBRT (Gradient Boosting Regression Trees) models from popular frameworks
MIT License
419 stars 72 forks source link

read LightGBM model from JSON #26

Closed dmitryikh closed 5 years ago

dmitryikh commented 5 years ago
d = clf.dump_model()
import json
with open('data.txt', 'w') as fout:
    json.dump(d, fout, indent=1)

data.txt:

{
 "name": "tree",
 "version": "v2",
 "num_class": 1,
 "num_tree_per_iteration": 1,
 "label_index": 0,
 "max_feature_idx": 29,
 "feature_names": [
  "Column_0",
  "Column_1",
...
 ],
 "tree_info": [
  {
   "tree_index": 0,
   "num_leaves": 7,
   "num_cat": 0,
   "shrinkage": 1,
   "tree_structure": {
    "split_index": 0,
    "split_feature": 27,
    "split_gain": 312.09600830078125,
    "threshold": 0.14545000000000005,
    "decision_type": "<=",
    "default_left": true,
    "missing_type": "None",
    "internal_value": 0,
    "internal_count": 455,
    "left_child": {
     "split_index": 1,
     "split_feature": 22,
     "split_gain": 44.737098693847656,
     "threshold": 107.45000000000002,
     "decision_type": "<=",
     "default_left": true,
     "missing_type": "None",
     "internal_value": 1.17818,
     "internal_count": 310,
     "left_child": {
      "split_index": 3,
      "split_feature": 1,
      "split_gain": 1.5678000450134277,
      "threshold": 21.295000000000005,
      "decision_type": "<=",
      "default_left": true,
      "missing_type": "None",
      "internal_value": 1.47353,
      "internal_count": 272,
      "left_child": {
       "split_index": 5,
       "split_feature": 11,
       "split_gain": 0.1967500001192093,
       "threshold": 1.917,
       "decision_type": "<=",
       "default_left": true,
       "missing_type": "None",
       "internal_value": 1.54939,
       "internal_count": 221,
       "left_child": {
        "leaf_index": 0,
        "leaf_value": 0.720832002249105,
        "leaf_count": 201
       },
       "right_child": {
        "leaf_index": 6,
        "leaf_value": 0.6991992955194886,
        "leaf_count": 20
       }
      },
...

Seems enough to restore all model information in the memory.