code: def build_distance_matrix(self):
      if self.user_weights:
          self.create_weighted_matrix()
  
      self.distance_matrix = np.zeros(
          (len(self.users), len(self.users))
      )
  
      for n, ts in enumerate(self.train_set_list):
          self.train_set = ts
  
          self.create_matrix()
          # Missing: Treat distance matrix with feedback
          self.distance_matrix += self.compute_distance()
          if self.user_weights:
              self.distance_matrix /= self.weighted_matrices[n]
  
      del self.train_set
      # del self.train_set_list
  
      self.distance_matrix /= self.n_files
  
imports: from scipy.spatial.distance import squareform, pdist
  import numpy
  import os
  from caserec.clustering.kmedoids import kmedoids
  from caserec.recommenders.item_recommendation.base_item_recommendation import BaseItemRecommendation
  from caserec.recommenders.item_recommendation.itemknn import ItemKNN
  from caserec.recommenders.item_recommendation.most_popular import MostPopular
  from caserec.recommenders.item_recommendation.userknn import UserKNN
  from caserec.utils.process_data import ReadFile, WriteFile
  from caserec.recommenders.item_recommendation.bprmf import BprMF
label_desc: Use image node_id 5 for calling the GroupBasedRecommender obj's underlying member method code with example usage: obj.build_distance_matrix() without return types