Isotonic regression model.
The isotonic regression optimization problem is defined by::
min sum w_i (yi
- y_i
) ** 2
subject to y_i
<= y_j
whenever Xi
<= Xj
and min(y_) = y_min, max(y_) = y_max
where:
- ``y
i
`` are inputs (real numbers) - ``y_
i
`` are fitted - ``X`` specifies the order. If ``X`` is non-decreasing then ``y_`` is non-decreasing.
- ``w
i
`` are optional strictly positive weights (default to 1.0)
Read more in the :ref:`User Guide <isotonic>`.
.. versionadded:: 0.13
Parameters ---------- y_min : optional, default: None If not None, set the lowest value of the fit to y_min.
y_max : optional, default: None If not None, set the highest value of the fit to y_max.
increasing : boolean or string, optional, default: True If boolean, whether or not to fit the isotonic regression with y increasing or decreasing.
The string value "auto" determines whether y should increase or decrease based on the Spearman correlation estimate's sign.
out_of_bounds : string, optional, default: "nan" The ``out_of_bounds`` parameter handles how x-values outside of the training domain are handled. When set to "nan", predicted y-values will be NaN. When set to "clip", predicted y-values will be set to the value corresponding to the nearest train interval endpoint. When set to "raise", allow ``interp1d`` to throw ValueError.
Attributes ---------- X_min_ : float Minimum value of input array `X_` for left bound.
X_max_ : float Maximum value of input array `X_` for right bound.
f_ : function The stepwise interpolating function that covers the input domain ``X``.
Notes ----- Ties are broken using the secondary method from Leeuw, 1977.
References ---------- Isotonic Median Regression: A Linear Programming Approach Nilotpal Chakravarti Mathematics of Operations Research Vol. 14, No. 2 (May, 1989), pp. 303-308
Isotone Optimization in R : Pool-Adjacent-Violators Algorithm (PAVA) and Active Set Methods Leeuw, Hornik, Mair Journal of Statistical Software 2009
Correctness of Kruskal's algorithms for monotone regression with ties Leeuw, Psychometrica, 1977
Examples -------- >>> from sklearn.datasets import make_regression >>> from sklearn.isotonic import IsotonicRegression >>> X, y = make_regression(n_samples=10, n_features=1, random_state=41) >>> iso_reg = IsotonicRegression().fit(X.flatten(), y) >>> iso_reg.predict(.1, .2
) array(1.8628..., 3.7256...
)