class_docstr: Propensity Stratified Result Class for a single model
  
  Parameters
  ----------
  model_name: string, required
      The name of the recommender model.
code: def organize(self):
      headers = list(self[0].metric_avg_results.keys())
  
      data, index, sizes = [], [], []
      for f, r in enumerate(self):
          data.append([r.metric_avg_results[m] for m in headers])
          if f == 0:
              index.append("Closed")
          elif f == 1:
              index.append("IPS")
          else:
              index.append("Q%d" % (f - 1))
          sizes.append(r.metric_avg_results["SIZE"])
  
      # add mean and std rows (total accumulative)
      data = np.asarray(data)
      mean, std = data.mean(axis=0), data.std(axis=0)
  
      # add unbiased stratified evaluation
      weights = np.asarray(sizes) / sizes[0]
      unbiased = np.average(
          data[2:], axis=0, weights=weights[2:]
      ) * sum(weights[2:])
  
      # weighted average does not meaningful for size
      for idx, header in enumerate(headers):
          if header == "SIZE":
              unbiased[idx] = sizes[0]
  
      # update the table
      data = np.vstack([data, unbiased])
      data = [[NUM_FMT.format(v) for v in row] for row in data]
      index.extend(["Unbiased"])
  
      # add unbiased to the list
      self.append(
          Result(
              model_name=self[0].model_name,
              metric_avg_results=OrderedDict(zip(headers, unbiased)),
              metric_user_results=None,
          )
      )
  
      self.table = _table_format(
          data, headers, index, h_bars=[1, 2, 3, len(data)]
      )
  
imports: import numpy
  from collections import OrderedDict
label_desc: Use image node_id 3 for calling the PSTResult obj's underlying member method code with example usage: obj.organize() without return types