ó
\c           @   sė  d  Z  d d l m Z d d l m Z d d l m Z m Z d d l Z d d l	 Z	 d d l
 m Z d d l Z d d l Z d d l Z d d l j Z d d l Z d d l m Z d d l m Z d d	 l m Z m Z d d
 l m Z d d l m Z d d l m Z d d l m Z d d l m  Z  d d l m! Z! d d l m" Z" d d l m# Z# m$ Z$ d d l m% Z% d d l m& Z& d d l m' Z' d d l m( Z( d d l m) Z) d d l m* Z* d d l+ m, Z, m- Z- d d l. m/ Z/ m0 Z0 m1 Z1 d d l2 m3 Z3 d d l2 m4 Z4 d d l5 m6 Z6 d d l5 m7 Z7 d d l8 m9 Z9 d d l8 m: Z: d d  l8 m; Z; d d! l< m= Z= d d" l< m> Z> d d# l< m? Z? d d$ l< m@ Z@ d d% l< mA ZA d d& l< mB ZB d d' l< mC ZC d d( l< mD ZD d d) l< mE ZE d d* l< mF ZF d d+ l< mG ZG d d, l< mH ZH d d- l< mI ZI d d. lJ mK ZK d d/ lL mM ZM d d0 lN mO ZO mP ZP d d1 lQ mR ZR d d2 lQ mS ZS d d3 lT mU ZU d d4 lV mW ZW d d5 lX mY ZY d d6 lX mZ ZZ d d7 lX m[ Z[ d d8 lX m\ Z\ d d9 lX m] Z] d d: l^ m_ Z_ d d; l` ma Za d d< lb mc Zc md Zd d d= le mf Zf d> eg f d?     YZh d@ eO f dA     YZi e jj d d g dB d g dC dC g dD dC g g  Zk e jj dC dC dD dD g  Zl dE   Zm e jn jo dF dG ep dH f i dG g dI 6dG g ep dJ f i dG dI 6ep dK f g  dL    Zq dM   Zr e jn js dN  e jn js dO  dP     Zt dQ   Zu e jn js dN  dR    Zv e jn js dN  dS    Zw e jn js dN  dT    Zx e jn js dN  e jn js dO  dU     Zy e* dV    Zz e jn js dN  e jn js dO  dW     Z{ e jn js dN  e jn js dO  dX     Z| dY   Z} e jn js dN  e jn js dO  dZ     Z~ e jn js dN  e jn js dO  d[     Z e jn js dN  e jn js dO  d\     Z e jn js dN  e jn js dO  d]     Z e jn js dN  e jn js dO  d^     Z e jn js dN  e jn js dO  d_     Z e jn js dN  e jn js dO  d`     Z e jn js dN  e jn js dO  da     Z e jn js dN  e jn js dO  db     Z e jn js dN  e jn js dO  dc     Z e jn js dN  e jn js dO  dd     Z de e3 f df     YZ e* dg    Z e jn js dN  e jn js dO  dh     Z e jn js dN  di    Z e jn js dN  dj    Z e* dk    Z e jn js dN  e jn js dO  dl     Z e jn js dN  e jn js dO  dm     Z dn   Z do   Z dp   Z dq   Z dr   Z e* ds e  dt    Z du   Z dv   Z dw   Z dx   Z e jn js dN  e jn js dO  dy     Z e jn js dN  e jn js dO  dz     Z e*   d{    Z e jn js dN  d|    Z e jn js dO  d}    Z  e jn js dN  e jn js dO  d~     Z” e jn js dN  e jn js dO  d     Z¢ e jn js dN  d    Z£ e jn js dN  d    Z¤ d e3 f d     YZ„ e jn js dN  d    Z¦ e jn js dN  e jn js dO  d     Z§ d   ZØ e jn js dN  e jn js dO  d     Z© e jn js dN  e jn js dO  d     ZŖ e jn js dN  d    Z« e jn js dN  e jn js dO  d     Z¬ d   Z­ d   Z® d   ZÆ d S(   s   Test the search modulei’’’’(   t	   cStringIO(   t   xrange(   t   chaint   productN(   t   GeneratorType(   t
   sp_version(   t   PY3_OR_LATER(   t	   _Iterablet   _Sized(   t   assert_equal(   t   assert_not_equal(   t   assert_raises(   t   assert_warns(   t   assert_warns_message(   t   assert_no_warnings(   t   assert_raise_message(   t   assert_falset   assert_true(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_allclose(   t   assert_almost_equal(   t   assert_greater_equal(   t   ignore_warnings(   t   CheckingClassifiert   MockDataFrame(   t	   bernoullit   expont   uniform(   t   BaseEstimator(   t   clone(   t   NotFittedError(   t   ConvergenceWarning(   t   make_classification(   t
   make_blobs(   t   make_multilabel_classification(   t   fit_grid_point(   t   cross_val_score(   t   KFold(   t   StratifiedKFold(   t   StratifiedShuffleSplit(   t   LeaveOneGroupOut(   t   LeavePGroupsOut(   t
   GroupKFold(   t   GroupShuffleSplit(   t   GridSearchCV(   t   RandomizedSearchCV(   t   ParameterGrid(   t   ParameterSampler(   t   BaseSearchCV(   t   FitFailedWarning(   t	   LinearSVCt   SVC(   t   DecisionTreeRegressor(   t   DecisionTreeClassifier(   t   KMeans(   t   KernelDensity(   t   f1_score(   t   recall_score(   t   accuracy_score(   t   make_scorer(   t   roc_auc_score(   t   SimpleImputer(   t   Pipeline(   t   Ridget   SGDClassifier(   t   OneTimeSplittert   MockClassifierc           B   st   e  Z d  Z d d  Z d   Z d   Z d   Z d   Z e Z e Z	 e Z
 d
 d
 d  Z e d  Z d	   Z RS(   s8   Dummy classifier to test the parameter search algorithmsi    c         C   s   | |  _  d  S(   N(   t	   foo_param(   t   selfRD   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   __init__S   s    c         C   s4   t  |  t  |  k s t  t j |  |  _ |  S(   N(   t   lent   AssertionErrort   npt   uniquet   classes_(   RE   t   Xt   Y(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   fitV   s    c         C   s   | j  d S(   Ni    (   t   shape(   RE   t   T(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   predict[   s    c         C   s   | |  j  S(   N(   RD   (   RE   RL   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt	   transform^   s    c         C   s   | |  j  S(   N(   RD   (   RE   RL   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   inverse_transforma   s    c         C   s"   |  j  d k r d } n d } | S(   Ni   g      š?g        (   RD   (   RE   RL   RM   t   score(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRT   h   s    	c         C   s   i |  j  d 6S(   NRD   (   RD   (   RE   t   deep(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt
   get_paramso   s    c         K   s   | d |  _  |  S(   NRD   (   RD   (   RE   t   params(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt
   set_paramsr   s    N(   t   __name__t
   __module__t   __doc__RF   RN   RQ   RR   RS   t   predict_probat   predict_log_probat   decision_functiont   NoneRT   t   FalseRV   RX   (    (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRC   Q   s   				t   LinearSVCNoScorec           B   s   e  Z d  Z e d    Z RS(   s1   An LinearSVC classifier that has no score method.c         C   s
   t   d  S(   N(   t   AttributeError(   RE   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRT   y   s    (   RY   RZ   R[   t   propertyRT   (    (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRa   w   s   iž’’’i   i   c         C   s:   t  t |   g  t t |    D] } |  | ^ q  d  S(   N(   R	   t   listt   rangeRG   (   t   gridt   i(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   assert_grid_iter_equals_getitem   s    s    input, error_type, error_messagei    s,   Parameter grid is not a dict or a list \(0\)t   foos"   Parameter grid is not a dict \(0\)s;   Parameter grid value is not iterable \(key='foo', value=0\)c         C   s*   t  j | d |  t |   Wd  QXd  S(   Nt   match(   t   pytestt   raisesR/   (   t   inputt
   error_typet   error_message(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt"   test_validate_parameter_grid_input   s    c       	      sę  i d d d g d 6}  t  |   } t | t  s7 t  t | t  sL t  t t |  d  t |  i d d g d 6d d d g d	 6} t  |  } t t |  d
  xX t d  D]J } t	 d   | D  } t | t	 d   t
 | d	 | d  D   qø Wt |  t  i     t t    d  t t    i  g  t    t t   f d    t  i d d g d 6i  i d g d 6g  } t t |  d  t t |  i d d 6i d d 6i  i d d 6g  t |  d  S(   Ni   i   i   Ri   i   t   hamt   spamt   eggst   bari   c         s   s-   |  ]# } t  t t | j       Vq d  S(   N(   t   tupleR   t   sortedt   items(   t   .0t   p(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>¤   s    c         s   s'   |  ] \ } } d  | d | f Vq d S(   Rt   Ri   N(    (   Rx   t   xt   y(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>¦   s   c              s     d S(   Ni   (    (    (   t   empty(    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   <lambda>Æ   s    i
   t   Cg      ą?(   R/   t
   isinstancet   IterableRH   t   SizedR	   RG   Rh   R   t   setR   Rd   R   t
   IndexError(   t   params1t   grid1t   params2t   grid2Rg   t   pointst	   has_empty(    (   R|   sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_parameter_grid   s2    
	#

,4s    ignore: The default of the `iid`s"   ignore: You should specify a valuec          C   sé   t    }  t |  i d d d g d 6d d } t j } t   t _ | j t t  | t _ t | j	 j
 d  t | j d j d d d g  | j t t  | j t  | j t  | j t  d | _ t t | j t t  d  S(   Ni   i   i   RD   t   verboset   param_foo_paramt   sklearn(   RC   R-   t   syst   stdoutt   StringIORN   RL   R{   R	   t   best_estimator_RD   R   t   cv_results_t   dataRT   R\   R^   RR   t   scoringR   t
   ValueError(   t   clft   grid_searcht
   old_stdout(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search·   s    	%			c         K   s
  t  j d  j d d  } t  j d g d d g d  } t d d d g  } |  | i d d	 d
 g d 6d d	 | } t t d | j | | d t  j d  t t d | j | | d t  j d  d t  j	 d  | j | | d t  j d  d t  j	 d  d  S(   Nid   i
   i    i   i   t   expected_fit_paramsRr   Rs   i   i   RD   t   cvs,   Expected fit parameter(s) ['eggs'] not seen.s,   Fit parameter spam has length 1; expected 4.(
   RI   t   aranget   reshapet   arrayR   R   RH   RN   t   onest   zeros(   t   klasst   klass_kwargsRL   R{   R   t   searcher(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt-   check_hyperparameter_searcher_with_fit_paramsŅ   s    !(c           C   s   t  t d d d  S(   Nt   error_scoret   raise(   R¤   R-   (    (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt    test_grid_search_with_fit_paramsä   s    	c           C   s   t  t d d d d d  S(   Nt   n_iteri   R„   R¦   (   R¤   R.   (    (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt"   test_random_search_with_fit_paramsź   s    c          C   s   t  j d  j d d  }  t  j d g d d g d  } t d d g  } t | i d d d	 g d
 6d i t  j d  d 6} t t | j	 |  |  d  S(   Nid   i
   i    i   i   R   Rr   i   i   RD   t
   fit_params(
   RI   R   R   R   R   R-   R   R   t   DeprecationWarningRN   (   RL   R{   R   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt'   test_grid_search_fit_params_deprecationš   s    !c          C   s>  t  j d  j d d  }  t  j d g d d g d  } t d d g  } t | i d d d	 g d
 6d i t  j d  d 6} d } t t | | j	 |  | d t  j d  t
 j   { t
 j d d t t | i d d d	 g d
 6d i t  j d  d 6d d } t t d | j	 |  | d t  j d  Wd  QXd  S(   Nid   i
   i    i   i   R   Rr   i   i   RD   RŖ   sg   Ignoring fit_params passed as a constructor argument in favor of keyword arguments to the "fit" method.t   ignoret   categoryR„   R¦   s   Fit parameter spam has length 1(   RI   R   R   R   R   R-   R   R   t   RuntimeWarningRN   t   warningst   catch_warningst   filterwarningsR«   R   RH   (   RL   R{   R   R   t   expected_warning(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt&   test_grid_search_fit_params_two_placesž   s    !			c          C   s  t  d d  }  t d d d d  \ } } d d d g } t d d  } t |  i | d 6d	 d
 } | j | |  t | i | d 6d	 d
 } | j | |  t | j | j  t | j | |  | j | |   t | i | d 6 } t t	 d | j d g g  d  S(   Nt   random_statei    t   centersi   g¹?i   i
   R~   R   t   accuracys
   no scoring(
   R3   R"   Ra   R-   RN   R	   t   best_params_RT   R   t	   TypeError(   R   RL   R{   t   Cst   clf_no_scoreR   t   grid_search_no_score(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_no_score#  s    	%c       	   C   sd  t  d d d d d d d d  \ }  } t d d  } i d	 g d
 6} t | | d d  j |  |  } t | | d d j |  |  } t t   | d d j |  |  } t | | d d j |  |  } | j |  |  } | j |  |  }	 | j |  |  }
 | j |  |  } | d k  s't  |	 d k  s9t  t | |	  t	 |	 |  t	 | |
  d  S(   Nt	   n_samplesid   t	   n_classesi   t   flip_ygÉ?Rµ   i    g¹?R~   R   R·   t   roc_aucg      š?(
   R!   R3   R-   R_   RN   Ra   RT   RH   R
   R   (   RL   R{   R   Rf   t   search_no_scoringt   search_accuracyt   search_no_score_method_auct
   search_auct   score_no_scoringt   score_accuracyt   score_no_score_auct	   score_auc(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_score_method=  s&    !!	!c    
      C   s)  t  j j d  }  t d d d d d d  \ } } |  j d d d  } t d d  } i d g d	 6} t   t d  t   t	   g } xR | D]J } t
 | | d
 | } t t d | j | |  | j | | d | q Wt   t   g }	 x3 |	 D]+ } t
 | | d
 | } | j | |  qö Wd  S(   Ni    R¾   i   Ræ   i   Rµ   i   i   R~   R   s*   The 'groups' parameter should not be None.t   groups(   RI   t   randomt   RandomStateR!   t   randintR3   R)   R*   R+   R,   R-   R   R   RN   R'   R(   (
   t   rngRL   R{   RĖ   R   Rf   t	   group_cvsR   t   gst   non_group_cvs(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_groups\  s"    !c       
   C   sĻ  t  j d  j d d  }  t  j d g d d g d  } i d d g d 6} t t d d  | d	 t d
 d t t d d  | d d d	 t d
 d g } i  } xf | D]^ } xU t t d g D]D } | j	 d |  t
 | j d t } t | |  |  j | | <qĄ WqŖ Wd d d d d g } xo | D]g }	 d j |	  }
 t t |
 | d j |	  } t  j | | t |	  syt  |	 | t k s(t  q(Wx5 | d D]) }	 |	 | k rt | d j |	  qqWd  S(   Nid   i
   i    i   i   i   R~   Rµ   t   iidR   i   RØ   t   warnt   return_train_scoreR®   t   split0_train_scoret   split1_train_scoret   split2_train_scoret   mean_train_scoret   std_train_scores£   You are accessing a training score ({!r}), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True(   RI   R   R   R   R-   R3   R`   R.   t   TrueRX   R   RN   R    R   R   t   formatR   t   FutureWarningt   gett   allcloseRH   (   RL   R{   Rf   t
   estimatorst   resultt	   estimatort   valt   fit_funct
   train_keyst   keyt   msgt   train_score(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_return_train_score_warny  s4    !	!		 c          C   sP  t  j d  j d d  }  t  j d g d d g d  } d d d g } t t d d  i | d 6 } | j |  |  t | j j	 | j	  t t
   i d	 d
 g d 6 } | j |  |  t t | d   t t d d  i | d 6 } t t | d   t t d d  i | d 6d t } | j |  |  t t | d   d  S(   Nid   i
   i    i   i   g¹?Rµ   R~   g      š?g       @t   alphaRK   t   refit(   RI   R   R   R   R-   R3   RN   R   R   RK   R@   R   t   hasattrR`   (   RL   R{   Rŗ   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_classes__property  s     !
c          C   s   t    }  t |  i d g d 6 } | j t t  t | d  sG t  t |  i d g d 6d d } | j t t  t | d  s t  d  S(   Ni   RD   R   i    RØ   (   RC   R-   RN   RL   R{   Rķ   RH   R.   (   R   R   t   random_search(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_trivial_cv_results_attr¼  s    	c          C   s  t    }  x² d  d d g g D] } t |  i d d d g d 6d t } | j t t  t t | d  o t | d	  o t | d
   x. d D]& } t	 t
 d | t | |  t  q Wq WxY d d t d d g D]B } t	 t d t |  i  d | d i d d 6d d 6j t t  qŌ Wd  S(   NR·   t	   precisioni   i   i   RD   Rģ   R   t   best_index_Rø   RQ   R\   R]   RR   RS   sH   refit=False. %s is available only after refitting on the best parameterst    i   t   recallsI   For multi-metric scoring, the parameter refit must be set to a scorer keyR   t   acct   prec(   RQ   R\   R]   RR   RS   (   RC   R_   R-   R`   RN   RL   R{   R   Rķ   R   R   t   getattrRÜ   R   (   R   R   R   t   fn_nameRģ   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_no_refitŹ  s$    	%
	
c          C   sd   t  d d d d d d  \ }  } t   } t | i d d g d	 6 } t t | j |  d
  |  d  S(   NR¾   iČ   t
   n_featuresid   Rµ   i    g¹?g      š?R~   i“   (   R!   R3   R-   R   R   RN   (   t   X_t   y_R   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_errorź  s    !	c          C   sø   t  d d d d d d  \ }  } i d g d 6d	 g d
 6d g d 6} t d d  } t | |  } | j |  |  t d d d
 d	 d d  } | j |  |  t | j | j j  d  S(   NR¾   iČ   Rś   id   Rµ   i    g      š?R~   t   rbft   kernelg¹?t   gammat   auto(   R!   R4   R-   RN   R   t
   dual_coef_R   (   Rū   Rü   t
   param_dictR   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_one_grid_pointõ  s    !$c          C   s}   t    }  d  } t r7 t |  i t d d  d 6 } n t |  i t d d  d 6 } | j t t  t	 | j
 j d  d  S(   Ni   i   RD   i   (   RC   R_   R   R-   Re   R   RN   RL   R{   R	   R   RD   (   R   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt/   test_grid_search_when_param_grid_includes_range  s    	"c          C   sŅ   i d d 6}  t  d d  } t t d t | |   i g  d 6}  t  d d  } t t d t | |   i d d 6}  t  d d  } t t d t | |   i t j d  d 6}  t  d d  } t t t | |   d  S(   Ng      š?R~   R   R  sY   Parameter values for parameter (C) need to be a sequence(but not a string) or np.ndarray.t   scalesC   Parameter values for parameter (C) need to be a non-empty sequence.s   1,2,3i   i   (   i   i   (   R4   R   R   R-   RI   R   R   (   R  R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_bad_param_grid  s*    c          C   s   t  d d d d d d  \ }  } t   } t | i d d g d	 6 } | j |  d
  | d
   | j |  d
  } | j j } t j |   }  t   } t | i d d g d	 6 } | j |  d
  j	   | d
   | j |  d
  } | j j } t
 j | | k  d k st  t | |  d  S(   NR¾   iČ   Rś   id   Rµ   i    g¹?g      š?R~   i“   gĶĢĢĢĢĢģ?(   R!   R3   R-   RN   RQ   R   R~   t   spt
   csr_matrixt   tocooRI   t   meanRH   R	   (   Rū   Rü   R   R   t   y_predR~   t   y_pred2t   C2(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_sparse2  s    !		!c          C   s   t  d d d d d d  \ }  } t   } t | i d d g d	 6d
 d } | j |  d  | d   | j |  d  } | j j } t j |   }  t   } t | i d d g d	 6d
 d } | j |  d  | d   | j |  d  } | j j } t	 | |  t
 | |  d   } t | d t }	 t | i d d g d	 6d
 |	 } | j |  d  | d   | j |  d  }
 | j j } t
 | |  t	 | |
  d  S(   NR¾   iČ   Rś   id   Rµ   i    g¹?g      š?R~   R   t   f1i“   c         S   s   t  |  |  S(   N(   R9   (   t   y_true_t   y_pred_(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   f1_lossb  s    t   greater_is_better(   R!   R3   R-   RN   RQ   R   R~   R  R	  R   R	   R<   R`   (   Rū   Rü   R   R   R  R~   R  R  R  t   F1Losst   y_pred3t   C3(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_sparse_scoringI  s,    !	"	"	"c    	      C   s  t  d d d d d d  \ }  } t j |  d  |  d  j  } | d  } t d d	  } t | i d
 d g d 6 } | j | |  | j d k s t  t j |  d |  d  j  } | d } | j	 |  } t j
 | | k  d k sļ t  t t | j | j   |  d  S(   NR¾   iČ   Rś   id   Rµ   i    i“   R’   t   precomputedg¹?g      š?R~   (   R!   RI   t   dotRP   R4   R-   RN   t   best_score_RH   RQ   R  R   R   t   tolist(	   Rū   Rü   t   K_traint   y_trainR   R   t   K_testt   y_testR  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt#   test_grid_search_precomputed_kerneln  s    !

!c          C   sc   t  j d  }  t  j d	  } t d d  } t | i d d g d 6 } t t | j |  |  d  S(
   Ni
   i   R’   R  g¹?g      š?R~   (   i
   i   (   i
   (   RI   R    R   R4   R-   R   R   RN   (   R  R  R   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt3   test_grid_search_precomputed_kernel_error_nonsquare  s
    t   BrokenClassifierc           B   s,   e  Z d  Z d d  Z d   Z d   Z RS(   s*   Broken classifier that cannot be fit twicec         C   s   | |  _  d  S(   N(   t	   parameter(   RE   R$  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRF     s    c         C   s#   t  |  d  s t  t |  _ d  S(   Nt   has_been_fit_(   Rķ   RH   RÜ   R%  (   RE   RL   R{   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRN     s    c         C   s   t  j | j d  S(   Ni    (   RI   R    RO   (   RE   RL   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRQ   ¢  s    N(   RY   RZ   R[   R_   RF   RN   RQ   (    (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR#    s   	c          C   s~   t  j d  j d d  }  t  j d g d d g d  } t t   i d d g d 6g d d d	 t } | j |  |  d  S(
   Nid   i
   i    i   i   R$  R   Rń   Rģ   (   RI   R   R   R   R-   R#  RÜ   RN   (   RL   R{   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt
   test_refit¦  s
    !c          C   sŗ   t  j d  j d d d d  }  t  j d  j d d d  } d   } d   } t d	 | d
 |  } t | i d d d g d 6 } | j |  |  j t t  t	 | d  s¶ t
  d  S(   Ni
   i   i   i   i   i   c         S   s   |  j  d d k S(   Ni   i   i   i   (   i   i   i   (   RO   (   Rz   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR}   ¹  s    c         S   s   |  j  d d k S(   Ni   i   i   (   i   i   (   RO   (   Rz   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR}   ŗ  s    t   check_Xt   check_yi   RD   R   i2   i   i,  iF   i  (   RI   R   R   R   R-   RN   RT   RL   R{   Rķ   RH   (   t   X_4dt   y_3dR'  R(  R   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_gridsearch_nd³  s    !		c          C   s½   t  j d  j d d  }  t  j d g d d g d  } t d d    } t d d	  } t | i d d
 d	 g d 6d | } | j |  j   |  j	 |  |  t
 | d  s¹ t  d  S(   Nid   i
   i    i   i   R'  c         S   s   t  |  t  S(   N(   R   Rd   (   Rz   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR}   Ē  s    t   n_splitsi   i   RD   R   R   (   RI   R   R   R   R   R&   R-   RN   R  RT   Rķ   RH   (   RL   R{   R   R   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_X_as_listĮ  s    !%"c          C   s½   t  j d  j d d  }  t  j d g d d g d  } t d d    } t d d	  } t | i d d
 d	 g d 6d | } | j |  | j    j	 |  |  t
 | d  s¹ t  d  S(   Nid   i
   i    i   i   R(  c         S   s   t  |  t  S(   N(   R   Rd   (   Rz   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR}   Ō  s    R,  i   i   RD   R   R   (   RI   R   R   R   R   R&   R-   RN   R  RT   Rķ   RH   (   RL   R{   R   R   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_y_as_listĪ  s    !%"c             sP  t  t  f g }  y- d d l m } m } |  j | | f  Wn t k
 rO n Xt j d  j d d  } t j	 d g d d g d  } x½ |  D]µ \      |   |  } }   f d   }  f d	   } t
 d
 | d |  }	 t |	 i d d d g d 6 }
 |
 j | |  j | |  |
 j |  t |
 d  s t  q Wd  S(   Ni’’’’(   t   Seriest	   DataFrameid   i
   i    i   i   c            s   t  |     S(   N(   R   (   Rz   (   t   InputFeatureType(    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   check_dfģ  s    c            s   t  |     S(   N(   R   (   Rz   (   t
   TargetType(    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   check_seriesļ  s    R'  R(  i   i   RD   R   (   R   t   pandasR/  R0  t   appendt   ImportErrorRI   R   R   R   R   R-   RN   RT   RQ   Rķ   RH   (   t   typesR/  R0  RL   R{   t   X_dft   y_serR2  R4  R   R   (    (   R1  R3  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_pandas_inputŪ  s"    !c       	   C   s2  t  d d  \ }  } t d d  } d d g } xh d d g D]Z } t | d t d d d d	 g  d
 | d | } | j |  |  t | j d d  q= Wt | d t d d d d	 g  d
 d } | j |  |  t | j d d  t | d t d d d d	 g  } | j |   t | j d d	  d  S(   NRµ   i    t   adjusted_rand_scoret   fowlkes_mallows_scoret
   param_gridt
   n_clustersi   i   i   R   Rģ   (   R"   R7   R-   t   dictRN   R	   Rø   (   RL   R{   t   kmR   Rģ   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_unsupervised_grid_searchś  s    !!	$c       
   C   s§   d   }  t  d d d d d d d g d d g d d g g  \ } } t t   d t d	 d
 d d g  d |  } | j |  t | j d	 d  t | j d  d  S(   Nc         S   s   |  j  d k r d Sd S(   Ng¹?i*   i    (   t	   bandwidth(   Rć   RL   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   custom_scoring  s    t   cluster_stdg¹?Rµ   i   R¶   i    R>  RC  g{®Gįz?R   i*   (   R"   R-   R8   R@  RN   R	   Rø   R  (   RD  RL   t   _t   search(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_gridsearch_no_predict  s    	*	c          C   sŖ  i d d g d 6t  d d  d 6}  t d |  d d	 d
 d  } g  | D] } | ^ qE } t t |  d	  xJ | D]B } | d d k s t  d | d k oØ d k n sq t  qq Wi d d d d d d d d d d d	 g d 6}  t d |  d d d
 d  } t g  | D] } | ^ q
g  | D] } | ^ q  t d k r¦i t  d d  d 6}  t d |  d d	 d
 d  } t g  | D] } | ^ qzg  | D] } | ^ q n  d  S(   NRž   t   linearR’   i    i   R~   t   param_distributionsRØ   i
   Rµ   i   i   i   i   i   i   i   i	   i   (   Rž   RI  (   i    i   (   R   R0   R	   RG   RH   R   (   RJ  t   samplerRz   t   samplest   sample(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_param_sampler'  s$    *.3c            sć   |  j    t   f d   | D  s+ t  t   f d   | D  sM t  t t   f d   | D   t t   f d   | D   |  j r„ |  j j   n d g } x. | D]& }   d | j	 t
 j k sµ t  qµ Wd  S(   Nc         3   s(   |  ] } t    | t j j  Vq d  S(   N(   R   RI   t   mat   MaskedArray(   Rx   t   param(   t
   cv_results(    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>C  s   c         3   s"   |  ] }   | j  t k Vq d  S(   N(   t   dtypet   object(   Rx   Rē   (   RR  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>E  s    c         3   s(   |  ] } t    | t j j  Vq d  S(   N(   R   RI   RO  RP  (   Rx   Rē   (   RR  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>F  s   c         3   s4   |  ]* } | j  d   s   | j t j k Vq d S(   t   rankN(   t
   startswithRS  RI   t   float64(   Rx   Rē   (   RR  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>H  s   RT   s   rank_test_%s(   R   t   allRH   R   t   anyR   t   multimetric_t   scorer_t   keysRS  RI   t   int32(   RG  t
   param_keyst
   score_keyst   scorer_keysRē   (    (   RR  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   check_cv_results_array_types@  s    	"!c            sT   t  t   j    t | | d   t    f d   | | D  sP t  d  S(   NRW   c         3   s%   |  ] }   | j   f k Vq d  S(   N(   RO   (   Rx   Rē   (   RR  t   n_cand(    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>U  s   (   RW   (   R   Rv   R\  RX  RH   (   RR  R^  R_  Rb  (    (   RR  Rb  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   check_cv_results_keysQ  s    c    
         sÓ  t  d d d d d d  \ }  } d } d } t d	 d
 g d d d g d d d g  t d	 d g d d d g  g } d0 } d1 } | } xEt t f D]7} t t d d&  d' | d( | d) | d* t }	 |	 j |  |  t | |	 j  |	 j	   t
   d d k  st  t   f d+   | D  t   f d,   | D  t |	 | |  t   | | |  |	 j	   t |	 j	 d-  } t t
   f d.   t |  D   t t
   f d/   t |  D   q Wd  S(2   NR¾   i2   Rś   i   Rµ   i*   i   i   R’   Rž   R~   i   i
   R   g¹?t   polyt   degreei   t   param_Ct   param_degreet   param_gammat   param_kernelt   mean_test_scoreRŚ   t   rank_test_scoret   split0_test_scoret   split1_test_scoret   split2_test_scoreR×   RŲ   RŁ   t   std_test_scoreRŪ   t   mean_fit_timet   std_fit_timet   mean_score_timet   std_score_timeR  R   RŌ   R>  RÖ   c         3   s1   |  ]' } | d  k	 r t    | d k  Vq d S(   Rk  i    N(   RX  (   Rx   t   k(   RR  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>v  s    c         3   s=   |  ]3 } d  | k r | d k	 r t    | d k  Vq d S(   t   timeRk  i   N(   RX  (   Rx   Rt  (   RR  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>x  s    RW   c         3   sW   |  ]M }   d  | d k r   d j  | oN   d j  | oN   d j  | Vq d S(   Ri  RI  Rf  Rh  Rg  N(   t   mask(   Rx   Rg   (   RR  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>  s   c         3   sX   |  ]N }   d  | d k r   d j  | oO   d j  | oO   d j  | Vq d S(   Ri  Rž   Rf  Rh  Rg  N(   Rv  (   Rx   Rg   (   RR  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>  s   (   Rf  Rg  Rh  Ri  (   Rj  RŚ   Rk  Rl  Rm  Rn  R×   RŲ   RŁ   Ro  RŪ   Rp  Rq  Rr  Rs  (   R!   R@  R`   RÜ   R-   R4   RN   R	   RŌ   R   RX  RH   R   Ra  Rc  RG   Re   (
   RL   R{   R,  t   n_grid_pointsRW   R^  R_  t   n_candidatesRŌ   RG  (    (   RR  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_cv_resultsY  sD    '!        		c          C   s<  t  d d d d d d  \ }  } d } d } t d	 t d
 d  d t d
 d   } d$ } d% } | } xĻ t t f D]Į } t t d d
  d | d  | d! | d" | d# t }	 |	 j |  |  t | |	 j	  |	 j
 }
 t |	 | |  t |
 | | |  t t t j j |
 d   p0t t j j |
 d    qs Wd  S(&   NR¾   i2   Rś   i   Rµ   i*   i   i   R~   R  i
   R   g¹?Rf  Rh  Rj  RŚ   Rk  Rl  Rm  Rn  R×   RŲ   RŁ   Ro  RŪ   Rp  Rq  Rr  Rs  RØ   R   RŌ   RJ  RÖ   (   Rf  Rh  (   Rj  RŚ   Rk  Rl  Rm  Rn  R×   RŲ   RŁ   Ro  RŪ   Rp  Rq  Rr  Rs  (   R!   R@  R   R`   RÜ   R.   R4   RN   R	   RŌ   R   Ra  Rc  R   RY  RI   RO  t   getmaskarray(   RL   R{   R,  t   n_search_iterRW   R^  R_  Rb  RŌ   RG  RR  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_random_search_cv_results  s6    !'        		R®   c             só  t  d d d g d d g d d g d d g g d d d d d t d d	  \ }  } t j |  j d d
 t j } d | t j | d k  d d  d  d  <d | t j | d k  d d  d  d  <| | g | | g g } t t d d  d i d d g d 6d | d t	 } t
 t d d  d d d i d d g d 6d | d t	 d t	 } x×| | f D]É    j |  |    j s  j d  k st  t j t   f d   t   j  D   }   j d d }   j d d } t j t   f d   t   j  D   }	   j d d }
   j d d } t   j d d d  t | d d d g  t |	 d d g  d# d d d d d } t j d d  | d d d d  | d d d  } t | |  t | |  t | t t d d d d  |  | d |  t |
 d  t | d  q_Wt t d d  d i d d g d 6d | d t d t	 } t
 t d d  d d d i d d g d 6d | d t d t	 } xF| | f D]8    j |  |  t   j  t j t   f d!   t   j  D   }   j d d }   j d d } t j t   f d"   t   j  D   }	   j d d }
   j d d } t   j d d d  t | d d d g  t | t j |   t | t j |   t |
 d  t | d  q³Wd  S($   NR¶   i    i   Rµ   RE  g¹?t   shuffleR¾   iP   RS  i   R   R  R>  i
   R~   R   RÖ   RØ   RJ  RŌ   c         3   s$   |  ] }   j  d  | d Vq d S(   s   split%d_test_scorei    N(   R   (   Rx   t   s_i(   RG  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>Ź  s   Rj  Ro  c         3   s$   |  ] }   j  d  | d Vq d S(   s   split%d_train_scorei    N(   R   (   Rx   R~  (   RG  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>Š  s   RŚ   RŪ   Rf  g      š?g      @g      @i   c         3   s$   |  ] }   j  d  | d Vq d S(   s   split%d_test_scorei    N(   R   (   Rx   t   s(   RG  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>ł  s   c         3   s$   |  ] }   j  d  | d Vq d S(   s   split%d_train_scorei    N(   R   (   Rx   R  (   RG  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>’  s   g      š?(   R"   R`   RI   R   RO   t   boolt   whereR-   R4   RÜ   R.   RN   RŌ   R_   RH   R   Rd   Re   t	   n_splits_R   R	   R   t   sqrtR   R%   R   R  t   std(   RL   R{   Rv  R   R   Rļ   t   test_cv_scorest	   test_meant   test_stdt   train_cv_scorest
   train_meant	   train_stdt   expected_test_meant   expected_test_std(    (   RG  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_search_iid_param°  sz    6**%		c          C   s4  t  d d d d d d  \ }  } d } t d d	 g d
 d d g d d d g  t d d g d d d g  g } x¾ t t f D]° } g  } x i t t  d 6t t  d 6d d f D]f } t t d d  d | d | d | d | d t } | j	 |  |  t
 | j |  | j |  q² Wt d | |  q| Wd  S(   NR¾   i2   Rś   i   Rµ   i*   i   R’   Rž   R~   i   i
   R   g¹?Rd  Re  i   R·   Rō   R  R   RŌ   R>  R   Rģ   (   R!   R@  R`   RÜ   R<   R;   R:   R-   R4   RN   R	   RŌ   R6  t*   compare_cv_results_multimetric_with_single(   RL   R{   R,  RW   RŌ   t   grid_searchesR   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt'   test_grid_search_cv_results_multimetric  s     !'!c          C   sl  t  d d d d d d  \ }  } d } d } d } t d t j d d  d t j d d d d  } x’ t t f D]ń } xč t t f D]Ś } g  } x d D] } | rĆ t | t  rŗ d	 n | } n  t d t d d  }	 t	 |	 d | d | d | d | d | d | d d }
 |
 j
 |  |  | j |
  q Wt d | |  | r t | d | d |  q q Wqs Wd  S(   NR¾   i2   Rś   i   Rµ   i*   i   i   R·   Rō   R~   iö’’’i   R   iū’’’i    t   baseg¹?t   probabilityRØ   R   RŌ   RJ  R   Rģ   (   R·   Rō   (   R·   Rō   (   (   R·   Rō   R·   Rō   (   R!   R@  RI   t   logspaceRÜ   R`   R   Ru   R4   R.   RN   R6  R  t)   compare_refit_methods_when_refit_with_acc(   RL   R{   R,  R{  R   RW   RŌ   Rģ   t   random_searchesR   Rļ   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt)   test_random_search_cv_results_multimetric(  s0    !3
c            sĪ   t  |  j |  |  j s t  t t |  j  d  |  j   d   | j j   D } | j	 d   | j j   D  t
 t   f d   d D   t j j  d
     j   D d   | j   D  d S(   s   Compare multi-metric cv_results with the ensemble of multiple
    single metric cv_results from single metric grid/random searchR·   Rō   c         S   s.   i  |  ]$ \ } } | t  j d  d |   q S(   s   _score$t	   _accuracy(   t   ret   sub(   Rx   Rt  t   v(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys
   <dictcomp>S  s   	c         S   s.   i  |  ]$ \ } } | t  j d  d |   q S(   s   _score$t   _recall(   R  R  (   Rx   Rt  R  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys
   <dictcomp>U  s   	c         3   s(   |  ] } t  j   | d  k  Vq d S(   i   N(   RI   RX  (   Rx   Rt  (   t   cv_results_multi(    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>Z  s    Rr  Rs  Rp  Rq  c         S   s.   i  |  ]$ \ } } | j  d   s | |  q S(   t   _time(   t   endswith(   Rx   Rt  R  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys
   <dictcomp>a  s   	 	c         S   s.   i  |  ]$ \ } } | j  d   s | |  q S(   R  (   R  (   Rx   Rt  R  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys
   <dictcomp>c  s   	 	N(   R·   Rō   (   Rr  Rs  Rp  Rq  (   R	   RŌ   RZ  RH   R   Rv   R[  R   Rw   t   updateR   RX  RI   t   testing(   t   search_multit
   search_acct
   search_recRŌ   t   cv_results_acc_rec(    (   R  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR  H  s    	 c         C   sģ   | r t  |  j d  n t |  j  t  | j |  t d d d d d d  \ } } x9 d D]1 } t t |  |  |  t | |  |   q^ Wt |  j | |  | j | |   x- d D]% } t  t |  |  t | |   qæ Wd S(   sD   Compare refit multi-metric search methods with single metric methodsR·   R¾   id   Rś   i   Rµ   i*   RQ   R\   R]   Rņ   R  Rø   N(   RQ   R\   R]   (   Rņ   R  Rø   (   R	   Rģ   R   R"   R   R÷   RT   (   R”  R¢  Rģ   RL   R{   t   methodRē   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR  g  s    !%c          C   sP  t  d d d d  \ }  } i d d d g d 6} t t d	 d
  d | d t } t t d	 d
  d d d | d t } xŠ | | f D]Ā } | j |  |  | j } t | d d | d d  t | d d | d d  t t	 j
 | d d | d d   t t	 j
 | d d | d d   t | j d d d d g  q Wd  S(   NR¾   i2   Rµ   i*   i   gj¼tš?gü©ńŅMbP?R~   R   R  R>  RÖ   RØ   i   RJ  Rj  i    RŚ   i   Rk  (   R"   R-   R4   RÜ   R.   RN   R   R   R   RI   Rą   (   RL   R{   R>  R   Rļ   RG  RR  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt(   test_search_cv_results_rank_tie_breakingx  s&    			c          C   s¾   d g d g d g d g d g g d d d d d g }  } t    t   f } i d d  g d 6} t d d  } xI | D]A } t | | d | j |  |  } t | j d	 d d  g  qu Wd  S(
   Ni   i   i   i   i   i    Rµ   R   t   param_random_state(   R5   R6   R_   R&   R-   RN   R   R   (   RL   R{   Rį   t   est_parametersR   t   estR   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt!   test_search_cv_results_none_param  s    :c       	   C   sĖ  t  d d  }  d g d g d g d g g } d d d d g } t |  i d d g d 6d d d	 d } t |  i d d g d 6d d d	 d d
 d } x/| | f D]!} | j | |  xX d d g D]J } t j | j | d k  sķ t  t j | j | d k   sÅ t  qÅ Wxp d d g D]b } | j | d d k sCt  | j | d d k s`t  t j | j | d k   s t  q Wt | d  st  t	 | j
 t  s³t  t | j
 d  q¢ Wd  S(   NRµ   i    i   i   i   i   R~   R   R„   RØ   Rp  Rq  Rr  Rs  g        t   refit_time_(   R3   R-   R.   RN   RI   RX  R   RH   Rķ   R   R«  t   floatR   (   t   svcRL   R{   RŃ   t   rsRG  Rē   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_search_cv_timingØ  s"    (."&&c             s  d }  t  d d  } t d d d d  \ } } d d d g } xŹd	 d
 g D]¼} t | i | d 6d | d |    j | |  j } t | j    } d t d   t |   D  } t	 t
 j | |   sŁ t  t d |   }	  j }  xt |  D]\   }
 | j d |
  t
 j t    f d   t |   D   } x¹ t |	 j | |   D] \ } \ } } | j | | | |  | d	 k rŗt | | | j | |   } n5 | d
 k rļ| j | |  } t | | |  } n  t | | |  qaWqž WqL Wd  S(   Ni   Rµ   i    R¶   i   g¹?i   i
   R  RĮ   R~   R   R   Rj  Rk  c         s   s   |  ] } d  | Vq d S(   s   split%d_test_scoreN(    (   Rx   t   cv_i(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>Ņ  s   R,  c         3   s$   |  ] }  j  d  |   Vq d S(   s   split%d_test_scoreN(   R   (   Rx   R  (   t   candidate_iR   (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>Ū  s   (   Rj  Rk  (   R3   R"   R-   RN   R   Rd   R\  Ru   Re   RX  RI   t   in1dRH   R'   R  t	   enumerateRX   R   t   splitR9   RQ   R^   R=   R   (   R,  R   RL   R{   Rŗ   RT   RR  t   result_keyst   expected_keysR   R~   t	   cv_scoresRg   t   traint   testt   correct_scoret   dec(    (   R±  R   sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt&   test_grid_search_correct_score_resultsÄ  s6    "		+#c          C   sk  t  d d  \ }  } t d d  } t d d  } t t  } xó i d d 6i d d 6i d d 6f D]Ķ } xÄ | j |  |  D]° \ } } t |  | t |  | | | | d t \ } }	 }
 t |  j	 |   } | j
 |  | | |  | | |  | | |  } t | |  t | |	  t |
 | j  q} Wqd Wt t d t |  | | | | | i | d	 6d t 
d  S(
   NRµ   i    g¹?R~   g{®Gįz?gü©ńŅMbP?R   sS   For evaluating multiple scores, use sklearn.model_selection.cross_validate instead.RT   (   R!   R'   R3   R<   R;   R“  R$   R   R`   RX   RN   R   R	   t   sizeR   R   RÜ   (   RL   R{   R   R­  t   scorerRW   Rø  R¹  t   this_scorest   this_paramst   n_test_samplesR©  t   expected_score(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_fit_grid_pointč  s$    +	c          C   sė   t    }  t |  i d d d g d 6d t } | j t t  t j t j |   } t	 | j
 t  | j
 t   t |  i d d d g d 6d t d d } | j t t  t j t j |   } t	 | j
 t  | j
 t   d  S(   Ni   i   i   RD   Rģ   RØ   (   RC   R-   RÜ   RN   RL   R{   t   picklet   loadst   dumpsR   RQ   R.   (   R   R   t   grid_search_pickledRļ   t   random_search_pickled(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_pickle  s    	%c          C   sG  t  d t d d  \ }  } i d d d d g d 6} t d d  } t d d  t d d  g } xė | D]ć } t | | d	 | } | j |  |  | j d
 } xØ t t	 |   D] } | j
 | |   xz t | j |  |   D]` \ }	 \ }
 } | j |  |
 | |
  | j |  | | |  } t | | j d |	 |  qć Wq³ Wqh Wxń | D]é } t | | d	 | d d } | j |  |  | j d
 } xØ t t	 |   D] } | j
 | |   xz t | j |  |   D]` \ }	 \ }
 } | j |  |
 | |
  | j |  | | |  } t | | j d |	 |  q×Wq§WqVWd  S(   Nt   return_indicatorRµ   i    i   i   i   i   t	   max_depthR   RW   s   split%d_test_scoreRØ   (   R#   RÜ   R&   R5   R6   R-   RN   R   Re   RG   RX   R³  R“  RT   R   R.   (   RL   R{   RØ  R   Rį   R©  R   t
   res_paramst   cand_iRg   Rø  R¹  Rŗ  Rļ   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt&   test_grid_search_with_multioutput_data  s@    +"+	c          C   s}   t  j d  j d d  }  d d d d d g } t d d d t  } t | i  d	 d
 j |  |  } t t | d   d  S(   Ni   i   i’’’’i    i   R   R  R  R   i   R\   (	   RI   R   R   R4   R`   R-   RN   R   Rķ   (   RL   R{   R   RŃ   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_predict_proba_disabledG  s
    !c          C   sø   t  j d d t  j j d d  }  t  j |  d d  d   f <d d d d d g } t d t d	 d
 d t  j  f d t   f g  } t | i d d d g d 6d d j	 |  |  d  S(   Ni   RS  i   i’’’’i   i    i   t   imputert   strategyR  t   missing_valuest
   classifieri   t   classifier__foo_paramR   (
   RI   R   RW  R   t   nanR?   R>   RC   R-   RN   (   RL   R{   Ry   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_grid_search_allows_nansQ  s    $t   FailingClassifierc           B   sD   e  Z d  Z d Z d d  Z d d  Z d   Z d d d  Z RS(   s,   Classifier that raises a ValueError on fit()i   c         C   s   | |  _  d  S(   N(   R$  (   RE   R$  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRF   c  s    c         C   s%   |  j  t j k r! t d   n  d  S(   Ns%   Failing classifier failed as required(   R$  R×  t   FAILING_PARAMETERR   (   RE   RL   R{   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRN   f  s    c         C   s   t  j | j d  S(   Ni    (   RI   R    RO   (   RE   RL   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRQ   j  s    c         C   s   d S(   Ng        (    (   RE   RL   RM   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRT   m  s    N(	   RY   RZ   R[   RŲ  R_   RF   RN   RQ   RT   (    (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR×  ^  s   	c       
      s·  t  d d d d d d  \ }  } t   } t | i d d d g d	 6g d
 d d t d d  t t  j |  |  t  j d  }  f d     t	    f d   t
 |  D  sĮ t  t | i d d d g d	 6g d
 d d t d t d   t t  j |  |  t  j d  } t	    f d   t
 |  D  sOt   j d } | d d k r|| d d k st  | | j d k st   j | j k s³t  d  S(   NR¾   i   Rś   i
   Rµ   i    i   i   R$  R   R·   Rģ   R„   g        RW   c            s/   t  j t    f d   t  j  D   S(   Nc         3   s$   |  ] }   j  d  |  Vq d S(   s   split%d_test_scoreN(   R   (   Rx   R  (   RŃ   Rg   (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>  s   (   RI   R   Rd   Re   R  (   Rg   (   RŃ   (   Rg   sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   get_cand_scores  s    c         3   sD   |  ]: }  j  d  | t j k r t j   |  d k  Vq d S(   t   param_parameterg        N(   R   R×  RŲ  RI   RX  (   Rx   RĶ  (   RŁ  RŃ   (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>  s   RÕ  c         3   sG   |  ]= }  j  d  | t j k r t j t j   |    Vq d S(   RŚ  N(   R   R×  RŲ  RI   RX  t   isnan(   Rx   RĶ  (   RŁ  RŃ   (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>  s   Rk  i   (   R!   R×  R-   R`   R   R2   RN   RG   R   RX  Re   RH   R¬  RŲ  Rņ   (   RL   R{   R   Rx  t   ranks(    (   RŁ  RŃ   sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt#   test_grid_search_failing_classifierq  s&    !	%%&c       	   C   sx   t  d d d d d d  \ }  } t   } t | i d d d g d	 6g d
 d d t d d } t t | j |  |  d  S(   NR¾   i   Rś   i
   Rµ   i    i   i   R$  R   R·   Rģ   R„   R¦   (   R!   R×  R-   R`   R   R   RN   (   RL   R{   R   RŃ   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt)   test_grid_search_failing_classifier_raise”  s
    !	%c    
      C   sČ  i d d g d 6d d d g d 6}  t  |  d d	 } d	 } d
 } d | | | f } t t | t |  t  |  d d
 } t |  } t t |  d
  x& t |   D] } | | k s„ t  q„ Wi t d  d 6t d  d 6t d  d 6}  t  |  d d d d } t |  } t t |  d  g  | D]% } d | d | d | d f ^ q,} t t t	 |   d  i t
 d  d 6d d d g d 6}	 t  |	 d d	 } t |  } t t |  d	  d  S(   Ni    i   t   firstt   at   bt   ct   secondRØ   i   i   s}   The total space of parameters %d is smaller than n_iter=%d. Running %d iterations. For exhaustive searches, use GridSearchCV.i
   ic   Rµ   i*   s	   a%db%dc%dg      ą?(   R0   R   t   UserWarningRd   R	   RG   R/   RH   Re   R   R   (
   RW   RK  RØ   t	   grid_sizeR³   RL  t   valuesRy   t   hashable_samplest   params_distribution(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt#   test_parameters_sampler_replacement²  s0    #	
-/#c          C   s  i d g d 6}  t  j d  j d d  } d d d d d d g } t d t d	 d
 d d  d |   } t t | d   | j | |  | j |  | j	 |  i d g d 6}  t d t d	 d
 d d  d |   } t t | d   | j | |  t t | d   d  S(   Nt   logt   lossi   i   i’’’’i    i   Rć   t   tolgü©ńŅMbP?t   hingeR>  R\   (
   RI   R   R   R-   RA   R   Rķ   RN   R\   R]   (   R>  RL   R{   R   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt#   test_stochastic_gradient_loss_paramÖ  s"    		c          C   s{   t  j d  j d d  }  d d d d d d g } t d d  } t | d i d d g d	 6d
 t } | j |  |  d  S(   Ni   i’’’’i    i   Rµ   R>  g¹?gÉ?R~   RÖ   (   RI   R   R   R3   R-   R`   RN   (   RL   R{   R   RŃ   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt%   test_search_train_scores_set_to_falseö  s    	c    	         s  d }  d } t  d |  d d  \ } } t t d d  d i d d d	 g d
 6d t d | d |   d t     j | |  t t d d  d i d d d	 g d
 6d t d |  d t } | j | |  t t t d | d t d d  j	 | |  t
   t t d d  d i d d d	 g d
 6d t d | d t d d  j	 | |  d t } | j | |  t t d d  d i d d d	 g d
 6d t d | d t d d  d t } | j | |  d   } t j j | | j  | | j   t j j d     j j   D d   | j j   D  t t d d  d i d d d d g d
 6d t d | d t  d t     j | |  x d D]y  i  } x@ t d  D]2  t     f d   t d  D  |  <q„Wt | d | d  t | d | d  qWd  S(   Nid   i   R¾   Rµ   i    R>  g¹?gÉ?g333333Ó?R~   R   R,  RÖ   R}  c         S   s"   x d D] } |  j  |  q W|  S(   NRp  Rq  Rr  Rs  (   Rp  Rq  Rr  Rs  (   t   pop(   RR  Rē   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   _pop_time_keys&  s    
c         S   s.   i  |  ]$ \ } } | j  d   s | |  q S(   R  (   R  (   Rx   Rt  R  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys
   <dictcomp>7  s   	 	c         S   s.   i  |  ]$ \ } } | j  d   s | |  q S(   R  (   R  (   Rx   Rt  R  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys
   <dictcomp>9  s   	 	Rø  R¹  i   c         3   s*   |  ]  }   j  d  |  f  Vq d S(   s   split%d_%s_scoreN(   R   (   Rx   R  (   RŃ   t   param_it
   score_type(    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pys	   <genexpr>K  s   i   i   i   (   Rø  R¹  (   R!   R-   R3   RB   RÜ   RN   R&   R   R   R“  R   RI   R   R	   R   Rw   Re   Rd   R   (	   R¾   R,  RL   R{   t   gs2t   gs3t   gs4Rń  t   per_param_scores(    (   RŃ   Rņ  Ró  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt&   test_grid_search_cv_splits_consistency  s^    		
			

c          C   sg   t    }  t |  i d d d g d 6d d } | j t t  | j | j t   } t t |  d  S(   Ni   i   i   RD   R   (   RC   R-   RN   RL   R{   RS   RR   R   (   R   R   t   X_round_trip(    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt+   test_transform_inverse_transform_round_tripT  s
    	%c             sW  d       f d    d t  f     f d     Y  t d d   t d d d	 d
 d d  \      d d d t j    }   i d d g d 6i d d g d 6g  } |  j }  | |  xz t |  D]l } | d j   rć | d d k rć | d d d h k rć t | |  t |  |  k sOt	 d |   qć qć Wd  S(   Nc         S   sĀ   | j  } t |  j    t |  k s- t  x |  D] } | j d  s4 t j |  |  |  | <|  | j j d k r t	 | | |  | d d | qŗ t
 | | |  | d d | q4 q4 Wd  S(   NR  t   Ot   err_msgs	   Checking (   R   Rv   R\  RH   R  RI   t
   asanyarrayRS  t   kindR   R   (   t   resultst   gscvt   exp_resultsRt  (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   check_results`  s    	$c            s%   t   |  d d d t j     S(   NR   i   RÖ   (   R-   RÜ   RN   (   R>  (   RL   R   R{   (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   fit_gridn  s    t   CustomSearchCVc              s)   e  Z   f d    Z   f d   Z RS(   c            s   t    |   j | |  d  S(   N(   t   superRF   (   RE   Rć   t   kwargs(   R  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRF   s  s    c            s   | i d d 6i d d 6g  }   |  i d d g d 6  | i d d 6i d d 6g  }   |  i d d g d 6i d d g d 6g   d  S(   Ni   RĖ  i   i   t   min_samples_spliti
   (    (   RE   t   evaluateR’  (   R  R  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   _run_searchv  s      (   RY   RZ   RF   R	  (    (   R  R  R  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR  r  s   Rµ   i    R¾   id   t   n_informativei   R   i   RÖ   i   i   RĖ  i
   R  i’’’’RF  R   R   R«  s   Attribute %s not equal(
   R1   R5   R!   RÜ   RN   R   t   dirt   islowerR÷   RH   (   t   mycvR   R’  t   attr(    (   R  RL   R  R   R  R{   sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_custom_run_search_  s"    	"$	 	!c              s   d t  f  f d     Y  t   d d j t t  d t  f   f d     Y  t j t d d $   t   d d j t t  Wd  QXd  S(	   Nt   NoRunSearchSearchCVc              s&   e  Z   f d    Z d d d  Z RS(   c            s   t    |   j | |  d  S(   N(   R  RF   (   RE   Rć   R  (   R  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRF     s    c         [   s   |  S(   N(    (   RE   RL   R{   RĖ   RŖ   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRN     s    N(   RY   RZ   RF   R_   RN   (    (   R  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR    s   R   i   t   BadSearchCVc              s   e  Z   f d    Z RS(   c            s   t    |   j | |  d  S(   N(   R  RF   (   RE   Rć   R  (   R  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyRF     s    (   RY   RZ   RF   (    (   R  (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyR    s   Rj   s   _run_search not implemented.(   R1   R4   RN   RL   R{   Rk   Rl   t   NotImplementedError(    (    (   R  R  sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test__custom_fit_no_run_search  s    
c          C   sM  d }  t  d d d d d d  \ } } t t d d	 d d  d
 i d g d 6d d } t | j | |  t t d d	 d d  d
 i d g d 6d d } t t |  | j | |  t t d d	 d d  d
 i d g d 6d d } t t |  | j | |  t t d d	 d d  d
 i d g d 6d t d  } t | j | |  d  S(   NsQ   The default of the `iid` parameter will change from True to False in version 0.22R¾   i6   Rµ   i    R¶   i   R   R  R>  i
   R~   R   i   i   (   R"   R-   R4   R   RN   R   R«   R&   (   t   depr_messageRL   R{   Rf   (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   test_deprecated_grid_search_iid„  s    !(°   R[   t   sklearn.externals.six.movesR    R   R   t	   itertoolsR   R   RÄ  R   R8  R   R  R°   t   numpyRI   t   scipy.sparset   sparseR  Rk   t   sklearn.utils.fixesR   R   R   R   R   R   t   sklearn.utils.testingR	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   t   sklearn.utils.mockingR   R   t   scipy.statsR   R   R   t   sklearn.baseR   R   t   sklearn.exceptionsR   R    t   sklearn.datasetsR!   R"   R#   t   sklearn.model_selectionR$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   t   sklearn.model_selection._searchR1   t#   sklearn.model_selection._validationR2   t   sklearn.svmR3   R4   t   sklearn.treeR5   R6   t   sklearn.clusterR7   t   sklearn.neighborsR8   t   sklearn.metricsR9   R:   R;   R<   R=   t   sklearn.imputeR>   t   sklearn.pipelineR?   t   sklearn.linear_modelR@   RA   t$   sklearn.model_selection.tests.commonRB   RT  RC   Ra   R   RL   R{   Rh   t   markt   parametrizeR¹   Rp   R   R²   R   R¤   R§   R©   R¬   R“   R½   RŹ   RÓ   Rź   Rī   Rš   Rł   Rż   R  R  R  R  R  R!  R"  R#  R&  R+  R-  R.  R;  RB  RH  RN  Ra  Rc  Ry  R|  R«   R  R  R  R  R  R¦  RŖ  RÆ  R¼  RĆ  RÉ  RĪ  RĻ  RÖ  R×  RŻ  RŽ  Ré  Rī  Rļ  Rų  Rś  R  R  R  (    (    (    sH   lib/python2.7/site-packages/sklearn/model_selection/tests/test_search.pyt   <module>   sD  &3		%	%	$	&
$				4	#b		 		 $.
0	$R
	1	