docs: def predict_and_score(self, eval_instances, random=False, verbosity=0):
          '''
          Return most likely outputs and scores for the particular set of
          outputs given in `eval_instances`, as a tuple. Return value should
          be equivalent to the default implementation of
  
              return (self.predict(eval_instances), self.score(eval_instances))
  
          but subclasses can override this to combine the two calls and reduce
          duplicated work. Either the two separate methods or this one (or all
          of them) should be overridden.
  
          :param eval_instances: The data to use to evaluate the model.
              Instances should have at least the `input` and `output` fields
              populated. `output` is needed to define which score is to
              be returned.
          :param random: If `True`, sample from the probability distribution
              defined by the classifier rather than output the most likely
              prediction.
          :param verbosity: The level of diagnostic output, relative to the
              global --verbosity option. Used to adjust output when models
              are composed of multiple sub-models.
          :type eval_instances: list(instance.Instance)
  
          :returns: tuple(list(output_type), list(float))
          '''
          if hasattr(self, '_using_default_separate') and self._using_default_separate:
              raise NotImplementedError
  
          self._using_default_combined = True
          return (self.predict(eval_instances, random=random, verbosity=verbosity),
                  self.score(eval_instances, verbosity=verbosity))