length scale
parameter :math:`l>0`, which can either be a scalar (isotropic variant
of the kernel) or a vector with the same number of dimensions as the inputs
X (anisotropic variant of the kernel). The kernel is given by:

.. math::
    k(x_i, x_j) = \exp\left(- \frac{d(x_i, x_j)^2}{2l^2} \right)

where :math:`l` is the length scale of the kernel and
:math:`d(\cdot,\cdot)` is the Euclidean distance.
For advice on how to set the length scale parameter, see e.g. [1]_.

This kernel is infinitely differentiable, which implies that GPs with this
kernel as covariance function have mean square derivatives of all orders,
and are thus very smooth.
See [2]_, Chapter 4, Section 4.2, for further details of the RBF kernel.

Read more in the :ref:`User Guide <gp_kernels>`.

.. versionadded:: 0.18

Parameters
----------
length_scale : float or ndarray of shape (n_features,), default=1.0
    The length scale of the kernel. If a float, an isotropic kernel is
    used. If an array, an anisotropic kernel is used where each dimension
    of l defines the length-scale of the respective feature dimension.

length_scale_bounds : pair of floats >= 0 or "fixed", default=(1e-5, 1e5)
    The lower and upper bound on 'length_scale'.
    If set to "fixed", 'length_scale' cannot be changed during
    hyperparameter tuning.

References
----------
.. [1] `David Duvenaud (2014). "The Kernel Cookbook:
    Advice on Covariance functions".
    <https://www.cs.toronto.edu/~duvenaud/cookbook/>`_

.. [2] `Carl Edward Rasmussen, Christopher K. I. Williams (2006).
    "Gaussian Processes for Machine Learning". The MIT Press.
    <http://www.gaussianprocess.org/gpml/>`_

Examples
--------
>>> from sklearn.datasets import load_iris
>>> from sklearn.gaussian_process import GaussianProcessClassifier
>>> from sklearn.gaussian_process.kernels import RBF
>>> X, y = load_iris(return_X_y=True)
>>> kernel = 1.0 * RBF(1.0)
>>> gpc = GaussianProcessClassifier(kernel=kernel,
...         random_state=0).fit(X, y)
>>> gpc.score(X, y)
0.9866...
>>> gpc.predict_proba(X[:2,:])
array([[0.8354..., 0.03228..., 0.1322...],
       [0.7906..., 0.0652..., 0.1441...]])
c