ó
‡ˆ\c        
   @   sc  d  d l  Z  d  d l Z d  d l Z d  d l j Z d  d l m Z m	 Z	 m Z d  d l
 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 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# 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. m/ Z/ m0 Z0 m1 Z1 m2 Z2 m3 Z3 m4 Z4 d  d g d d g d d g g Z5 e j6 e5 ƒ Z7 d d d g Z8 d d d g Z9 e ƒ  Z: d „  Z; e
 j< j= d ƒ e
 j< j= d ƒ d  „  ƒ ƒ Z> e
 j< j= d ƒ d! „  ƒ Z? e
 j< j= d ƒ d" „  ƒ Z@ d# „  ZA e( d$ „  ƒ ZB e
 j< j= d ƒ e
 j< j= d ƒ d% „  ƒ ƒ ZC d& „  ZD e
 j< jE d' d( d) d* d+ g ƒ d, „  ƒ ZF e
 j< jE d- e- e/ g ƒ d. „  ƒ ZG e
 j< jE d/ e- i  eH f e/ i d0 d1 6eI f g ƒ d2 „  ƒ ZJ e
 j< jE d' d( d) d* d+ g ƒ d3 „  ƒ ZK d4 „  ZL e
 j< j= d ƒ e
 j< j= d ƒ d5 „  ƒ ƒ ZM e
 j< j= d ƒ e
 j< j= d ƒ d6 „  ƒ ƒ ZN e
 j< j= d ƒ e
 j< j= d ƒ d7 „  ƒ ƒ ZO e
 j< j= d ƒ e
 j< j= d ƒ d8 „  ƒ ƒ ZP d9 „  ZQ d: „  ZR d; „  ZS d< „  ZT d= „  ZU e
 j< j= d> ƒ d? „  ƒ ZV e
 j< j= d> ƒ e
 j< jE d@ dA dB g f dC dD dE g f dF dD dE g f dG dB g f dH dD dE g f g ƒ dI „  ƒ ƒ ZW e
 j< j= d> ƒ dJ „  ƒ ZX e
 j< j= d ƒ e
 j< j= d> ƒ dK „  ƒ ƒ ZY dL „  ZZ dM „  Z[ dN „  Z\ dO „  Z] e
 j< j= d> ƒ dP „  ƒ Z^ e
 j< j= d> ƒ dQ „  ƒ Z_ dR „  Z` dS „  Za e
 j< j= d> ƒ dT „  ƒ Zb dU „  Zc dV „  Zd e
 j< j= d> ƒ dW „  ƒ Ze e
 j< j= d ƒ e
 j< j= d> ƒ dX „  ƒ ƒ Zf dY „  Zg e
 j< j= d ƒ e
 j< j= d ƒ dZ „  ƒ ƒ Zh d[ „  Zi d\ „  Zj e
 j< j= d ƒ e
 j< j= d> ƒ e
 j< jE d] d^ g ƒ e
 j< jE d_ d` da g ƒ db „  ƒ ƒ ƒ ƒ Zk dc „  Zl dd „  Zm e
 j< jE d' d) de d* d+ d( g ƒ df „  ƒ Zn e
 j< jE d' du ƒ e
 j< jE dg eH eI f ƒ e
 j< jE dh eH eI f ƒ e
 j< jE di dj dk g ƒ dl „  ƒ ƒ ƒ ƒ Zo dm „  Zp e
 j< jE di dj dk g ƒ dn „  ƒ Zq do „  Zr dp „  Zs e
 j< jE dq e- dr d ƒ e/ dr d d1 ds ƒ g ƒ e
 j< jE d' de d( d) d* d+ g ƒ dt „  ƒ ƒ Zt d S(v   iÿÿÿÿN(   t   linalgt   optimizet   sparse(   t   clone(   t	   load_irist   make_classification(   t   log_loss(   t
   get_scorer(   t   StratifiedKFold(   t   LabelEncoder(   t   compute_class_weightt	   _IS_32BIT(   t   assert_almost_equal(   t   assert_allclose(   t   assert_array_almost_equal(   t   assert_array_equal(   t   assert_equal(   t   assert_greater(   t   assert_raise_message(   t   assert_raises(   t   assert_warns(   t   ignore_warnings(   t   assert_warns_message(   t   assert_no_warnings(   t   skip_if_no_parallel(   t   ConvergenceWarning(   t   ChangedBehaviorWarning(   t   LogisticRegressiont   logistic_regression_patht   LogisticRegressionCVt   _logistic_loss_and_gradt   _logistic_grad_hesst   _multinomial_grad_hesst   _logistic_losst   _log_reg_scoring_pathi    i   i   c         C   s×   t  | ƒ } t j | ƒ } | j d } |  j | | ƒ j | ƒ } t |  j | ƒ t | j | f ƒ t | | ƒ |  j	 | ƒ } t | j | | f ƒ t
 | j d d ƒ t j | ƒ ƒ t | j d d ƒ | ƒ d S(   s;   Check that the model is able to fit the classification datai    t   axisi   N(   t   lent   npt   uniquet   shapet   fitt   predictR   t   classes_R   t   predict_probaR   t   sumt   onest   argmax(   t   clft   Xt   yt	   n_samplest   classest	   n_classest	   predictedt   probabilities(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   check_predictions.   s    "s&   ignore: Default solver will be changeds    ignore: Default multi_class willc           C   s²   t  t d d ƒ t t ƒ t  t d d ƒ t t ƒ t  t d d d d ƒ t t ƒ t  t d d d d ƒ t t ƒ t  t d t d d ƒ t t ƒ t  t d t d d ƒ t t ƒ d  S(   Nt   random_statei    t   Cid   t   fit_intercept(   R7   R   R0   t   Y1t   X_spt   False(    (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_predict_2_classes@   s    c          C   s'  d }  t  t |  t d d ƒ j t t ƒ t  t |  t d d ƒ j t t ƒ d }  t  t |  t d d d d	 ƒ j t t ƒ x¨ t t g D]š } d
 }  t  t |  | d d ƒ j t t ƒ t  t |  | d d ƒ j t t ƒ d }  t  t |  | d d ƒ j t t ƒ t  t |  | d d ƒ j t t ƒ q… Wd  S(   Ns   Penalty term must be positiveR9   iÿÿÿÿt   tests   is not a valid scoring valuet   scorings
   bad-scorert   cvi   s0   Tolerance for stopping criteria must be positivet   tols,   Maximum number of iteration must be positivet   max_iter(   R   t
   ValueErrorR   R(   R0   R;   R   (   t   msgt   LR(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt
   test_errorQ   s     			
"""c          C   s
  d t  f d „  ƒ  Y}  |  ƒ  } d d d d g } d } t d | d | d	 | ƒ } | j t t ƒ | j d
 | d k s t ‚ | j | t | ƒ k sž t ‚ d
 | _ t	 j
 t ƒ   | j t | j t ƒ ƒ } Wd  QX| | j d
 k sñ t ‚ | j d k st ‚ d  S(   Nt
   MockScorerc           B   s   e  Z d  „  Z d d „ Z RS(   c         S   s"   d |  _  d d d d g |  _ d  S(   Ni    gš™™™™™¹?gš™™™™™Ù?gš™™™™™é?g      à?(   t   callst   scores(   t   self(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   __init__m   s    	c         S   s0   |  j  |  j t |  j  ƒ } |  j d 7_ | S(   Ni   (   RJ   RI   R$   (   RK   t   modelR0   R1   t   sample_weightt   score(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   __call__q   s    N(   t   __name__t
   __module__RL   t   NoneRP   (    (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyRH   l   s   	i   i   i   i   t   CsR@   RA   i    (   t   objectR   R(   R0   R;   t   C_t   AssertionErrorRI   R$   t   pytestt   warnsR   RO   R)   RJ   (   RH   t   mock_scorerRT   RA   t   lrt   custom_score(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logistic_cv_mock_scoreri   s    
		!c          C   sr   t  d d d d ƒ }  |  j t t ƒ t j d  ƒ   } |  j t |  j t ƒ ƒ Wd  QXt	 | ƒ d k sn t
 ‚ d  S(   NRA   i   t   multi_classt   ovri    (   R   R(   R0   R;   RX   RY   RS   RO   R)   R$   RW   (   R[   t   record(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt/   test_logistic_cv_score_does_not_warn_by_defaultŒ   s
    c          C   s]   t  j j \ }  } t  j t  j } t d d d d d d ƒ } t t d | j t  j | ƒ d  S(   Nt   solvert	   liblinearR^   R_   t   n_jobsi   s\   'n_jobs' > 1 does not have any effect when 'solver' is set to 'liblinear'. Got 'n_jobs' = 2.(	   t   irist   dataR'   t   target_namest   targetR   R   t   UserWarningR(   (   R2   t
   n_featuresRh   R[   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_lr_liblinear_warning•   s    c           C   s6   t  t d d ƒ t t ƒ t  t d d ƒ t t ƒ d  S(   NR9   i
   (   R7   R   R0   t   Y2R<   (    (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_predict_3_classes¢   s    c          C   s·  t  j j \ }  } t  j t  j } xŽt d t t  j ƒ d d d d ƒ t d t t  j ƒ d d d d ƒ t d t t  j ƒ d d d d ƒ t d t t  j ƒ d d	 d
 d d d d d ƒ t d t t  j ƒ d d d
 d d d d d ƒ g D]É } | j t  j | ƒ t t	 j
 | ƒ | j ƒ | j t  j ƒ } t t	 j | | k ƒ d ƒ | j t  j ƒ } t | j d d ƒ t	 j |  ƒ ƒ t  j | j d d ƒ } t t	 j | | k ƒ d ƒ qæ Wd  S(   NR9   Rb   Rc   R^   R_   t   lbfgst   multinomials	   newton-cgt   sagRB   g{®Gáz„?R8   i*   t   sagagffffffî?R#   i   (   Re   Rf   R'   Rg   Rh   R   R$   R(   R   R%   R&   R*   R)   R   t   meanR+   R   R,   R-   R.   (   R2   Rj   Rh   R/   t   predR6   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_predict_iris©   s*    !!Rb   Rn   s	   newton-cgRp   Rq   c         C   sM   t  d d d |  d d ƒ } t t | j d d g d d g g d d g ƒ d  S(   NR9   iÿÿÿÿRb   R^   Ro   i    i   (   R   R   RD   R(   (   Rb   R[   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_multinomial_validationË   s    RF   c         C   sf  t  j t  j } } d } |  d d d d ƒ } t t | | j | | ƒ d } |  d d d d ƒ } t t | | j | | ƒ d } |  d d	 d d
 ƒ } t t | | j | | ƒ xU d d d g D]D } d | } |  d | d d d d ƒ } t t | | j | | ƒ q¿ WxX d d d d g D]D } d | } |  d | d t d d ƒ } t t | | j | | ƒ qWd  S(   Nsp   Logistic Regression supports only solvers in ['liblinear', 'newton-cg', 'lbfgs', 'sag', 'saga'], got wrong_name.Rb   t
   wrong_nameR^   R_   sD   multi_class should be 'multinomial', 'ovr' or 'auto'. Got wrong_names	   newton-cgs8   Solver liblinear does not support a multinomial backend.Rc   Ro   Rn   Rp   s5   Solver %s supports only l2 penalties, got l1 penalty.t   penaltyt   l1Rq   s1   Solver %s supports only dual=False, got dual=Truet   dual(   Re   Rf   Rh   R   RD   R(   t   True(   RF   R0   R1   RE   R[   Rb   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_check_solver_optionÑ   s(    s   model, params, warn_solveri   RA   c         C   sä   |  d d |  } |  d d |  } |  d d d d |  } d } d } | rp t  t | | j t j t j ƒ n t | j t j t j ƒ t  t | | j t j t j ƒ t | j t j t j d k ƒ t | j t j t j ƒ d  S(   NR^   R_   Rb   Rn   s)   Default solver will be changed to 'lbfgs's,   Default multi_class will be changed to 'autoi    (   R   t   FutureWarningR(   Re   Rf   Rh   R   (   RM   t   paramst   warn_solvert   clf_solver_warningt   clf_multi_class_warningt   clf_no_warningst   solver_warning_msgt   multi_class_warning_msg(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt!   test_logistic_regression_warningsñ   s    			c      	   C   s3  t  j d k j t j ƒ } t j d d g ƒ | } t d |  d d d d d	 d
 ƒ } | j t  j | ƒ t	 | j
 j d t  j j d f ƒ t	 | j j d ƒ t | j t  j ƒ | ƒ t d |  d d d d d t ƒ } | j t  j | ƒ | j t j | j t  j ƒ d d ƒ} t t j | | k ƒ d ƒ d  S(   Ni    t   setosas
   not-setosaRb   R^   Ro   R8   i*   RC   iÐ  i   R:   R#   gÍÌÌÌÌÌì?(   i   (   Re   Rh   t   astypeR%   t   intpt   arrayR   R(   Rf   R   t   coef_R'   t
   intercept_R   R)   R=   R*   R.   t   predict_log_probaR   Rr   (   Rb   Rh   R/   t   mlrRs   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_multinomial_binary
  s    #
c          C   s¤   t  ƒ  \ }  } t d d d d ƒ } | j |  | ƒ | j |  ƒ } | j |  ƒ } t j | ƒ t j | ƒ t j | ƒ } t j d | | f } t | | ƒ d  S(   NR^   Ro   Rb   Rq   i   (	   R   R   R(   t   decision_functionR+   R%   t   expt   c_R   (   R0   R1   R/   t   decisiont   probat   expected_proba_class_1t   expected_proba(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt%   test_multinomial_binary_probabilities   s    c    	      C   së   t  j j \ }  } t  j t  j } t d d ƒ j t  j | ƒ } | j t  j ƒ } | j ƒ  t	 j
 | j ƒ st t ‚ | j t  j ƒ } t	 j t  j ƒ } | j | ƒ } | j ƒ  | j | ƒ } t | | ƒ t | | ƒ t | | ƒ d  S(   NR8   i    (   Re   Rf   R'   Rg   Rh   R   R(   RŽ   t   sparsifyt   spt   issparseR‰   RW   t
   coo_matrixt   densifyR   (	   R2   Rj   Rh   R/   t   pred_d_dt   pred_s_dt   sp_datat   pred_s_st   pred_d_s(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_sparsify1  s    

c          C   sœ   t  j j d ƒ }  |  j d ƒ } t  j | j d ƒ } d | d <t d d ƒ } | d  } t t | j	 t
 | ƒ t t | j	 | | ƒ j |  j d	 ƒ ƒ d  S(
   Ni    i   i
   R8   iÿÿÿÿi   i   (   i   i
   (   i   i   (   R%   t   randomt   RandomStatet   random_sampleR-   R'   R   R   RD   R(   R0   R)   (   t   rngt   X_t   y_R/   t   y_wrong(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_inconsistent_inputJ  s    

c          C   sM   t  d d ƒ }  |  j t t ƒ d |  j (d |  j (t |  j t ƒ d ƒ d  S(   NR8   i    (   R   R(   R0   R;   R‰   RŠ   R   RŽ   (   R/   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_write_parameters^  s
    

c          C   sN   t  j t d t  j ƒ}  t  j |  d <t d d ƒ } t t | j |  t	 ƒ d  S(   Nt   dtypei    i   R8   (   i    i   (
   R%   Rˆ   R0   t   float64t   nanR   R   RD   R(   R;   (   t   Xnant   logistic(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_nani  s    c          C   sZ  t  j j d ƒ }  t  j |  j d d ƒ d d g |  j d d ƒ f ƒ } d g d d g d } t  j d d d ƒ } t } xì d d	 g D]Þ } | t ƒ | | d
 | d t d d d | d d d d d d ƒ\ } } } x t	 | ƒ D] \ } }	 t
 d |	 d t d d d | d d d d d d ƒ }
 |
 j | | ƒ |
 j j ƒ  } t | | | d d d d | ƒqä Wq‰ Wxè d  D]à } d g } | t ƒ | | d
 | d t d d d | d d d d d d ƒ\ } } } t
 d | d d t d d d d d d d d d | ƒ }
 |
 j | | ƒ t  j |
 j j ƒ  |
 j g ƒ } t | | d d d d d | ƒqrWd  S(!   Ni    id   i   i   iÿÿÿÿi   i
   Rp   Rq   RT   R:   RB   gñhãˆµøä>Rb   RC   iè  R^   R_   R8   R9   t   decimalt   err_msgs   with solver = %sRn   s	   newton-cgRc   g     @@gíµ ÷Æ°>t   intercept_scalingg     ˆÃ@g-Cëâ6?(   Rn   s	   newton-cgRc   Rp   Rq   (   R%   R¡   R¢   t   concatenatet   randnt   logspaceR   R   R=   t	   enumerateR   R(   R‰   t   ravelR   Rz   RŠ   (   R¤   R0   R1   RT   t   fRb   t   coefst   _t   iR9   R[   t   lr_coef(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_consistency_patht  s:    7	!		!!c          C   sŸ   t  j j d ƒ }  t  j |  j d d ƒ d d g |  j d d ƒ f ƒ } d g d d g d } d g } t t t | | d | d d	 d
 d d d d d ƒd  S(   Ni    id   i   i   iÿÿÿÿg     @@RT   RB   g        RC   R8   t   verbose(   R%   R¡   R¢   R³   R´   R   R   R   (   R¤   R0   R1   RT   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt.   test_logistic_regression_path_convergence_failš  s    7		c          C   s  t  d d d d ƒ \ }  } t d d d t d d d d	 d
 d d d ƒ } | j |  | ƒ t d d d t d d d d	 d
 d d d ƒ } | j |  | ƒ t d d d t d d d d	 d
 d d d ƒ } | j |  | ƒ t | j | j ƒ d } t t | t | j | j ƒ d  S(   NR2   i   R8   i    Ry   RC   i   RB   gVçž¯Ò<Rb   Rc   R^   R_   i   s)   Arrays are not almost equal to 6 decimals(   R   R   Rz   R(   R   R‰   R   RW   (   R0   R1   t   lr1t   lr2t   lr3RE   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt    test_liblinear_dual_random_state£  s    	c    	         sA  t  d d d d ƒ \ }  ‰ |  j d } |  j ƒ  } d | | d k  <t j | ƒ } xç |  | f D]Ù ‰  t j | ƒ } t | ˆ  ˆ d d ƒ\ } } t j	 | ‡  ‡ f d	 †  d
 ƒ } t
 | | d d ƒt j | d ƒ } t | ˆ  ˆ d d ƒ\ } } t
 | | ƒ t j	 | ‡  ‡ f d †  d
 ƒ } t
 | | d d ƒq` Wd  S(   NR2   i   R8   i    i   gš™™™™™¹?t   alphag      ð?c            s   t  |  ˆ  ˆ d d ƒd S(   NRÄ   g      ð?i    (   R   (   t   w(   R0   R1   (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   <lambda>Å  s    gü©ñÒMbP?R°   i   c            s   t  |  ˆ  ˆ d d ƒd S(   NRÄ   g      ð?i    (   R   (   RÅ   (   R0   R1   (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyRÆ   Ñ  s    (   R   R'   t   copyR—   t
   csr_matrixR%   t   zerosR   R   t   approx_fprimeR   (	   t   X_refRj   R<   RÅ   t   losst   gradt   approx_gradt   loss_interpt   grad_interp(    (   R0   R1   sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logistic_loss_and_grad¸  s$    c       
   C   sp  t  j j d ƒ }  d \ } } |  j | | ƒ } t  j | j d |  j | ƒ ƒ ƒ } | | j ƒ  8} | | j ƒ  :} | j ƒ  } d | | d k  <t	 j
 | ƒ } xÉ| | f D]»} t  j | d ƒ } t | | | d d ƒ\ } }	 t | | | d d ƒ\ }
 } t |	 |
 ƒ t  j |	 ƒ } d | d <| | ƒ } d } t  j | | d	 ƒ } t  j g  | D]* } t | | | | | d d ƒd ^ q\ƒ } | | j d
 d ƒ 8} t j | d  d  … t  j f | ƒ d j ƒ  } t | | d d ƒt  j | d ƒ } t | | | d d ƒ\ } } t | | | d d ƒ} t | | | d d ƒ\ } } t | | ƒ t | | ƒ q­ Wd  S(   Ni    i2   i   gš™™™™™¹?RÄ   g      ð?i   gü©ñÒMbP?i   R#   R°   i   (   i2   i   (   R%   R¡   R¢   R´   t   signt   dotRr   t   stdRÇ   R—   RÈ   t   fullR   R   R   t
   zeros_liket   linspaceRˆ   R    t   lstsqt   newaxisR·   RÉ   R!   (   R¤   R2   Rj   RË   R1   R<   R0   RÅ   RÌ   RÍ   t   grad_2t   hesst   vectort   hess_colt   et   d_xt   tt   d_gradt   approx_hess_colRÏ   RÐ   t   loss_interp_2t   grad_interp_2(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logistic_grad_hessÖ  s>    %
7/s"   ignore: You should specify a valuec    	   	   C   s±  d \ }  } t  j j d ƒ } | j |  | ƒ } t  j | j d | j | ƒ ƒ ƒ } | | j ƒ  8} | | j ƒ  :} t d d g d t	 d d d	 d
 ƒ } | j
 | | ƒ t d d d t	 d d d	 d
 ƒ } | j
 | | ƒ t | j | j ƒ t | j j d | f ƒ t | j d d g ƒ t t | j ƒ d ƒ t  j t | j j ƒ  ƒ ƒ } t | j d d d | f ƒ t | j j d ƒ t  j t | j j ƒ  ƒ ƒ } t | j d ƒ d  S(   Ni2   i   i    RT   g      ð?R:   Rb   Rc   R^   R_   R9   i   iÿÿÿÿi   i   (   i2   i   (   i   (   i   i   i   (   R%   R¡   R¢   R´   RÒ   RÓ   Rr   RÔ   R   R=   R(   R   R   R‰   R   R'   R*   R   R$   t   asarrayt   listt   coefs_paths_t   valuest   Cs_t   scores_(	   R2   Rj   R¤   RË   R1   t   lr_cvR[   t   coefs_pathsRJ   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logistic_cv  s*    %s   scoring, multiclass_agg_listt   accuracyt    t	   precisiont   _macrot	   _weightedt   f1t   neg_log_losst   recallc         C   s  t  d d d d d d d d ƒ \ } } t j d	 ƒ t j d	 d ƒ } } t d
 d d d d d ƒ } | j ƒ  } x d
 d d g D] } | | =q€ W| j | | | | ƒ xh | D]` }	 t |  |	 ƒ }
 t t | | | | d d g d |
 | d d |
 | | | | | ƒ ƒ q° Wd  S(   NR2   id   R8   i    R4   i   t   n_informativei   iP   R9   g      ð?Rb   Rn   R^   Ro   Rd   t
   warm_startRT   R@   i   (	   R   R%   t   arangeR   t
   get_paramsR(   R   R   R"   (   R@   t   multiclass_agg_listR0   R1   t   trainR?   R[   R}   t   keyt	   averagingt   scorer(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt"   test_logistic_cv_multinomial_score#  s    "c    
      C   sQ  d \ }  } } t  d |  d | d | d d d d	 ƒ \ } } t ƒ  j d
 d d g ƒ j | ƒ } t j | ƒ d } t d d d d ƒ } t d d d d ƒ } t d d d d ƒ } t d d d d ƒ }	 | j | | ƒ | j | | ƒ | j | | ƒ |	 j | | ƒ t | j	 | j	 ƒ t
 t | j ƒ d
 d d g ƒ t | j	 |	 j	 ƒ t
 t | j ƒ d
 d d g ƒ t
 t |	 j ƒ d
 d d g ƒ t
 t t j | j | ƒ ƒ ƒ d
 d d g ƒ t
 t t j |	 j | ƒ ƒ ƒ d
 d d g ƒ t d d d i d d
 6d d 6d	 d 6d d ƒ j | | ƒ }	 t
 t t j |	 j | ƒ ƒ ƒ d
 d g ƒ d  S(   Ni2   i   i   R2   Rj   R4   R÷   R8   i    t   bart   bazt   fooi   Rb   Rn   R^   Ro   t   class_weighti   (   i2   i   i   (   R   R	   R(   t   inverse_transformR%   Rˆ   R   R   R   R‰   R   t   sortedR*   R&   R)   (
   R2   Rj   R4   RË   R1   t   y_strR[   Rì   t   lr_strt	   lr_cv_str(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt2   test_multinomial_logistic_regression_string_inputsE  s6    $!c          C   s»   t  d d d d d d ƒ \ }  } d |  |  d k  <t j |  ƒ } t d	 t ƒ } | j |  | ƒ t d	 t ƒ } | j | | ƒ t | j | j ƒ t | j | j ƒ t	 | j
 | j
 ƒ d  S(
   NR2   i2   Rj   i   R8   i    g        g      ð?R:   (   R   R—   RÈ   R   Rz   R(   R   R‰   RŠ   R   RV   (   R0   R1   t   csrR/   t   clfs(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logistic_cv_sparsem  s    c          C   s¡  d \ }  } t  d |  d | d d ƒ \ } } d } t j | d ƒ } t | | | | ƒ \ } } t | | | | ƒ } t j | t j d ƒ d  d  … t j f f ƒ }	 t | |	 | | ƒ \ }
 } t | |	 | | ƒ } t | d	 | d
 d | ƒ t | |  |
 |  ƒ t | d
 | | d
 |
 d
 ƒ t j	 j
 d ƒ } | j | d ƒ }
 | |
 ƒ } | |
 ƒ } t | |  | |  ƒ t | d
 | |
 d
 | d
 ƒ d  S(   Ni
   i   R2   Rj   R8   i    g      ð?i   g      à?iÿÿÿÿi   (   i
   i   (   R   R%   R-   R   R!   t   hstackRÙ   R   R   R¡   R¢   t   rand(   R2   Rj   R0   R1   RÄ   RÅ   RÐ   t   hess_interpRÏ   R¥   RÍ   RÛ   RÌ   R¤   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_intercept_logistic_helper~  s&    1!c          C   s;  t  j t  j }  } |  j \ } } d } t | ƒ } t | j |  | ƒ ƒ } t d | d d ƒ } | j |  | ƒ t d | d d ƒ } | j	 ƒ  }	 d |	 |	 d k <| j |  |	 ƒ t
 | j d | j d ƒ t
 | j d | j ƒ t
 | j d t j d  d  … f | j ƒ t | j j d | f ƒ t | j d d d g ƒ t j t | j j ƒ  ƒ ƒ }
 t
 |
 j d | d | d f ƒ t | j j d ƒ t j t | j j ƒ  ƒ ƒ } t | j d | d f ƒ xld	 d
 d d g D]X} | d k ród n d } t d | d d d | d d d | d k r)d n d d d ƒ } | j |  | ƒ | j |  | ƒ } | j |  | ƒ } t | | ƒ t | j j | j j ƒ t | j d d d g ƒ t j t | j j ƒ  ƒ ƒ }
 t
 |
 j d | d | d f ƒ t | j j d ƒ t j t | j j ƒ  ƒ ƒ } t | j d | d f ƒ qÛWd  S(   Ni   RA   R^   R_   i   i    i   i
   Rn   s	   newton-cgRp   Rq   iÐ  i   Rb   Ro   RC   R8   i*   RB   gñhãˆµøä>g{®Gáz„?(   i
   (   Rp   Rq   (   Rp   Rq   (   i
   (   Re   Rf   Rh   R'   R   Rç   t   splitR   R(   RÇ   R   Rë   RŠ   R‰   R%   RÙ   R   R   R*   Ræ   Rè   Ré   Rê   RO   R   (   Rü   Rh   R2   Rj   t   n_cvRA   t   precomputed_foldsR/   t   clf1t   target_copyRí   RJ   Rb   RC   t	   clf_multit   multi_scoret	   ovr_score(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_ovr_multinomial_irisŸ  sN    * 	c          C   sä  t  d d d d d d ƒ \ }  } t d t d d d	 d
 ƒ } t d d |  } t d d |  } t d d |  } t d d |  } t d d |  } | j |  | ƒ | j |  | ƒ | j |  | ƒ | j |  | ƒ | j |  | ƒ t | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒd  S(   NRj   i
   R÷   i   R8   i    R:   i*   R^   R_   Rb   s	   newton-cgRn   Rc   Rp   Rq   R°   i   (   R   t   dictR=   R   R(   R   R‰   (   R0   R1   R}   t   ncgt   lbft   libRp   Rq   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt    test_logistic_regression_solversÛ  s,    !c    	      C   s  t  d d d d d d d d d d	 ƒ \ }  } d
 } t d t d | d d d d ƒ } t d d |  } t d d |  } t d d |  } t d d d d |  } t d d d d |  } | j |  | ƒ | j |  | ƒ | j |  | ƒ | j |  | ƒ | j |  | ƒ t | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒt | j | j d d ƒd  S(   NR2   i   Rj   R÷   i
   R4   i   R8   i    gH¯¼šò×z>R:   RB   i*   R^   R_   Rb   s	   newton-cgRn   Rc   Rp   RC   iè  Rq   i'  R°   i   (   R   R  R=   R   R(   R   R‰   (	   R0   R1   RB   R}   R  R  R  Rp   Rq   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt+   test_logistic_regression_solvers_multiclassõ  s2    	c    
      C   s5  x.i d d 6d d 6i d d 6d d 6d d 6g D]ý}  t  |  ƒ } xè|  d f D]Ú} t d d	 d
 d d d d d d d d | d d ƒ \ } } t d d d d d t d d d | ƒ } t d d d d d t d d d | ƒ } t d d d d d t d d d | ƒ } t d d d d d t d d d | d d d d d d ƒ } t d d d d d t d d d | d d d d d d ƒ }	 | j | | ƒ | j | | ƒ | j | | ƒ | j | | ƒ |	 j | | ƒ t | j | j d  d! ƒt | j | j d  d! ƒt | j | j d  d! ƒt |	 j | j d  d! ƒqO Wq0 Wd  S("   Ngš™™™™™¹?i    gš™™™™™É?i   g      à?i   t   balancedR2   i   Rj   i   t
   n_repeatedR÷   t   n_redundantR4   R8   Rb   Rn   RT   R:   R^   R_   R  s	   newton-cgRc   Rp   RB   gñhãˆµøä>RC   i'  Rq   R°   i   (   R$   R   R   R=   R(   R   R‰   (
   t   weightR4   R  R0   R1   t   clf_lbft   clf_ncgt   clf_libt   clf_sagt   clf_saga(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt(   test_logistic_regressioncv_class_weights  sP    6					c          C   s7  t  d d d d d d d d d	 d
 ƒ \ }  } | d } x¥t t g D]—} x¥ d d g D]— } | d | d t d	 d d d ƒ } | j |  | ƒ | d | d t d	 d d d ƒ } | j |  | d t j | j d
 ƒ ƒt | j	 | j	 d d ƒqW W| d d d t d	 d d d ƒ } | j |  | d | ƒ| d d d t d	 d d d ƒ } | j |  | d | ƒ| d d d t d d d	 d d d ƒ }	 t
 ƒ   |	 j |  | d | ƒWd  QX| d d d t d	 d d d ƒ }
 |
 j |  | d | ƒt | j	 | j	 d d ƒt | j	 |	 j	 d d ƒt | j	 |
 j	 d d ƒx© d d g D]› } | d | d t d i d d
 6d d 6d	 d d d ƒ } | j |  | ƒ | d | d t d	 d d d ƒ } | j |  | d | ƒt | j	 | j	 d d ƒq<WqD Wt d d d t d i d d
 6d d 6d d d d d	 d d d ƒ } | j |  | ƒ t d d d t d d d d d	 d d d ƒ } | j |  | | ƒ t | j	 | j	 d d ƒt d d d t d i d d
 6d d 6d d d t d	 d d d ƒ } | j |  | ƒ t d d d t d d d t d	 d d d ƒ } | j |  | | ƒ t | j	 | j	 d d ƒd  S(    NR2   i   Rj   i   R÷   i   R4   i   R8   i    i   Rn   Rc   Rb   R:   i*   R^   R_   RN   R°   i   s	   newton-cgRp   RB   g»½×Ùß|Û=R  Rw   Rx   gñhãˆµøä>t   l2Ry   (   R   R   R   R=   R(   R%   R-   R'   R   R‰   R   Rz   (   R0   R1   RN   RF   Rb   t   clf_sw_nonet   clf_sw_onest   clf_sw_lbfgst   clf_sw_nt
   clf_sw_sagt   clf_sw_liblineart	   clf_cw_12t	   clf_sw_12t   clf_cwt   clf_sw(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt'   test_logistic_regression_sample_weights>  sx    
&		
		  c         C   s:   t  j |  ƒ } t d | |  ƒ } t t | | ƒ ƒ } | S(   NR!  (   R%   R&   R
   R  t   zip(   R1   R3   R  t   class_weight_dict(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt    _compute_class_weight_dictionaryŽ  s    c          C   sƒ  t  j d d  … d  d  … f }  t  j d } d } t | ƒ } x} | D]u } t d | d d d d ƒ } t d | d d d | ƒ } | j |  | ƒ | j |  | ƒ t | j | j d	 d
 ƒqE Wt  j d d … d  d  … f }  t  j d d !} d } t | ƒ } x} | D]u } t d | d d d d ƒ } t d | d d d | ƒ } | j |  | ƒ | j |  | ƒ t | j | j d	 d ƒqWd  S(   Ni-   Rn   s	   newton-cgRb   R^   Ro   R  R!  R°   i   id   Rc   R_   i   (   Rn   s	   newton-cg(   Rn   s	   newton-cgRc   (   Re   Rf   Rh   R9  R   R(   R   R‰   (   R0   R1   t   solversR8  Rb   R  t   clf2(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt&   test_logistic_regression_class_weights–  s0    				c          C   s\  d \ }  } } t  d |  d | d d d | d	 d
 ƒ \ } } d } t d | d d ƒ } t d | d d d t ƒ } | j | | ƒ | j | | ƒ t | j j | | f ƒ t | j j | | f ƒ xd d d g D]÷ } t d | d d d	 d d d d d ƒ } t d | d d d	 d d d d d d t ƒ }	 | j | | ƒ |	 j | | ƒ t | j j | | f ƒ t |	 j j | | f ƒ t | j | j d d ƒt | j |	 j d d ƒt | j | j d d ƒqÔ Wx† d d d d g D]r } t	 d | d d d d d d d d g ƒ }
 |
 j | | ƒ t
 |
 j | j d d ƒt |
 j | j d d ƒqâWd  S(   Ni2   i   i   R2   Rj   R÷   i
   R4   R8   i    Rn   Rb   R^   Ro   R:   Rp   Rq   s	   newton-cgi*   RC   iÐ  RB   gH¯¼šò×z>R°   gíµ ÷Æ°>RT   g      ð?(   i2   i   i   (   R   R   R=   R(   R   R‰   R'   R   RŠ   R   R   (   R2   Rj   R4   R0   R1   Rb   t   ref_it   ref_wt   clf_it   clf_wt   clf_path(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt$   test_logistic_regression_multinomial¶  s@    		c          C   s¾  t  j j d ƒ }  d \ } } } |  j | | ƒ } |  j | | ƒ } t  j | | f ƒ } t  j t  j | | j ƒ d d ƒ} d | t	 d | ƒ | f <| j
 ƒ  } t  j | j d ƒ } t | | | d d d	 | ƒ\ }	 }
 t  j | | ƒ } d | d <|
 | ƒ } d
 } t  j | | d ƒ } t  j g  | D]0 } t | | | | | d d d	 | ƒd ^ q/ƒ } | | j d d ƒ 8} t j | d  d  … t  j f | ƒ d j
 ƒ  } t | | ƒ d  S(   Ni    id   i   i   R#   i   RÄ   g      ð?RN   gü©ñÒMbP?i   (   id   i   i   (   R%   R¡   R¢   R´   R  RÉ   R.   RÓ   t   Tt   rangeR·   R-   R'   R    R×   Rˆ   Rr   R    RØ   RÙ   R   (   R¤   R2   Rj   R4   R0   RÅ   t   Yt   indt   sample_weightsRÍ   t   hesspt   vecRÝ   RÞ   Rß   Rà   Rá   Râ   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_multinomial_grad_hessæ  s,    $
=/c          C   s~   t  d d d d d d ƒ \ }  } t d t d d d	 d
 ƒ } | j |  | ƒ t j d ƒ }  t | j |  ƒ t j d ƒ ƒ d  S(   NR2   i   Rj   R8   i    R:   Rb   Rc   R^   R_   (   i   i   (   R   R   R=   R(   R%   RÉ   R   R)   (   R0   R1   R/   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt%   test_liblinear_decision_function_zero  s    !	c          C   sS   t  d d d d d d ƒ \ }  } t d d d	 d
 ƒ } | j t j |  ƒ | ƒ d  S(   NR2   i
   Rj   i   R8   i    Rb   Rc   R^   R_   (   R   R   R(   R   RÈ   (   R0   R1   R/   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_liblinear_logregcv_sparse  s    !c          C   sM   t  d d d d d d ƒ \ }  } t d d ƒ } | j t j |  ƒ | ƒ d  S(	   NR2   i
   Rj   i   R8   i    Rb   Rq   (   R   R   R(   R   RÈ   (   R0   R1   R/   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_saga_sparse  s    !c          C   s\   xU d d g D]G }  t  d |  d d d d ƒ } d | j } t t | | j t t ƒ q Wd  S(	   Niÿÿÿÿi    R²   Rb   Rc   R^   R_   sq   Intercept scaling is %r but needs to be greater than 0. To disable fitting an intercept, set fit_intercept=False.(   R   R²   R   RD   R(   R0   R;   (   R»   R/   RE   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logreg_intercept_scaling(  s    	
c          C   s3   t  d t ƒ }  |  j t t ƒ t |  j d ƒ d  S(   NR:   g        (   R   R=   R(   R0   R;   R   RŠ   (   R/   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt"   test_logreg_intercept_scaling_zero4  s    c          C   sp  t  j j d ƒ }  d } t d | d d d d ƒ \ } } |  j d | d	 f ƒ } t  j d
 | d f ƒ } t  j | | | f d d ƒ} t d d d d d d d t d d d d ƒ } | j	 | | ƒ t d d d d d d d t d d d d d d ƒ } | j	 | | ƒ t
 | j | j ƒ t
 | j d d d  … f t  j d ƒ ƒ t
 | j d d d  … f t  j d ƒ ƒ d  S(   Ni*   i2   R2   Rj   i   R8   i    t   sizei   R'   i   R#   i   Rw   Rx   R9   g      ð?Rb   Rc   R:   R^   R_   RB   g»½×Ùß|Û=Rq   RC   iè  iûÿÿÿi   (   R%   R¡   R¢   R   t   normalR-   R³   R   R=   R(   R   R‰   RÉ   (   R¤   R2   R0   R1   t   X_noiset
   X_constantt   lr_liblineart   lr_saga(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logreg_l1>  s$    	)c    	      C   sñ  t  j j d ƒ }  d } t d | d d d d ƒ \ } } |  j d d	 d
 | d f ƒ } t  j d | d f ƒ } t  j | | | f d d ƒ} d | | d k  <t j | ƒ } t	 d d d d d d d t
 d d d d ƒ } | j | | ƒ t	 d d d d d d d t
 d d d d d d ƒ } | j | | ƒ t | j | j ƒ t | j d d d  … f t  j d ƒ ƒ t | j d d d  … f t  j d ƒ ƒ t	 d d d d d d d t
 d d d d d d ƒ } | j | j ƒ  | ƒ t | j | j ƒ d  S(    Ni*   i2   R2   Rj   i   R8   i    t   scalegš™™™™™¹?RP  i   R'   i   R#   i   Rw   Rx   R9   g      ð?Rb   Rc   R:   R^   R_   RB   g»½×Ùß|Û=Rq   RC   iè  iûÿÿÿi   (   R%   R¡   R¢   R   RQ  RÉ   R³   R   RÈ   R   R=   R(   R   R‰   t   toarray(	   R¤   R2   R0   R1   RR  RS  RT  RU  t   lr_saga_dense(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_logreg_l1_sparse_dataZ  s2    	))t   random_seedi*   Rw   Rx   R+  c         C   s¬   t  d d d d d |  ƒ \ } } t d d d | d |  d	 d
 d d ƒ } t d d g d t |  } | j | | ƒ t d d |  } | j | | ƒ t | j | j ƒ d  S(   NR2   i2   Rj   i   R8   Rb   Rq   Rw   RC   i'  RB   gê-™—q=RT   g      ð?t   refitR9   (   R   R  R   Rz   R(   R   R   R‰   (   R[  Rw   R0   R1   t   common_paramsRì   R[   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt!   test_logistic_regression_cv_refit  s    	c          C   sõ   t  d d d d d d d d d	 d ƒ \ }  } t d
 d d d ƒ } | j |  | ƒ t | | j |  ƒ ƒ } t d
 d d d ƒ } | j |  | ƒ t | | j |  ƒ ƒ } t | | ƒ t | | j |  ƒ ƒ } t | | j |  ƒ ƒ } t | | ƒ d  S(   NR2   i
   Rj   i   R8   i    R4   i   R÷   R^   Ro   Rb   Rn   R_   (   R   R   R(   R   R+   R   t   _predict_proba_lr(   R0   R1   R  t   clf_multi_losst   clf_ovrt   clf_ovr_losst   clf_wrong_loss(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt%   test_logreg_predict_proba_multinomialœ  s    c          C   só   t  j t  j j ƒ  }  } d | | d k <d d d d d g } x® t d d	 ƒ D] } x” | D]Œ } xƒ d
 d g D]u } | d k r’ | d k r’ qn n  t d | d d d | d d d | ƒ } t t | j |  | ƒ t	 | j
 d | ƒ qn Wq[ WqN Wd  S(   Ni    i   s	   newton-cgRc   Rp   Rq   Rn   i   i   R_   Ro   RC   RB   gVçž¯Ò<R^   R8   Rb   (   Re   Rf   Rh   RÇ   RD  R   R   R   R(   R   t   n_iter_(   R0   t   y_binR:  RC   Rb   R^   R[   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_max_iter±  s    Rc   c         C   sO  t  j t  j } } | j ƒ  } d | | d k <d } d } |  d k rM d n t j | ƒ j d } t d d d d	 d
 |  d d d d d d ƒ } | j | | ƒ t	 | j
 j | f ƒ t j | ƒ j d } t d d d d	 d
 |  d | d | d d d d ƒ } | j | | ƒ t	 | j
 j | | | f ƒ | j | | ƒ t	 | j
 j d | | f ƒ d } |  d k rmd  St d d d d d
 |  d d d d d d ƒ } | j | | ƒ t	 | j
 j | f ƒ t d d d d d
 |  d | d | d d d d ƒ } | j | | ƒ t	 | j
 j | | | f ƒ | j | | ƒ t	 | j
 j d | | f ƒ d  S(   Ni    i   i   Rc   i   RB   g{®Gáz„?R^   R_   Rb   R9   g      ð?R8   i*   RC   id   RT   RA   Rp   Rq   Ro   (   Rc   Rp   Rq   (   Re   Rf   Rh   RÇ   R%   R&   R'   R   R(   R   Re  R   (   Rb   R0   R1   Rf  t   n_Cst	   n_cv_foldR4   R/   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_n_iterÄ  sD    (Rø   R:   R^   R_   Ro   c   
      C   sü   t  j t  j } } t d d d | d | d |  d d d d	 d
 | ƒ } t d t ƒ 7 | j | | ƒ | j } d | _ | j | | ƒ Wd  QXt	 j
 t	 j | | j ƒ ƒ } d |  | t | ƒ t | ƒ f }	 | rè t d | |	 ƒ n t | d |	 ƒ d  S(   NRB   g-Cëâ6?R^   Rø   Rb   R8   i*   RC   id   R:   t   categoryi   sU   Warm starting issue with %s solver in %s mode with fit_intercept=%s and warm_start=%sg       @(   Re   Rf   Rh   R   R   R   R(   R‰   RC   R%   R,   t   abst   strR   (
   Rb   Rø   R:   R^   R0   R1   R/   t   coef_1t   cum_diffRE   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_warm_startô  s$    			c          C   sÉ  t  ƒ  }  |  j |  j } } t j | g d ƒ } t j | g d ƒ } | | d k } | | d k d d } t d d d d d d	 ƒ \ } } t j | ƒ } x"| | f | | f f D]\ } } xù d
 d g D]ë } | j d	 } xÕ t j	 d d d ƒ D]¾ }	 t
 d d | |	 d d d d d d d t d | d d	 d d ƒ }
 t
 d d | |	 d d d d d d d t d | d d	 d d ƒ } |
 j | | ƒ | j | | ƒ t |
 j | j d ƒ qû WqÒ Wq¹ Wd  S(   Ni
   i   i   R2   i2   Rj   i   R8   i    Rx   R+  iÿÿÿÿi   R9   g      ð?Rb   Rq   R^   R_   RC   iÈ   R:   Rw   RB   g§Ž¨™ÂWó:Rc   (   R   Rf   Rh   R%   R³   R   R   RÈ   R'   Rµ   R   R=   R(   R   R‰   (   Re   R0   R1   t   X_binRf  t   X_sparset   y_sparseRw   R2   RÄ   Rq   Rc   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_saga_vs_liblinear  s<    	%c         C   sš  t  j t ƒ j t  j ƒ } t  j t ƒ j t  j ƒ } t  j t ƒ j t  j ƒ } t  j t ƒ j t  j ƒ } t j t d t  j ƒ} d } t	 d | d |  d d ƒ } | j
 | | ƒ t | j j | j ƒ t	 d | d |  d d ƒ } | j
 | | ƒ t | j j | j ƒ t	 d | d |  d d ƒ }	 |	 j
 | | ƒ t |	 j j | j ƒ d }
 t j d k rqt rqd	 }
 n  t | j |	 j j t  j ƒ d
 |
 ƒd  S(   NRª   s	   newton-cgRb   R^   R8   i*   gíµ ÷Æ°>t   ntg{®Gáz„?t   rtol(   R%   Rˆ   R0   R†   t   float32R;   R«   R—   RÈ   R   R(   R   R‰   Rª   t   ost   nameR   R   (   R^   t   X_32t   y_32t   X_64t   y_64t   X_sparse_32Rb   t   lr_32t   lr_32_sparset   lr_64Rv  (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_dtype_match<  s.    				c       	   C   s&  t  j j d ƒ }  t  j |  j d d ƒ d d g |  j d d ƒ f ƒ } t  j d g d d g d ƒ } t d d d d	 d
 t d d ƒ } t d d d d	 d
 t d d ƒ } t	 | | j
 | | ƒ j | ƒ ƒ } x$ t d ƒ D] } | j
 | | ƒ qÝ Wt	 | | j | ƒ ƒ } t | | d d ƒd  S(   Ni    id   i   i   iÿÿÿÿR^   Ro   Rb   Rp   Rø   R8   i   Rv  gñhãˆµøä>(   R%   R¡   R¢   R³   R´   Rˆ   R   R=   Rz   R   R(   R+   RD  R   (   R¤   R0   R1   t   lr_no_wst   lr_wst   lr_no_ws_lossR»   t
   lr_ws_loss(    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   test_warm_start_converge_LRc  s    7!		$c          C   s  t  d d d d d d d d d	 d
 d d d d ƒ \ }  } d d
 d g } t |  | d d d | d d d d d d ƒ\ } } } t j t ƒ   t | d | d
 d d
 ƒWd  QXt j t ƒ   t | d | d d d
 ƒWd  QXt j t ƒ   t | d
 | d d d
 ƒWd  QXd  S(   NR2   iÈ   R4   i   R÷   i   R#  i    t   n_clusters_per_classi   R8   Rj   gñhãˆµøä>i'  Rw   Rx   RT   Rb   Rq   R^   Ro   R°   (   R   R   RX   t   raisesRW   R   (   R0   R1   RT   R¹   Rº   (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt/   test_logistic_regression_path_coefs_multinomialx  s    !!t   estR8   i   c      	      sb  ‡  f d †  } t  j d  d  d … } t  j d d  d … } t  j d  d  d … } | d k } | | | d d d | ƒ} | | | d d d | ƒ} t j | j | j ƒ s± t ‚ t j | j | ƒ | j | ƒ ƒ sÛ t ‚ | | | d d d | ƒ}	 | d	 k rh| | | d d d | ƒ}
 t j |	 j |
 j ƒ s;t ‚ t j |	 j | ƒ |
 j | ƒ ƒ s^t ‚ nö | | | d d
 d | ƒ} t j	 d k r®| d k r®t
 j d ƒ n  t j |	 j | j ƒ sÌt ‚ t j |	 j | ƒ | j | ƒ ƒ söt ‚ t j | j | | | d d
 d | ƒj ƒ s*t ‚ t j | j | | | d d
 d | ƒj ƒ s^t ‚ d  S(   Nc            s   t  ˆ  ƒ j |   j |  | ƒ S(   N(   R   t
   set_paramsR(   (   R0   R1   t   kw(   R‹  (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyR(   ”  s    i
   i   i    R^   t   autoRb   R_   Rc   Ro   t   darwinRn   sj   Issue #11924: LogisticRegressionCV(solver="lbfgs", multi_class="multinomial") is nondterministic on MacOS.(   Re   Rf   Rh   R%   t   allcloseR‰   RW   R+   t   syst   platformRX   t   xfail(   R‹  Rb   R(   R0   t   X2t   y_multiRf  t   est_auto_bint   est_ovr_bint   est_auto_multit   est_ovr_multit   est_multi_multi(    (   R‹  sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt)   test_logistic_regression_multi_class_autoŒ  s:    	(   s	   newton-cgRp   Rq   Rn   (u   Rx  R‘  t   numpyR%   t   scipy.sparseR   R—   t   scipyR    R   RX   t   sklearn.baseR   t   sklearn.datasetsR   R   t   sklearn.metricsR   t   sklearn.metrics.scorerR   t   sklearn.model_selectionR   t   sklearn.preprocessingR	   t   sklearn.utilsR
   R   t   sklearn.utils.testingR   R   R   R   R   R   R   R   R   R   R   R   R   t   sklearn.exceptionsR   R   t   sklearn.linear_model.logisticR   R   R   R   R   R    R!   R"   R0   RÈ   R<   R;   Rl   Re   R7   t   markt   filterwarningsR>   RG   R]   Ra   Rk   Rm   Rt   t   parametrizeRu   R{   Rz   R=   R„   R   R•   R    R¨   R©   R¯   R½   R¿   RÃ   RÑ   Rå   Rî   R   R
  R  R  R  R  R   R*  R6  R9  R<  RB  RJ  RK  RL  RM  RN  RO  RV  RZ  R^  Rd  Rg  Rj  Rp  Rt  R‚  R‡  RŠ  R›  (    (    (    sG   lib/python2.7/site-packages/sklearn/linear_model/tests/test_logistic.pyt   <module>   sâ   :!		#			"*$ %*	

	&					1$(	!	<		-P		 0								%-		!/-	($'		