code: def load_model(self, model_path):
      self.model = (c_long * 1)()
      learning_rate = (c_float * 1)()
      n_class = (c_int * 1)()
      n_trees = (c_int * 1)()
      tree_per_iter = (c_int * 1)()
      thundergbm.load_model(
          model_path.encode("utf-8"),
          learning_rate,
          n_class,
          n_trees,
          tree_per_iter,
          byref(self.model),
      )
      if self.model is None:
          raise ValueError("Model is None.")
      self.learning_rate = learning_rate[0]
      self.num_class = n_class[0]
      self.n_trees = n_trees[0]
      self.tree_per_iter = tree_per_iter[0]
      group_label = (c_float * self.num_class)()
      thundergbm.load_config(model_path.encode("utf-8"), group_label)
      self.group_label = [
          group_label[idx] for idx in range(self.num_class)
      ]
  
imports: from sklearn.base import BaseEstimator
  from sklearn.base import RegressorMixin, ClassifierMixin
  from sklearn.metrics import mean_squared_error, accuracy_score
  import numpy
  import scipy.sparse
  import statistics
  from sklearn.utils import check_X_y
  from ctypes import *
  from os import path
  from sys import platform
label_desc: Use image node_id 8 for calling the TGBMModel obj's underlying member method code with example usage: obj.load_model(model_path) without return types