Fit the clustering model, computing the centers then embeds the centers
        into 2D space using the embedding method specified.

def fit(self, X, y=None):
        """
        Fit the clustering model, computing the centers then embeds the centers
        into 2D space using the embedding method specified.
        """
        with Timer() as self.fit_time_:
            # Fit the underlying estimator
            self.estimator.fit(X, y)

            # Get the centers
            # TODO: is this how sklearn stores all centers in the model?
            C = self.cluster_centers_

            # Embed the centers in 2D space and get the cluster scores
            self.embedded_centers_ = self.transformer.fit_transform(C)
            self.scores_ = self._score_clusters(X, y)

        # Draw the clusters and fit returns self
        self.draw()
        return self