ó
\c           @   s¨  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l m Z m Z m Z d  d l	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z d  d l m Z d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d   Z) d   Z* d   Z+ d   Z, d   Z- d   Z. d    Z/ d!   Z0 d"   Z1 d S(#   i˙˙˙˙N(   t   check_increasingt   isotonic_regressiont   IsotonicRegression(   t   assert_raisest   assert_array_equalt   assert_truet   assert_falset   assert_equalt   assert_array_almost_equalt   assert_warns_messaget   assert_no_warnings(   t   shufflec    	      C   sĹ   t    }  d d d d d d d g } d d d	 d d d d
 g } d d d d d d d g } t | | | d d \ } } } |  j | | d | } |  j | | d | j |  } t | |  d  S(   Ni   i   i   i   i   i   i   i)   i3   i   t   random_statei    t   sample_weight(   R   R   t   fit_transformt   fitt	   transformR   (	   t   irt   xt   yR   t   x_st   y_st   sample_weight_st   y_transformedt   y_transformed_s(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_permutation_invariance   s    	!!c          C   s@   d d d g }  d d d g } t  t |  |  } | s< t  d  S(   Ni    i   i   gń?gÍĚĚĚĚĚđ?(   R
   R    t   AssertionError(   R   R   t   is_increasing(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt-   test_check_increasing_small_number_of_samples   s    c          C   sR   d d d d d d g }  d d d d	 d	 d
 g } t  t |  |  } | sN t  d  S(   Ni    i   i   i   i   i   g      ř?g)\Âő(@g{ŽGáú!@i2   (   R
   R    R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_check_increasing_up&   s    c          C   sR   d d d d d d g }  d d d d d d g } t  t |  |  } | sN t  d  S(   Ni    i   i   i   i   i   (   R
   R    R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt    test_check_increasing_up_extreme/   s    c          C   sP   d d d d d d g }  d d d d	 d	 d
 g } t  t |  |  } t |  d  S(   Ni    i   i   i   i   i   g      řżg)\Âő(Ŕg{ŽGáú!ŔiÎ˙˙˙(   R
   R    R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_check_increasing_down8   s    c          C   sP   d d d d d d g }  d d d d	 d
 d g } t  t |  |  } t |  d  S(   Ni    i   i   i   i   i   i˙˙˙˙iţ˙˙˙iý˙˙˙iü˙˙˙iű˙˙˙(   R
   R    R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt"   test_check_increasing_down_extremeA   s    c          C   sV   d d d d d d g }  d d d d d d	 g } t  t d
 t |  |  } t |  d  S(   Ni    i   i   i   i   i   i˙˙˙˙iý˙˙˙iű˙˙˙t   interval(   R	   t   UserWarningR    R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_check_ci_warnJ   s    	c          C   sč  t  j d d d d d d d g  }  t  j d d d d d d d g  } t | t |    t  j d d d	 g  }  t  j d
 d
 d
 g  } t | t |    t  j t |    } t d d d d  } | j | |   t | j | |   j |  | j	 | |    t | j |  | j
 |   t  j j t |    } t d d d d  } t | j	 | | |  |  | j	 | |   |  t | j | |  | j |  |  t   } t | j	 t  j t |   |   t  j |    d  S(   Ni   i   i   i	   i   i
   i   i    i   i   t   y_ming        t   y_maxg      đ?(   t   npt   arrayR   R   t   aranget   lenR   R   R   R   t   predictt   randomt   permutationt   onest   mean(   R   t   y_R   R   t   perm(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_isotonic_regressionV   s$    $$.'	c          C   sŹ   d d d d d d g }  d d d d d d g } d d d d d d g } t    } | j |  |  t | j |  |  j |   | j |  |   t | | j |  |   d  S(   Ni   i   i   i   i   i   g      ř?(   R   R   R   R   R   (   R   R   t   y_trueR   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt!   test_isotonic_regression_ties_minq   s    	.c          C   sŹ   d d d d d d g }  d d d d d d g } d d d d d d g } t    } | j |  |  t | j |  |  j |   | j |  |   t | | j |  |   d  S(   Ni   i   i   i   i   i   g      @(   R   R   R   R   R   (   R   R   R2   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt!   test_isotonic_regression_ties_max~   s    	.c          C   sÇ   d d d d d d d d d d d g }  d d d d d d	 d
 d d d d	 g } d d d d d d d d d d d g } t    } | j |  |  t | j |   | d  t | j |  |  | d  d S(   sw  
    Test isotonic regression fit, transform  and fit_transform
    against the "secondary" ties method and "pituitary" data from R
     "isotone" package, as detailed in: J. d. Leeuw, K. Hornik, P. Mair,
     Isotone Optimization in R: Pool-Adjacent-Violators Algorithm
    (PAVA) and Active Set Methods

    Set values based on pituitary example and
     the following R command detailed in the paper above:
    > library("isotone")
    > data("pituitary")
    > res1 <- gpava(pituitary$age, pituitary$size, ties="secondary")
    > res1$x

    `isotone` version: 1.0-2, 2014-09-07
    R version: R version 3.1.1 (2014-07-10)
    i   i
   i   i   i   g     7@i   i   i   g     5@i   i   gbđhă86@g     @8@i   N(   R   R   R   R   R   (   R   R   R2   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt(   test_isotonic_regression_ties_secondary_   s    ''	c          C   sŻ   t  j d d d d d d g  }  t  j d d d d d d g  } t  j d d d d d d g  } t   } | j |  |  t | j |   |  t | j |  |  |  d	 S(
   sx  
    Non-regression test to handle issue 9432:
    https://github.com/scikit-learn/scikit-learn/issues/9432

    Compare against output in R:
    > library("isotone")
    > x <- c(0, 1, 1, 2, 3, 4)
    > y <- c(0, 0, 1, 0, 0, 1)
    > res1 <- gpava(x, y, ties="secondary")
    > res1$x

    `isotone` version: 1.1-0, 2015-07-24
    R version: R version 3.3.2 (2016-10-31)
    i    i   i   i   i   g        g      Đ?g      đ?N(   R&   R'   R   R   R   R   R   (   R   R   R2   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt>   test_isotonic_regression_with_ties_in_differently_sized_groupsŠ   s    !!!	c          C   s   t  j d d d d d d d g  }  t d t  j t  j t |    |   } t t  j | d  j	  | d  | d	 d
 k  d  S(   Ni
   i	   i   i   gffffff@i   t
   increasingi˙˙˙˙i   i    (
   R&   R'   R   t   FalseR   R(   R)   R   R-   t   shape(   R   R/   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt!   test_isotonic_regression_reversedÁ   s    $c          C   sÖ   t  j d d d d d d d g  }  t  j t |    } t d d  } t j d	 t  X } t j d
  | j	 | |   } t
 t g  | D] } d t | j  k ^ q   Wd  QX| d | d k  } t |  d  S(   Ni
   i	   i   i   gffffff@i   R7   t   autot   recordt   alwayss   invalid value encountered in i    i˙˙˙˙(   R&   R'   R(   R)   R   t   warningst   catch_warningst   Truet   simplefilterR   R   t   allt   strt   messageR   (   R   R   R   t   wR/   t   warnR   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt(   test_isotonic_regression_auto_decreasingČ   s    $	/c          C   sŘ   t  j d d d d d d d g  }  t  j t |    } t d d  } t j d	 t  X } t j d
  | j	 | |   } t
 t g  | D] } d t | j  k ^ q   Wd  QX| d | d k  } | sÔ t  d  S(   Ni   gffffff@i   i   i
   i	   R7   R;   R<   R=   s   invalid value encountered in i    i˙˙˙˙(   R&   R'   R(   R)   R   R>   R?   R@   RA   R   R   RB   RC   RD   R   (   R   R   R   RE   R/   RF   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt(   test_isotonic_regression_auto_increasingŰ   s    $	/c          C   sż   t    }  t j j d  } t t |  j d d d g d d d g d d	 g  t t |  j d d d g d d g  t t |  j | j d d
  d d d g  t t |  j | j d d
   d  S(   Ni*   i    i   i   i   i   i   gš?g333333ă?i
   (	   R   R&   R+   t   RandomStateR   t
   ValueErrorR   t   randnR   (   R   t   rng(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_assert_raises_exceptionsî   s    	1%+c          C   sł   t    }  t j j d  } d } t j |  } | j d d d | f d t j d t j |   } t j |  } |  j | | d | } |  j | |  } t	 | |  d  S(	   Ni*   id   iÎ˙˙˙i2   t   sizeg      I@i   R   (
   R   R&   R+   RI   R(   t   randintt   logR-   R   R   (   R   RL   t   nR   R   t   weightst   y_set_valuet   y_default_value(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt3   test_isotonic_sample_weight_parameter_default_value÷   s    	9c          C   s}   t  d d d d  }  d } t j |  } t j |  } d d d d d d g } t j |  j | |   } t | |  d  S(   NR$   i   R%   i   i   i   (   R   R&   R(   t   roundR   R   (   R   RQ   R   R   t   y_testt   y_result(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt    test_isotonic_min_max_boundaries  s    c          C   s   t    }  d d d d d d d g } d d d	 d d d d
 g } d d d d d d d g } d d d d d d d
 g } |  j | | d | } t | |  d  S(   Ni   i   i   i   i   i   i   i)   i3   i   gfffffć+@R   (   R   R   R   (   R   R   R   R   t
   expected_yt
   received_y(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_isotonic_sample_weight  s    	c          C   s   t  j d d d d d d d g  }  t  j t |    } t d d d	 d
  } | j | |   t t | j t	 |  d t
 |  d g  d  S(   Ni   i   i   i	   i   i
   R7   R;   t   out_of_boundst   raise(   R&   R'   R(   R)   R   R   R   RJ   R*   t   mint   max(   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt"   test_isotonic_regression_oob_raise  s
    $c          C   sĚ   t  j d d d d d d d g  }  t  j t |    } t d d d	 d
  } | j | |   | j t |  d t |  d g  } | j |  } t	 t |  t |   t	 t |  t |   d  S(   Ni   i   i   i	   i   i
   R7   R;   R]   t   clip(
   R&   R'   R(   R)   R   R   R*   R_   R`   R   (   R   R   R   t   y1t   y2(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt!   test_isotonic_regression_oob_clip*  s    $)c          C   s§   t  j d d d d d d d g  }  t  j t |    } t d d d	 d
  } | j | |   | j t |  d t |  d g  } t	 t
 t  j |   d  d  S(   Ni   i   i   i	   i   i
   R7   R;   R]   t   nani   (   R&   R'   R(   R)   R   R   R*   R_   R`   R   t   sumt   isnan(   R   R   R   Rc   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt    test_isotonic_regression_oob_nan:  s    $)c          C   sh   t  j d d d d d d d g  }  t  j t |    } t d d d	 d
  } t t | j | |   d  S(   Ni   i   i   i	   i   i
   R7   R;   R]   t   xyz(   R&   R'   R(   R)   R   R   RJ   R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt    test_isotonic_regression_oob_badH  s    $c          C   s~   t  j d d d d d d d g  }  t  j t |    } t d d d	 d
  } | j | |   d | _ t t | j	 |  d  S(   Ni   i   i   i	   i   i
   R7   R;   R]   R^   Rj   (
   R&   R'   R(   R)   R   R   R]   R   RJ   R   (   R   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt&   test_isotonic_regression_oob_bad_afterT  s    $	c          C   sŤ   t  j d d d d d d d g  }  t  j t |    } t d d d	 d
  } | j | |   t j | t j  } t j	 |  } t  j
 j | j |  | j |   d  S(   Ni   i   i   i	   i   i
   R7   R;   R]   Rb   (   R&   R'   R(   R)   R   R   t   picklet   dumpst   HIGHEST_PROTOCOLt   loadst   testingR   R*   (   R   R   R   t   ir_sert   ir2(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_isotonic_regression_pickleb  s    $c          C   st   d d d g }  d d d g } t  d t d d  } | j |  |  t j t j | j |     } | sp t  d  S(   Ni    i   R7   R]   Rb   (   R   R@   R   R&   RB   t   isfiniteR*   R   (   R   R   R   t   all_predictions_finite(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt!   test_isotonic_duplicate_min_entryo  s    !c          C   s$  t  j d d d d d d d d d	 d
 d d d d d d d d d d g  }  t |  d d d d } t  j | d k  s~ t  t  j | d k  s t  t |  d d d d d t } t  j | d k  sŇ t  t  j | d k  sí t  t |  d d d t } t  j | d k  s t  d  S(   Nghí|?5ô?gJ+ő?gçűŠńŇMâżgŮÎ÷SăĽÓ?g9´ČvžćżgşI+Ćżg/Ý$ůżglçűŠńđ?gźtVö?gĺĐ"Űů~ţ?gázŽGáĘ?gyé&1Ź?g#Űů~jź´żgŃ"Űů~jÜ?g;ßOn?gTăĽÄ Řżgyé&1ŹěżgŹZd;őżg
×Łp=
Ç?R$   g        R%   gš?i    R7   (   R&   R'   R   RB   R   R8   (   R   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_isotonic_ymin_ymaxy  s    c          C   s   t  j j d  }  t   } d } t  j d d |  } | |  j d |  } |  j d |  } d | d d +| j | | d	 | | j | | d	 | d  S(
   Ni*   i2   iý˙˙˙i   RN   i    i   i   R   (   R&   R+   RI   R   t   linspacet   uniformR   (   RL   t
   regressiont	   n_samplesR   R   RE   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_isotonic_zero_weight_loop  s    	c          C   sS  t  j j d  }  d } d |  j |  d } t  j |  j |  d d t  j |   j d  } |  j |  } d | |  j |  d k  <t d	 d d
 d d d  } t d	 d d
 d d d  } | j | | d | d t	 \ } } | j
 | |  | j | | d | d |  j |  d }	 | j |	  }
 | j |	  } t |
 |  d  S(   Ni{   i
   i   g      4@g      đ?t   int64i    gš?R$   R%   i   R]   Rb   R   t   trim_duplicatesič  (   R&   R+   RI   t   randt   lesst   expt   astypeR   t   _build_yR8   t   _build_fR   R*   R   (   RL   R|   t   X_traint   y_trainRR   t
   slow_modelt
   fast_modelt   X_train_fitt   y_train_fitt   X_testt   y_pred_slowt   y_pred_fast(    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_fast_predictŚ  s(    	c          C   s   t    }  t j |   d  S(   N(   R   t   copy(   R   (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   test_isotonic_copy_before_fitĚ  s    	(2   R>   t   numpyR&   Rm   R   t   sklearn.isotonicR    R   R   t   sklearn.utils.testingR   R   R   R   R   R   R	   R
   t   sklearn.utilsR   R   R   R   R   R   R    R#   R1   R3   R4   R5   R6   R:   RG   RH   RM   RU   RY   R\   Ra   Re   Ri   Rk   Rl   Rt   Rw   Rx   R}   R   R   (    (    (    s:   lib/python2.7/site-packages/sklearn/tests/test_isotonic.pyt   <module>   sH   :																															
			&