code: def _sparse_decision_function(self, X):
      X.data = np.asarray(X.data, dtype=np.float64, order="C")
      data = (c_float * X.data.size)()
      data[:] = X.data
      indices = (c_int * X.indices.size)()
      indices[:] = X.indices
      indptr = (c_int * X.indptr.size)()
      indptr[:] = X.indptr
      dec_size = X.shape[0] * self.n_binary_model
      dec_value_ptr = (c_float * dec_size)()
      thundersvm.sparse_decision(
          X.shape[0],
          data,
          indptr,
          indices,
          c_void_p(self.model),
          dec_size,
          dec_value_ptr,
      )
      self.dec_values = np.frombuffer(
          dec_value_ptr, dtype=np.float32
      ).reshape((X.shape[0], self.n_binary_model))
      return self.dec_values
  
imports: from sklearn.base import BaseEstimator
  from sklearn.base import RegressorMixin, ClassifierMixin
  import numpy
  import scipy.sparse
  from sklearn.utils import check_X_y, column_or_1d, check_array
  from sklearn.utils.validation import _num_samples
  from ctypes import *
  from os import path, curdir
  from sys import platform
label_desc: Use image node_id 13 for calling the SvmModel obj's underlying member method code with example usage: obj._sparse_decision_function(X) and returns: self