class_docstr: Isotonic regression model.
  
  The isotonic regression optimization problem is defined by::
  
      min sum w_i (y[i] - y_[i]) ** 2
  
      subject to y_[i] <= y_[j] whenever X[i] <= X[j]
      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>`.
  
  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 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
class_docstr_tok: ["Isotonic","regression","model",".","The","isotonic","regression","optimization","problem","is","defined","by",":",":","min","sum","w_i","(","y","[","i","]","-","y_","[","i","]",")","*","*","2","subject","to","y_","[","i","]","<","=","y_","[","j","]","whenever","X","[","i","]","<","=","X","[","j","]","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",">","`",".","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","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"]
docstr: Pickle-protocol - set state of the estimator.
  
  We need to rebuild the interpolation function.
docstr_tok: ["Pickle-protocol","-","set","state","of","the","estimator",".","We","need","to","rebuild","the","interpolation","function","."]
code: def __setstate__(self, state):
      """Pickle-protocol - set state of the estimator.
  
      We need to rebuild the interpolation function.
      """
      super(IsotonicRegression, self).__setstate__(state)
      if hasattr(self, "_necessary_X_") and hasattr(
          self, "_necessary_y_"
      ):
          self._build_f(self._necessary_X_, self._necessary_y_)
  
imports: import numpy
  from scipy import interpolate
  from scipy.stats import spearmanr
  from .base import BaseEstimator, TransformerMixin, RegressorMixin
  from .utils import as_float_array, check_array, check_consistent_length
  from .utils import deprecated
  from .utils.fixes import astype
  from ._isotonic import _inplace_contiguous_isotonic_regression, _make_unique
  import warnings
  import math
label_desc: Use image node_id 15 for calling the IsotonicRegression obj's underlying member method code with example usage: obj.__setstate__(state) without return types