code: def make_query(self, return_score=False):
          
          dataset = self.dataset
          self.model.train(dataset)
  
          unlabeled_entry_ids, X_pool = zip(*dataset.get_unlabeled_entries())
  
          if isinstance(self.model, ProbabilisticModel):
              dvalue = self.model.predict_proba(X_pool)
          elif isinstance(self.model, ContinuousModel):
              dvalue = self.model.predict_real(X_pool)
  
          if self.method == 'lc':  # least confident
              score = -np.max(dvalue, axis=1)
  
          elif self.method == 'sm':  # smallest margin
              if np.shape(dvalue)[1] > 2:
                  # Find 2 largest decision values
                  dvalue = -(np.partition(-dvalue, 2, axis=1)[:, :2])
              score = -np.abs(dvalue[:, 0] - dvalue[:, 1])
  
          elif self.method == 'entropy':
              score = np.sum(-dvalue * np.log(dvalue), axis=1)
  
          ask_id = np.argmax(score)
  
          if return_score:
              return unlabeled_entry_ids[ask_id], \
                     list(zip(unlabeled_entry_ids, score))
          else:
              return unlabeled_entry_ids[ask_id]
docs: Return the index of the sample to be queried and labeled and
          selection score of each sample. Read-only.
  
          No modification to the internal states.
  
          Returns
          -------
          ask_id : int
              The index of the next unlabeled sample to be queried and labeled.
  
          score : list of (index, score) tuple
              Selection score of unlabled entries, the larger the better.