def fit(
        self,
        embeddings: np.ndarray,
        clustering_models: List,
    ) -> None:
        """
        Fit the model.

        Parameters
        ----------
        embeddings: np.ndarray
            Embeddings of inputs.
        clustering_models: List
            A list of clustering models. Each clustering model must include the following method:

            - `fit`, to fit the model;
            - `bic`, to compute the BIC;
            - `predict_proba`, to get the predicted probabilities;
            - `predict`, to get the predictions.
            An example of valid clustering model is `sklearn.mixture.GaussianMixture`.
        """
        self._store_embeddings_stats(embeddings)
        embeddings = self._normalize(embeddings)

        self._fit_best_model(embeddings, models=clustering_models)

        Fit the model.

        Parameters
        ----------
        embeddings: np.ndarray
            Embeddings of inputs.
        clustering_models: List
            A list of clustering models. Each clustering model must include the following method:

            - `fit`, to fit the model;
            - `bic`, to compute the BIC;
            - `predict_proba`, to get the predicted probabilities;
            - `predict`, to get the predictions.
            An example of valid clustering model is `sklearn.mixture.GaussianMixture`.
        
fortuna/hallucination/grouping/clustering/base.py