code: def generate_prediction_data(self):
          
  
          if self.metric in FAST_METRICS:
              min_samples = self.min_samples or self.min_cluster_size
              if self.metric in KDTree.valid_metrics:
                  tree_type = 'kdtree'
              elif self.metric in BallTree.valid_metrics:
                  tree_type = 'balltree'
              else:
                  warn('Metric {} not supported for prediction data!'.format(self.metric))
                  return
  
              self._prediction_data = PredictionData(
                  self._raw_data, self.condensed_tree_, min_samples,
                  tree_type=tree_type, metric=self.metric,
                  **self._metric_kwargs
              )
          else:
              warn('Cannot generate prediction data for non-vector'
                   'space inputs -- access to the source data rather'
                   'than mere distances is required!')
docs: Create data that caches intermediate results used for predicting
          the label of new/unseen points. This data is only useful if
          you are intending to use functions from ``hdbscan.prediction``.