diff --git a/sklearn/decomposition/_pca.py b/sklearn/decomposition/_pca.py index 1b0d21d5d38be..3812cb0c4444f 100644 --- a/sklearn/decomposition/_pca.py +++ b/sklearn/decomposition/_pca.py @@ -848,7 +848,10 @@ def score(self, X, y=None): def __sklearn_tags__(self): tags = super().__sklearn_tags__() tags.transformer_tags.preserves_dtype = ["float64", "float32"] - tags.array_api_support = True + tags.array_api_support = ( + self.svd_solver in ["full", "randomized"] + and self.power_iteration_normalizer == "QR" + ) tags.input_tags.sparse = self.svd_solver in ( "auto", "arpack", diff --git a/sklearn/mixture/_gaussian_mixture.py b/sklearn/mixture/_gaussian_mixture.py index 909b4d2039949..bfe25facec2bd 100644 --- a/sklearn/mixture/_gaussian_mixture.py +++ b/sklearn/mixture/_gaussian_mixture.py @@ -992,3 +992,10 @@ def aic(self, X): The lower the better. """ return -2 * self.score(X) * X.shape[0] + 2 * self._n_parameters() + + def __sklearn_tags__(self): + tags = super().__sklearn_tags__() + tags.array_api_support = ( + self.init_params in ["random", "random_from_data"] and not self.warm_start + ) + return tags