.. DO NOT EDIT.
.. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY.
.. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE:
.. "auto_examples/gaussian_process/plot_gpc_isoprobability.py"
.. LINE NUMBERS ARE GIVEN BELOW.

.. only:: html

    .. note::
        :class: sphx-glr-download-link-note

        :ref:`Go to the end <sphx_glr_download_auto_examples_gaussian_process_plot_gpc_isoprobability.py>`
        to download the full example code or to run this example in your browser via JupyterLite or Binder

.. rst-class:: sphx-glr-example-title

.. _sphx_glr_auto_examples_gaussian_process_plot_gpc_isoprobability.py:


=================================================================
Iso-probability lines for Gaussian Processes classification (GPC)
=================================================================

A two-dimensional classification example showing iso-probability lines for
the predicted probabilities.

.. GENERATED FROM PYTHON SOURCE LINES 10-100



.. image-sg:: /auto_examples/gaussian_process/images/sphx_glr_plot_gpc_isoprobability_001.png
   :alt: plot gpc isoprobability
   :srcset: /auto_examples/gaussian_process/images/sphx_glr_plot_gpc_isoprobability_001.png
   :class: sphx-glr-single-img


.. rst-class:: sphx-glr-script-out

 .. code-block:: none

    Learned kernel: 0.0256**2 * DotProduct(sigma_0=5.72) ** 2 






|

.. code-block:: Python


    # Author: Vincent Dubourg <vincent.dubourg@gmail.com>
    # Adapted to GaussianProcessClassifier:
    #         Jan Hendrik Metzen <jhm@informatik.uni-bremen.de>
    # License: BSD 3 clause

    import numpy as np
    from matplotlib import cm
    from matplotlib import pyplot as plt

    from sklearn.gaussian_process import GaussianProcessClassifier
    from sklearn.gaussian_process.kernels import ConstantKernel as C
    from sklearn.gaussian_process.kernels import DotProduct

    # A few constants
    lim = 8


    def g(x):
        """The function to predict (classification will then consist in predicting
        whether g(x) <= 0 or not)"""
        return 5.0 - x[:, 1] - 0.5 * x[:, 0] ** 2.0


    # Design of experiments
    X = np.array(
        [
            [-4.61611719, -6.00099547],
            [4.10469096, 5.32782448],
            [0.00000000, -0.50000000],
            [-6.17289014, -4.6984743],
            [1.3109306, -6.93271427],
            [-5.03823144, 3.10584743],
            [-2.87600388, 6.74310541],
            [5.21301203, 4.26386883],
        ]
    )

    # Observations
    y = np.array(g(X) > 0, dtype=int)

    # Instantiate and fit Gaussian Process Model
    kernel = C(0.1, (1e-5, np.inf)) * DotProduct(sigma_0=0.1) ** 2
    gp = GaussianProcessClassifier(kernel=kernel)
    gp.fit(X, y)
    print("Learned kernel: %s " % gp.kernel_)

    # Evaluate real function and the predicted probability
    res = 50
    x1, x2 = np.meshgrid(np.linspace(-lim, lim, res), np.linspace(-lim, lim, res))
    xx = np.vstack([x1.reshape(x1.size), x2.reshape(x2.size)]).T

    y_true = g(xx)
    y_prob = gp.predict_proba(xx)[:, 1]
    y_true = y_true.reshape((res, res))
    y_prob = y_prob.reshape((res, res))

    # Plot the probabilistic classification iso-values
    fig = plt.figure(1)
    ax = fig.gca()
    ax.axes.set_aspect("equal")
    plt.xticks([])
    plt.yticks([])
    ax.set_xticklabels([])
    ax.set_yticklabels([])
    plt.xlabel("$x_1$")
    plt.ylabel("$x_2$")

    cax = plt.imshow(y_prob, cmap=cm.gray_r, alpha=0.8, extent=(-lim, lim, -lim, lim))
    norm = plt.matplotlib.colors.Normalize(vmin=0.0, vmax=0.9)
    cb = plt.colorbar(cax, ticks=[0.0, 0.2, 0.4, 0.6, 0.8, 1.0], norm=norm)
    cb.set_label(r"${\rm \mathbb{P}}\left[\widehat{G}(\mathbf{x}) \leq 0\right]$")
    plt.clim(0, 1)

    plt.plot(X[y <= 0, 0], X[y <= 0, 1], "r.", markersize=12)

    plt.plot(X[y > 0, 0], X[y > 0, 1], "b.", markersize=12)

    plt.contour(x1, x2, y_true, [0.0], colors="k", linestyles="dashdot")

    cs = plt.contour(x1, x2, y_prob, [0.666], colors="b", linestyles="solid")
    plt.clabel(cs, fontsize=11)

    cs = plt.contour(x1, x2, y_prob, [0.5], colors="k", linestyles="dashed")
    plt.clabel(cs, fontsize=11)

    cs = plt.contour(x1, x2, y_prob, [0.334], colors="r", linestyles="solid")
    plt.clabel(cs, fontsize=11)

    plt.show()


.. rst-class:: sphx-glr-timing

   **Total running time of the script:** (0 minutes 0.134 seconds)


.. _sphx_glr_download_auto_examples_gaussian_process_plot_gpc_isoprobability.py:

.. only:: html

  .. container:: sphx-glr-footer sphx-glr-footer-example

    .. container:: binder-badge

      .. image:: images/binder_badge_logo.svg
        :target: https://mybinder.org/v2/gh/scikit-learn/scikit-learn/1.4.X?urlpath=lab/tree/notebooks/auto_examples/gaussian_process/plot_gpc_isoprobability.ipynb
        :alt: Launch binder
        :width: 150 px

    .. container:: lite-badge

      .. image:: images/jupyterlite_badge_logo.svg
        :target: ../../lite/lab/?path=auto_examples/gaussian_process/plot_gpc_isoprobability.ipynb
        :alt: Launch JupyterLite
        :width: 150 px

    .. container:: sphx-glr-download sphx-glr-download-jupyter

      :download:`Download Jupyter notebook: plot_gpc_isoprobability.ipynb <plot_gpc_isoprobability.ipynb>`

    .. container:: sphx-glr-download sphx-glr-download-python

      :download:`Download Python source code: plot_gpc_isoprobability.py <plot_gpc_isoprobability.py>`


.. include:: plot_gpc_isoprobability.recommendations


.. only:: html

 .. rst-class:: sphx-glr-signature

    `Gallery generated by Sphinx-Gallery <https://sphinx-gallery.github.io>`_