MNT remove deprecated kind='legacy' in partial_dependence
diff --git a/doc/modules/partial_dependence.rst b/doc/modules/partial_dependence.rst
index ba99be02c8e4a..9a064f4a73650 100644
--- a/doc/modules/partial_dependence.rst
+++ b/doc/modules/partial_dependence.rst
@@ -94,10 +94,10 @@ the plots, you can use the
 
     >>> from sklearn.inspection import partial_dependence
 
-    >>> pdp, axes = partial_dependence(clf, X, [0])
-    >>> pdp
+    >>> results = partial_dependence(clf, X, [0])
+    >>> results["average"]
     array([[ 2.466...,  2.466..., ...
-    >>> axes
+    >>> results["values"]
     [array([-1.624..., -1.592..., ...
 
 The values at which the partial dependence should be evaluated are directly
diff --git a/sklearn/inspection/_partial_dependence.py b/sklearn/inspection/_partial_dependence.py
index cca120d12e0bb..14a9e66456cc1 100644
--- a/sklearn/inspection/_partial_dependence.py
+++ b/sklearn/inspection/_partial_dependence.py
@@ -6,7 +6,6 @@
 # License: BSD 3 clause
 
 from collections.abc import Iterable
-import warnings
 
 import numpy as np
 from scipy import sparse
@@ -214,7 +213,7 @@ def partial_dependence(
     percentiles=(0.05, 0.95),
     grid_resolution=100,
     method="auto",
-    kind="legacy",
+    kind="average",
 ):
     """Partial dependence of ``features``.
 
@@ -305,7 +304,7 @@ def partial_dependence(
         Please see :ref:`this note <pdp_method_differences>` for
         differences between the `'brute'` and `'recursion'` method.
 
-    kind : {'legacy', 'average', 'individual', 'both'}, default='legacy'
+    kind : {'average', 'individual', 'both'}, default='average'
         Whether to return the partial dependence averaged across all the
         samples in the dataset or one line per sample or both.
         See Returns below.
@@ -315,58 +314,37 @@ def partial_dependence(
         slower `method='brute'` option.
 
         .. versionadded:: 0.24
-        .. deprecated:: 0.24
-            `kind='legacy'` is deprecated and will be removed in version 1.1.
-            `kind='average'` will be the new default. It is intended to migrate
-            from the ndarray output to :class:`~sklearn.utils.Bunch` output.
-
 
     Returns
     -------
-    predictions : ndarray or :class:`~sklearn.utils.Bunch`
+    predictions : :class:`~sklearn.utils.Bunch`
+        Dictionary-like object, with the following attributes.
 
-        - if `kind='legacy'`, return value is ndarray of shape (n_outputs, \
+        individual : ndarray of shape (n_outputs, n_instances, \
                 len(values[0]), len(values[1]), ...)
+            The predictions for all the points in the grid for all
+            samples in X. This is also known as Individual
+            Conditional Expectation (ICE)
+
+        average : ndarray of shape (n_outputs, len(values[0]), \
+                len(values[1]), ...)
             The predictions for all the points in the grid, averaged
-            over all samples in X (or over the training data if ``method``
-            is 'recursion').
-
-        - if `kind='individual'`, `'average'` or `'both'`, return value is \
-                :class:`~sklearn.utils.Bunch`
-            Dictionary-like object, with the following attributes.
-
-            individual : ndarray of shape (n_outputs, n_instances, \
-                    len(values[0]), len(values[1]), ...)
-                The predictions for all the points in the grid for all
-                samples in X. This is also known as Individual
-                Conditional Expectation (ICE)
-
-            average : ndarray of shape (n_outputs, len(values[0]), \
-                    len(values[1]), ...)
-                The predictions for all the points in the grid, averaged
-                over all samples in X (or over the training data if
-                ``method`` is 'recursion').
-                Only available when kind='both'.
-
-            values : seq of 1d ndarrays
-                The values with which the grid has been created. The generated
-                grid is a cartesian product of the arrays in ``values``.
-                ``len(values) == len(features)``. The size of each array
-                ``values[j]`` is either ``grid_resolution``, or the number of
-                unique values in ``X[:, j]``, whichever is smaller.
+            over all samples in X (or over the training data if
+            ``method`` is 'recursion').
+            Only available when ``kind='both'``.
+
+        values : seq of 1d ndarrays
+            The values with which the grid has been created. The generated
+            grid is a cartesian product of the arrays in ``values``.
+            ``len(values) == len(features)``. The size of each array
+            ``values[j]`` is either ``grid_resolution``, or the number of
+            unique values in ``X[:, j]``, whichever is smaller.
 
         ``n_outputs`` corresponds to the number of classes in a multi-class
         setting, or to the number of tasks for multi-output regression.
         For classical regression and binary classification ``n_outputs==1``.
         ``n_values_feature_j`` corresponds to the size ``values[j]``.
 
-    values : seq of 1d ndarrays
-        The values with which the grid has been created. The generated grid
-        is a cartesian product of the arrays in ``values``. ``len(values) ==
-        len(features)``. The size of each array ``values[j]`` is either
-        ``grid_resolution``, or the number of unique values in ``X[:, j]``,
-        whichever is smaller. Only available when `kind="legacy"`.
-
     See Also
     --------
     PartialDependenceDisplay.from_estimator : Plot Partial Dependence.
@@ -416,7 +394,7 @@ def partial_dependence(
             )
         )
 
-    if kind != "average" and kind != "legacy":
+    if kind != "average":
         if method == "recursion":
             raise ValueError(
                 "The 'recursion' method only applies when 'kind' is set to 'average'"
@@ -504,17 +482,7 @@ def partial_dependence(
         -1, *[val.shape[0] for val in values]
     )
 
-    if kind == "legacy":
-        warnings.warn(
-            "A Bunch will be returned in place of 'predictions' from version"
-            " 1.1 (renaming of 0.26) with partial dependence results "
-            "accessible via the 'average' key. In the meantime, pass "
-            "kind='average' to get the future behaviour.",
-            FutureWarning,
-        )
-        # TODO 1.1: Remove kind == 'legacy' section
-        return averaged_predictions, values
-    elif kind == "average":
+    if kind == "average":
         return Bunch(average=averaged_predictions, values=values)
     elif kind == "individual":
         return Bunch(individual=predictions, values=values)
diff --git a/sklearn/inspection/tests/test_partial_dependence.py b/sklearn/inspection/tests/test_partial_dependence.py
index 60876e7d3498b..4e62f140c6953 100644
--- a/sklearn/inspection/tests/test_partial_dependence.py
+++ b/sklearn/inspection/tests/test_partial_dependence.py
@@ -64,7 +64,6 @@
 iris = load_iris()
 
 
-@pytest.mark.filterwarnings("ignore:A Bunch will be returned")
 @pytest.mark.parametrize(
     "Estimator, method, data",
     [
@@ -84,7 +83,7 @@
 )
 @pytest.mark.parametrize("grid_resolution", (5, 10))
 @pytest.mark.parametrize("features", ([1], [1, 2]))
-@pytest.mark.parametrize("kind", ("legacy", "average", "individual", "both"))
+@pytest.mark.parametrize("kind", ("average", "individual", "both"))
 def test_output_shape(Estimator, method, data, grid_resolution, features, kind):
     # Check that partial_dependence has consistent output shape for different
     # kinds of estimators:
@@ -109,8 +108,7 @@ def test_output_shape(Estimator, method, data, grid_resolution, features, kind):
         kind=kind,
         grid_resolution=grid_resolution,
     )
-    # FIXME: Remove 'legacy' support in 1.1
-    pdp, axes = result if kind == "legacy" else (result, result["values"])
+    pdp, axes = result, result["values"]
 
     expected_pdp_shape = (n_targets, *[grid_resolution for _ in range(len(features))])
     expected_ice_shape = (
@@ -118,9 +116,7 @@ def test_output_shape(Estimator, method, data, grid_resolution, features, kind):
         n_instances,
         *[grid_resolution for _ in range(len(features))],
     )
-    if kind == "legacy":
-        assert pdp.shape == expected_pdp_shape
-    elif kind == "average":
+    if kind == "average":
         assert pdp.average.shape == expected_pdp_shape
     elif kind == "individual":
         assert pdp.individual.shape == expected_ice_shape
@@ -783,16 +779,3 @@ def test_kind_average_and_average_of_individual(Estimator, data):
     pdp_ind = partial_dependence(est, X=X, features=[1, 2], kind="individual")
     avg_ind = np.mean(pdp_ind["individual"], axis=1)
     assert_allclose(avg_ind, pdp_avg["average"])
-
-
-def test_warning_for_kind_legacy():
-    est = LogisticRegression()
-    (X, y), n_targets = binary_classification_data
-    est.fit(X, y)
-
-    err_msg = "A Bunch will be returned in place of 'predictions' from version 1.1"
-    with pytest.warns(FutureWarning, match=err_msg):
-        partial_dependence(est, X=X, features=[1, 2])
-
-    with pytest.warns(FutureWarning, match=err_msg):
-        partial_dependence(est, X=X, features=[1, 2], kind="legacy")

Remove `kind='legacy'` in `partial_dependence` after deprecation cycle.