diff --git a/bertopic/_bertopic.py b/bertopic/_bertopic.py index 90ec3fbe..f67c99fb 100644 --- a/bertopic/_bertopic.py +++ b/bertopic/_bertopic.py @@ -3783,19 +3783,34 @@ def _reduce_dimensionality( if partial_fit: if hasattr(self.umap_model, "partial_fit"): self.umap_model = self.umap_model.partial_fit(embeddings) + umap_embeddings = self.umap_model.transform(embeddings) elif self.topic_representations_ is None: self.umap_model.fit(embeddings) + umap_embeddings = self.umap_model.transform(embeddings) + else: + if hasattr(self.umap_model, "fit_transform"): + umap_embeddings = self.umap_model.fit_transform(embeddings) + else: + self.umap_model.fit(embeddings) + umap_embeddings = self.umap_model.transform(embeddings) # Regular fit else: try: # cuml umap needs y to be an numpy array y = np.array(y) if y is not None else None - self.umap_model.fit(embeddings, y=y) + if hasattr(self.umap_model, "fit_transform"): + umap_embeddings = self.umap_model.fit_transform(embeddings, y=y) + else: + self.umap_model.fit(embeddings) + umap_embeddings = self.umap_model.transform(embeddings, y=y) except TypeError: - self.umap_model.fit(embeddings) + if hasattr(self.umap_model, "fit_transform"): + umap_embeddings = self.umap_model.fit_transform(embeddings) + else: + self.umap_model.fit(embeddings) + umap_embeddings = self.umap_model.transform(embeddings) - umap_embeddings = self.umap_model.transform(embeddings) logger.info("Dimensionality - Completed \u2713") return np.nan_to_num(umap_embeddings)