.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/miscellaneous/plot_isotonic_regression.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code or to run this example in your browser via Binder .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_miscellaneous_plot_isotonic_regression.py: =================== Isotonic Regression =================== An illustration of the isotonic regression on generated data (non-linear monotonic trend with homoscedastic uniform noise). The isotonic regression algorithm finds a non-decreasing approximation of a function while minimizing the mean squared error on the training data. The benefit of such a non-parametric model is that it does not assume any shape for the target function besides monotonicity. For comparison a linear regression is also presented. The plot on the right-hand side shows the model prediction function that results from the linear interpolation of thresholds points. The thresholds points are a subset of the training input observations and their matching target values are computed by the isotonic non-parametric fit. .. GENERATED FROM PYTHON SOURCE LINES 21-40 .. code-block:: default print(__doc__) # Author: Nelle Varoquaux # Alexandre Gramfort # License: BSD import numpy as np import matplotlib.pyplot as plt from matplotlib.collections import LineCollection from sklearn.linear_model import LinearRegression from sklearn.isotonic import IsotonicRegression from sklearn.utils import check_random_state n = 100 x = np.arange(n) rs = check_random_state(0) y = rs.randint(-50, 50, size=(n,)) + 50. * np.log1p(np.arange(n)) .. GENERATED FROM PYTHON SOURCE LINES 41-42 Fit IsotonicRegression and LinearRegression models: .. GENERATED FROM PYTHON SOURCE LINES 42-49 .. code-block:: default ir = IsotonicRegression(out_of_bounds="clip") y_ = ir.fit_transform(x, y) lr = LinearRegression() lr.fit(x[:, np.newaxis], y) # x needs to be 2d for LinearRegression .. raw:: html
LinearRegression()


.. GENERATED FROM PYTHON SOURCE LINES 50-51 Plot results: .. GENERATED FROM PYTHON SOURCE LINES 51-73 .. code-block:: default segments = [[[i, y[i]], [i, y_[i]]] for i in range(n)] lc = LineCollection(segments, zorder=0) lc.set_array(np.ones(len(y))) lc.set_linewidths(np.full(n, 0.5)) fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(12, 6)) ax0.plot(x, y, 'C0.', markersize=12) ax0.plot(x, y_, 'C1.-', markersize=12) ax0.plot(x, lr.predict(x[:, np.newaxis]), 'C2-') ax0.add_collection(lc) ax0.legend(('Training data', 'Isotonic fit', 'Linear fit'), loc='lower right') ax0.set_title('Isotonic regression fit on noisy data (n=%d)' % n) x_test = np.linspace(-10, 110, 1000) ax1.plot(x_test, ir.predict(x_test), 'C1-') ax1.plot(ir.X_thresholds_, ir.y_thresholds_, 'C1.', markersize=12) ax1.set_title("Prediction function (%d thresholds)" % len(ir.X_thresholds_)) plt.show() .. image:: /auto_examples/miscellaneous/images/sphx_glr_plot_isotonic_regression_001.png :alt: Isotonic regression fit on noisy data (n=100), Prediction function (36 thresholds) :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 74-78 Note that we explicitly passed `out_of_bounds="clip"` to the constructor of `IsotonicRegression` to control the way the model extrapolates outside of the range of data observed in the training set. This "clipping" extrapolation can be seen on the plot of the decision function on the right-hand. .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 0.241 seconds) .. _sphx_glr_download_auto_examples_miscellaneous_plot_isotonic_regression.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: binder-badge .. image:: images/binder_badge_logo.svg :target: https://mybinder.org/v2/gh/scikit-learn/scikit-learn/0.24.X?urlpath=lab/tree/notebooks/auto_examples/miscellaneous/plot_isotonic_regression.ipynb :alt: Launch binder :width: 150 px .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_isotonic_regression.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_isotonic_regression.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_