code: def set_perplexities(self, new_perplexities):
          
          if np.array_equal(self.perplexities, new_perplexities):
              return
  
          new_perplexities = self.check_perplexities(new_perplexities)
          max_perplexity = np.max(new_perplexities)
          k_neighbors = min(self.n_samples - 1, int(3 * max_perplexity))
  
          if k_neighbors > self.__neighbors.shape[1]:
              raise RuntimeError(
                  "The largest perplexity `%.2f` is larger than the initial one "
                  "used. This would need to recompute the nearest neighbors, "
                  "which is not efficient. Please create a new `%s` instance "
                  "with the increased perplexity."
                  % (max_perplexity, self.__class__.__name__)
              )
  
          self.perplexities = new_perplexities
          self.P = self._calculate_P(
              self.__neighbors[:, :k_neighbors],
              self.__distances[:, :k_neighbors],
              self.perplexities,
              symmetrize=True,
              n_jobs=self.n_jobs,
          )
docs: Change the perplexities of the affinity matrix.
  
          Note that we only allow lowering the perplexities or restoring them to
          their original maximum value. This restriction exists because setting a
          higher perplexity value requires recomputing all the nearest neighbors,
          which can take a long time. To avoid potential confusion as to why
          execution time is slow, this is not allowed. If you would like to
          increase the perplexity above the initial value, simply create a new
          instance.
  
          Parameters
          ----------
          new_perplexities: List[float]
              The new list of perplexities.