code: def predict_dataset(self, df, device=None, verbose=None):
          
          verbose, device = SETTINGS.get_default(('verbose', verbose),
                                                 ('device', device))
          dataset = []
          for i, (idx, row) in enumerate(df.iterrows()):
              a = row['A'].reshape((len(row['A']), 1))
              b = row['B'].reshape((len(row['B']), 1))
              m = np.hstack((a, b))
              m = m.astype('float32')
              m = th.from_numpy(m).t().unsqueeze(0)
              dataset.append(m)
  
          dataset = [m.to(device) for m in dataset]
          return pd.DataFrame((th.cat([self.model(m) for m, t in zip(dataset, trange(len(dataset)),
                                                        disable=not verbose)]\
                         , 0).data.cpu().numpy() -.5) * 2)
docs: Args:
              x_tr (pd.DataFrame): CEPC format dataframe containing the pairs
              y_tr (pd.DataFrame or np.ndarray): labels associated to the pairs
              epochs (int): number of train epochs
              learning rate (float): learning rate of Adam
              verbose (bool): verbosity (defaults to ``cdt.SETTINGS.verbose``)
              device (str): cuda or cpu device (defaults to ``cdt.SETTINGS.default_device``)
  
          Returns:
              pandas.DataFrame: dataframe containing the predicted causation coefficients