code: def estimate(self, u, i):
      sum_means = self.trainset.global_mean
      div = 1
  
      if self.trainset.knows_user(u):
          sum_means += np.mean([r for (_, r) in self.trainset.ur[u]])
          div += 1
      if self.trainset.knows_item(i):
          sum_means += np.mean([r for (_, r) in self.trainset.ir[i]])
          div += 1
  
      return sum_means / div
  
imports: import numpy
  from surprise import AlgoBase, Dataset
  from surprise.model_selection import cross_validate
label_desc: Use image node_id 2 for calling the MyOwnAlgorithm obj's underlying member method code with example usage: obj.estimate(u, i) and returns: unknown