ó
‡ˆ\c           @   s'  d  d l  Z  d  d l Z d  d l Z d  d l j 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  m! Z! d  d l" m# Z# m$ Z$ d  d l% m& Z& e$ ƒ  Z' d „  Z( d „  Z) d „  Z* d „  Z+ d „  Z, d d e. d e/ e. d „ Z0 d d d e. e/ e. d „ Z1 e/ d „ Z2 d „  Z3 d „  Z4 e j5 j6 d ƒ d „  ƒ Z7 e j5 j6 d ƒ d  „  ƒ Z8 e j5 j6 d ƒ d! „  ƒ Z9 d" „  Z: e j5 j6 d ƒ d# „  ƒ Z; e j5 j6 d ƒ d$ „  ƒ Z< e j5 j6 d ƒ d% „  ƒ Z= e j5 j6 d& ƒ d' „  ƒ Z> e j5 j6 d ƒ d( „  ƒ Z? e j5 j6 d ƒ d) „  ƒ Z@ e j5 j6 d& ƒ d* „  ƒ ZA e j5 j6 d& ƒ d+ „  ƒ ZB d, „  ZC d- „  ZD d S(.   iÿÿÿÿN(   t   get_auto_step_size(   t"   _multinomial_grad_loss_all_samples(   t   LogisticRegressiont   Ridge(   t   make_dataset(   t   _multinomial_loss_grad(   t	   logsumexp(   t	   row_norms(   t   assert_almost_equal(   t   assert_array_almost_equal(   t   assert_allclose(   t   assert_greater(   t   assert_raise_message(   t   compute_class_weight(   t   check_random_state(   t   LabelEncodert   LabelBinarizer(   t
   make_blobst	   load_iris(   t   clonec         C   sP   |  | } | d k r) t  j | ƒ | S| d k  r: | S| t  j | ƒ d S(   Ng      2@g      2Àg      ð?(   t   matht   exp(   t   pt   yt   z(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt	   log_dloss"   s    
c         C   s(   t  j t  j d t  j | |  ƒ ƒ ƒ S(   Ng      ð?(   t   npt   meant   logR   (   R   R   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   log_loss,   s    c         C   s   |  | S(   N(    (   R   R   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   squared_dloss1   s    c         C   s   t  j d |  | |  | ƒ S(   Ng      à?(   R   R   (   R   R   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   squared_loss5   s    c         C   sL   |  j  ƒ  }  t j | |  ƒ } | | | ƒ } | | |  j |  ƒ d 7} | S(   Ng       @(   t   ravelR   t   dot(   t   wt   alphat   myXt   myyt   losst   predR   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   get_pobj:   s
    i   c
         C   sV  |  j  d |  j  d }
 } t j |  j  d ƒ } t j |  j  d ƒ } t j |
 | f ƒ } d } d } t j |
 ƒ } t j j d ƒ } d } t ƒ  } | r§ d } n  x¢t | ƒ D]”} x‹t |
 ƒ D]}} t | j d ƒ |
 ƒ } |  | } | j	 | ƒ t j
 | | ƒ | } | | | | ƒ } | d  k	 rC| | | 9} n  | | | | } | | | } | | 7} | | | <|	 r | | | d d t | ƒ 8} n  | r,| | | } | | | <| | 7} | | d d t | ƒ 9} |	 r| | | t | ƒ | | 8} q,| | | t | ƒ | 8} n  | | | t | ƒ 8} qÇ Wq´ W| | f S(   Ni    i   g        iM   g      ð?g{®Gáz„?(   t   shapeR   t   zerost   randomt   RandomStatet   sett   ranget   intt   randt   addR!   t   Nonet   len(   t   XR   t	   step_sizeR#   t   n_itert   dlosst   sparset   sample_weightt   fit_interceptt   sagat	   n_samplest
   n_featurest   weightst   sum_gradientt   gradient_memoryt	   interceptt   intercept_sum_gradientt   intercept_gradient_memoryt   rngt   decayt   seent   epocht   kt   idxt   entryR   t   gradientt   updatet   gradient_correction(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   sagB   sR    		


 

  c
   !      C   s¿  | | d k r t  d ƒ ‚ n  |  j d |  j d }
 } t j | ƒ } t j | ƒ } t j | d t j ƒ} t j |
 ƒ } t j j d ƒ } d } d } d } d } t ƒ  } t j | |
 ƒ } | rÔ d } n  d } xTt | ƒ D]F} x=t |
 ƒ D]/} t | j	 d ƒ |
 ƒ } |  | } | j
 | ƒ | d k rÃx„ t | ƒ D]s } | | d k r‚| | c | | d | | 8<n0 | | c | | d | | | d | | 8<| | | <qIWn  | t j | | ƒ | } | | | | ƒ } | d  k	 r| | | 9} n  | | } | | | | }  | |  7} |	 rxE t | ƒ D]4 } | | c |  | | d d t | ƒ | 8<qFWn  | r| | | }  | |  7} |  | d d t | ƒ 9}  |	 rä| | | t | ƒ | |  8} q| | | t | ƒ | 8} n  | | | <| d | | 9} | d k rF| | t | ƒ | d <n$ | | d | | t | ƒ | | <| d k r| d	 k  rx} t | ƒ D]o } | | d k rÄ| | c | | | | 8<n, | | c | | | | | d | | 8<| d | | <qWd | | <| | 9} d } n  | d 7} qú Wqç Wxw t | ƒ D]i } | | d k rw| | c | | d | | 8<q>| | c | | d | | | d | | 8<q>W| | 9} | | f S(
   Ng      ð?s:   Sparse sag does not handle the case step_size * alpha == 1i    i   t   dtypeiM   g        g{®Gáz„?g•Ö&è.>(   t   ZeroDivisionErrorR)   R   R*   R/   R+   R,   R-   R.   R0   R1   R!   R2   R3   (!   R4   R   R5   R#   R6   R7   R9   R8   R:   R;   R<   R=   R>   R?   t   last_updatedR@   RD   RA   RB   t   wscaleRE   RF   t   c_sumt   counterRG   RH   RI   RJ   t   jR   RK   RL   RM   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt
   sag_sparsez   sš    		
#


+



	#
c         C   sf   | r6 d t  j t  j |  |  d d ƒƒ | d | Sd t  j t  j |  |  d d ƒƒ | | Sd  S(   Ng      @t   axisi   g      ð?(   R   t   maxt   sum(   R4   R#   R:   t   classification(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   get_step_sizeâ   s    -c          C   sâ  d }  t  d |  d d d d d d ƒ \ } } d	 | | d k <d
 } t } t | | | ƒ } x€d d g D]r} | d k rƒ d } n d } t d | d | d d d d | |  d | d d d d ƒ } | j | | ƒ t | | | | d | d t d | d | d k ƒ\ }	 }
 t | | | | d | d t d | d | d k ƒ\ } } t j	 |	 ƒ }	 t j
 |
 ƒ }
 t j	 | ƒ } t j
 | ƒ } t |	 | j d d ƒt |
 | j d d ƒt | | j d d ƒt | | j d d ƒqh Wd  S(   Ni   R<   t   centersi   t   random_statei    t   cluster_stdgš™™™™™¹?iÿÿÿÿgš™™™™™ñ?RN   R;   iP   i,  t   solverR:   t   tolg•dyáý¥=t   Cg      ð?t   max_iteri
   t   multi_classt   ovrR6   R7   t   decimali	   (   R   t   TrueR[   R   t   fitRV   R   RN   R   t
   atleast_2dt
   atleast_1dR	   t   coef_t
   intercept_(   R<   R4   R   R#   R:   R5   R_   R6   t   clfR>   RA   t   weights2t
   intercept2(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_classifier_matchingê   s@    		c          C   sZ  d }  d } t  j j d ƒ } | j d |  | f ƒ } | j d | ƒ } | j | ƒ } d } d } t } t | | | d t ƒ}	 t d | d d	 d
 d d | |  d | ƒ }
 |
 j	 | | ƒ t
 | | |	 | d | d t d | ƒ\ } } t | | |	 | d | d t d | ƒ\ } } t | |
 j ƒ t | |
 j ƒ t | |
 j ƒ t | |
 j ƒ d  S(   Ni
   i   t   sizeg      ð?id   RZ   R:   R`   g•dyáý¥=R_   RN   R#   Rb   R6   R7   (   R   R+   R,   t   normalR!   Rf   R[   t   FalseR   Rg   RV   R   RN   R
   Rj   Rk   (   R<   R=   RD   R4   t   true_wR   R#   R6   R:   R5   Rl   t   weights1t
   intercept1Rm   Rn   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_regressor_matching  s.    s   ignore:The max_iter was reachedc          C   s‚  d }  d } d } t  d |  d d d d d	 d
 ƒ \ } } t d d d t d d d d | |  d | d d d d ƒ } t | ƒ } t d t d d d d | |  d | d d d d d d ƒ } | j | | ƒ | j t j | ƒ | ƒ | j | | ƒ t | j | | | t	 ƒ } t | j | | | t	 ƒ }	 t | j | | | t	 ƒ }
 t
 | |	 d d ƒt
 |	 |
 d d ƒt
 |
 | d d ƒd S(   s%   tests if the sag pobj matches log regid   g      ð?i   R<   R\   i   R]   i    R^   gš™™™™™¹?R_   RN   R:   R`   gH¯¼šò×z>Ra   Rb   i
   Rc   Rd   t   lbfgsRe   i   N(   R   R   Rr   R   Rg   t   spt
   csr_matrixR(   Rj   R   R	   (   R<   R#   Rb   R4   R   t   clf1t   clf2t   clf3t   pobj1t   pobj2t   pobj3(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt)   test_sag_pobj_matches_logistic_regression0  s,    	c          C   s–  d }  d } d } d } t  } t j j d ƒ } | j d |  | f ƒ } | j d | ƒ } | j | ƒ } t d | d d d d	 d
 | d | d d ƒ }	 t |	 ƒ }
 t d | d d d d d
 | d | d d ƒ } |	 j | | ƒ |
 j t	 j
 | ƒ | ƒ | j | | ƒ t |	 j | | | t ƒ } t |
 j | | | t ƒ } t | j | | | t ƒ } t | | d d ƒt | | d d ƒt | | d d ƒd S(   s'   tests if the sag pobj matches ridge regid   i
   g      ð?Rp   R:   R`   g•dyáý¥=R_   RN   R#   Rb   R]   i*   gñhãˆµøä>t   lsqrRe   i   N(   Rr   R   R+   R,   Rq   R!   R   R   Rg   Rx   Ry   R(   Rj   R   R	   (   R<   R=   R#   R6   R:   RD   R4   Rs   R   Rz   R{   R|   R}   R~   R   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt&   test_sag_pobj_matches_ridge_regressionO  s.    c          C   sŠ  d }  d } d } d } d } t  } t j j d ƒ } | j d | | f ƒ } | j d | ƒ } t j | | ƒ d }	 t | |  | d	 t ƒ}
 t d
 | d | d d d |  | d | ƒ } t	 | ƒ } | j
 | |	 ƒ | j
 t j | ƒ |	 ƒ t | |	 |
 |  d | d t d
 | ƒ\ } } t | |	 |
 |  d | d t d t  d
 | ƒ\ } } t | j j ƒ  | j ƒ  d d ƒt | j | d d ƒd S(   s0   tests if the sag regressor is computed correctlygš™™™™™¹?i
   i(   i2   gíµ ÷Æ°>i    Rp   g       @RZ   R:   R`   R_   RN   R#   Rb   R6   R7   R8   Re   i   i   N(   Rf   R   R+   R,   Rq   R!   R[   Rr   R   R   Rg   Rx   Ry   RV   R   R	   Rj   R    R   Rk   (   R#   R=   R<   Rb   R`   R:   RD   R4   R"   R   R5   Rz   R{   t
   spweights1t   spintercept1t
   spweights2t   spintercept2(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt%   test_sag_regressor_computed_correctlyo  s8    c          C   s  t  j d d d g d d d g d d d g g d t  j ƒ}  d } t } d } t |  d	 t ƒj ƒ  } |  j d
 } t | | d d ƒxRt t g D]D} x;t t f D]-} | r7| | t	 | ƒ } | d | t	 | ƒ d } t
 d | | | ƒ }	 t
 d | | | ƒ }
 d d | |	 } d d | |
 } n4 d | | t	 | ƒ } d | d | t	 | ƒ } t | | d	 | d | d | ƒ} t | | d | d | d | ƒ} t | | d d ƒt | | d d ƒq¦ Wq“ Wd } t t | t | | d | ƒ d  S(   Ni   i   i   i   RO   g333333ó?i	   i   t   squaredi    Re   g      @g      ð?R<   t   is_sagaR   s:   Unknown loss function for SAG solver, got wrong instead oft   wrongi   i   (   R   t   arrayt   float64Rr   R   Rf   RX   R)   R   R/   t   minR    R   t
   ValueError(   R4   R#   R:   t   max_squared_sumt   max_squared_sum_R<   R;   t   L_sqrt   L_logt   mun_sqrt   mun_logt   step_size_sqrt   step_size_logt   step_size_sqr_t   step_size_log_t   msg(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_get_auto_step_size›  sF    <			c       
   C   sÓ  d \ }  } d } d } d } d } t  j j d ƒ } t  j |  | | ƒ j | d ƒ } d | j ƒ  } t d	 | d
 d d | d | | ƒ }	 t |	 ƒ }
 |	 j | | ƒ |
 j t	 j
 | ƒ | ƒ |	 j | | ƒ } |
 j | | ƒ } t | d ƒ t | d ƒ d | j ƒ  | j | d ƒ j ƒ  } t d	 | d
 d d | d | | ƒ }	 t |	 ƒ }
 |	 j | | ƒ |
 j t	 j
 | ƒ | ƒ |	 j | | ƒ } |
 j | | ƒ } |
 j | | ƒ } t | d ƒ t | d ƒ d S(   s(   tests if the sag regressor performs welliûÿÿÿi   i   gü©ñÒMbP?gš™™™™™¹?i    i   g      à?R`   R_   RN   Rb   R#   g®Gáz®ï?N(   iûÿÿÿi   (   R   R+   R,   t   linspacet   reshapeR    R   R   Rg   Rx   Ry   t   scoreR   t   randn(   t   xmint   xmaxR<   R`   Rb   R#   RD   R4   R   Rz   R{   t   score1t   score2(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_sag_regressorÇ  s8    !&c          C   sÙ  d }  d } d } d } t  } t d | d d d d d	 d ƒ \ } } t | |  | d
 t  ƒ} t j | ƒ } t j | ƒ }	 d |	 | | d k <|	 } t d d d d |  | d | d | d d d | d d ƒ }
 t |
 ƒ } |
 j | | ƒ | j t	 j
 | ƒ | ƒ t | | | |  d | d t d | ƒ\ } } t | | | |  d | d t d t  d | ƒ\ } } t |
 j j ƒ  | j ƒ  d d ƒt |
 j | d d ƒt | j j ƒ  | j ƒ  d d ƒt | j | d d ƒd S(   s4   tests if the binary classifier is computed correctlygš™™™™™¹?i2   gñhãˆµøä>R<   R\   i   R]   i    R^   RZ   iÿÿÿÿi   R_   RN   Ra   g      ð?Rb   R`   iM   R:   Rc   Rd   R6   R7   R8   Re   N(   Rf   R   R[   R   t   uniquet   onesR   R   Rg   Rx   Ry   RV   R   R	   Rj   R    R   Rk   (   R#   R<   R6   R`   R:   R4   R   R5   t   classest   y_tmpRz   R{   t	   spweightst   spinterceptR…   R†   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt&   test_sag_classifier_computed_correctlyî  sB    c          C   s¥  d }  d } d } d } t  } t d | d d d d	 d
 d ƒ \ } } t | |  | d t  ƒ} t j | ƒ } t d d d d |  | d | d | d d d | d d ƒ }	 t |	 ƒ }
 |	 j | | ƒ |
 j t j	 | ƒ | ƒ g  } g  } g  } g  } xÁ | D]¹ } t j
 | ƒ } d | | | k <t | | | |  d t d | d | ƒ\ } } t | | | |  d t d | d t  d | ƒ\ } } | j | ƒ | j | ƒ | j | ƒ | j | ƒ qû Wt j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } xª t | ƒ D]œ \ } } t |	 j | j ƒ  | | j ƒ  d d ƒt |	 j | | | d d ƒt |
 j | j ƒ  | | j ƒ  d d ƒt |
 j | | | d d ƒqWd S(   s8   tests if the multiclass classifier is computed correctlygš™™™™™¹?i   gñhãˆµøä>i(   R<   R\   i   R]   i    R^   RZ   R_   RN   Ra   g      ð?Rb   R`   iM   R:   Rc   Rd   iÿÿÿÿR7   R6   R8   Re   i   i   N(   Rf   R   R[   R   R¤   R   R   Rg   Rx   Ry   R¥   RV   R   t   appendt   vstackR‹   t	   enumerateR	   Rj   R    R   Rk   (   R#   R<   R`   Rb   R:   R4   R   R5   R¦   Rz   R{   t   coef1Ru   t   coef2Rn   t   clt	   y_encodedRƒ   R„   R…   R†   t   i(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt&   test_sag_multiclass_computed_correctly  s\    s    ignore: Default multi_class willc          C   s'  d }  d } d } d } d } t  j j d ƒ } | j d | | f ƒ } | j d | ƒ } t  j | | ƒ } t  j | ƒ } t d d	 d
 d |  | d | d | d d ƒ }	 t |	 ƒ }
 |	 j | | ƒ |
 j t	 j
 | ƒ | ƒ |	 j | ƒ } |
 j | ƒ } t | | d d ƒt | | d d ƒd S(   s(   tests if classifier results match targetgš™™™™™¹?i   i
   g{®Gáz„?iÈ   i    Rp   R_   RN   Ra   g      ð?Rb   R`   R]   iM   Re   i   N(   R   R+   R,   Rq   R!   t   signR   R   Rg   Rx   Ry   t   predictR   (   R#   R=   R<   R`   Rb   RD   R4   R"   R   Rz   R{   t   pred1t   pred2(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_classifier_resultsT  s&    c          C   s6  d }  d } d } d } t  } t d | d d d d	 d
 d ƒ \ } } t | |  | d t  ƒ} t j | ƒ } t j | ƒ }	 d |	 | | d k <|	 } i d d 6d d 6}
 t d d d d |  | d | d | d d d | d d d |
 ƒ } t | ƒ } | j | | ƒ | j t	 j
 | ƒ | ƒ t ƒ  } t |
 t j | ƒ | ƒ } | | j | ƒ } t | | | |  d | d t d | d | ƒ\ } } t | | | |  d | d t d t  d | d | ƒ\ } } t | j j ƒ  | j ƒ  d d ƒt | j | d d ƒt | j j ƒ  | j ƒ  d d ƒt | j | d d ƒd  S(!   s8   tests binary classifier with classweights for each classgš™™™™™¹?i2   i   gñhãˆµøä>R<   R\   i   R]   i
   R^   RZ   iÿÿÿÿi   gÍÌÌÌÌÌÜ?gš™™™™™á?R_   RN   Ra   g      ð?Rb   R`   iM   R:   Rc   Rd   t   class_weightR6   R7   R9   R8   Re   N(   Rf   R   R[   R   R¤   R¥   R   R   Rg   Rx   Ry   R   R   t   fit_transformRV   R   R	   Rj   R    R   Rk   (   R#   R<   R6   R`   R:   R4   R   R5   R¦   R§   R¹   Rz   R{   t   let   class_weight_R9   R¨   R©   R…   R†   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt#   test_binary_classifier_class_weightm  sP    		c          C   sý  d }  d } d } d } i d d 6d d 6d	 d
 6} t  } t d | d d d d d d ƒ \ } } t | |  | d t  ƒ} t j | ƒ }	 t d d d d |  | d | d | d d d | d d d | ƒ }
 t |
 ƒ } |
 j | | ƒ | j t j	 | ƒ | ƒ t
 ƒ  } t | t j | ƒ | ƒ } | | j | ƒ } g  } g  } g  } g  } xÁ |	 D]¹ } t j | ƒ } d | | | k <t | | | |  d | d t d | ƒ\ } } t | | | |  d | d t d | d  t  ƒ\ } } | j | ƒ | j | ƒ | j | ƒ | j | ƒ qSWt j | ƒ } t j | ƒ } t j | ƒ } t j | ƒ } xª t |	 ƒ D]œ \ } } t |
 j | j ƒ  | | j ƒ  d! d
 ƒt |
 j | | | d! d ƒt | j | j ƒ  | | j ƒ  d! d
 ƒt | j | | | d! d ƒqYWd" S(#   s1   tests multiclass with classweights for each classgš™™™™™¹?i   gñhãˆµøä>i2   gÍÌÌÌÌÌÜ?i    gš™™™™™á?i   g      è?i   R<   R\   i   R]   R^   RZ   R_   RN   Ra   g      ð?Rb   R`   iM   R:   Rc   Rd   R¹   iÿÿÿÿR6   R7   R9   R8   Re   N(   Rf   R   R[   R   R¤   R   R   Rg   Rx   Ry   R   R   Rº   R¥   RV   R   R«   R¬   R‹   R­   R	   Rj   R    R   Rk   (   R#   R<   R`   Rb   R¹   R:   R4   R   R5   R¦   Rz   R{   R»   R¼   R9   R®   Ru   R¯   Rn   R°   R±   Rƒ   R„   R…   R†   R²   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt'   test_multiclass_classifier_class_weightŸ  sf    		c          C   sJ   d d g d d g g }  d d g } t  t d t d d ƒ j |  | ƒ d S(	   s1   tests if ValueError is thrown with only one classi   i   i   i   s;   This solver needs samples of at least 2 classes in the dataR_   RN   N(   R   RŽ   R   Rg   (   R4   R   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_classifier_single_classÞ  s    c          C   s¦   d d g d d g g }  d d g } t  } d } d } t d d d d | d	 | ƒ } t t | | j |  | ƒ t d	 | d d d
 | ƒ } t t | | j |  | ƒ d  S(   Ni    i   iÿÿÿÿg      ð?sQ   Current sag implementation does not handle the case step_size * alpha_scaled == 1R_   RN   Ra   R:   R#   (   Rr   R   R   RP   Rg   R   (   R4   R   R:   R#   R™   Rz   R{   (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_step_size_alpha_errorë  s    	c          C   st  t  j t  j j t j ƒ }  } |  j \ } } t t j | ƒ ƒ } t	 d ƒ } | j
 | | ƒ } | j
 | ƒ } | j
 | ƒ } t j | | ƒ t |  | | d d ƒ\ }	 }
 t |	 | | | | | ƒ \ } } t ƒ  } | j | ƒ } t j | | f ƒ j j ƒ  } t | |  | d | ƒ \ } } }
 | j | d ƒ } | d  d  … d  d … f j } t | | ƒ t | | ƒ d  S(   Ni*   R]   g        iÿÿÿÿ(   t   irist   datat   targett   astypeR   RŒ   R)   R3   R¤   R   Rž   t   absR   R   R   Rº   R¬   t   TR    R   Rœ   R	   R   (   R4   R   R<   R=   t	   n_classesRD   R>   RA   t   sample_weightst   datasett   _t   loss_1t   grad_1t   lbint   Y_bint   weights_interceptt   loss_2t   grad_2(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   test_multinomial_lossü  s*    		c          C   sI  d }  t  j d d g d d g d d g d d g g ƒ } t  j d d d	 d g ƒ } t ƒ  } | j | ƒ } t  j d
 d d g d d d g g ƒ } t  j d d d g ƒ } t  j d d d d g ƒ } t  j | | ƒ | } t | d d ƒ}	 | |	 d  d  … t  j f }
 | d  d  … t  j f |
 | j ƒ  } | d  d  … t  j f t  j |
 ƒ | } t  j | j	 | ƒ } t  j
 | | f ƒ j	 j ƒ  } t | | | d | ƒ \ } } } | j |  d ƒ } | d  d  … d  d … f j	 } t | | ƒ t | | ƒ d } t  j d d d 
g d d 
d g g ƒ } t | | ƒ t | | ƒ d  S(   Ni   gš™™™™™ñ?gš™™™™™@gš™™™™™Àgffffff
@gš™™™™™Ài    i   i   gš™™™™™¹?gš™™™™™É?g333333Ó?g333333ó?gÍÌÌÌÌÌô¿g      ð?gš™™™™™É¿gš™™™™™é?RW   g        iÿÿÿÿgc¦>1X\'@g¯>úîÖá¿g6’á
èù¿gÇØ	/Ái@gúbïÅíì¿g›sô@g<FzQkÀ(   R   R‹   R   Rº   R!   R   t   newaxisRY   R   RÆ   R¬   R    R   Rœ   R   R	   (   RÇ   R4   R   RÍ   RÎ   R>   RA   RÈ   t
   predictiont   logsumexp_predictionR   RË   t   diffRÌ   RÏ   RÐ   RÑ   RÊ   t   loss_gtt   grad_gt(    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt"   test_multinomial_loss_ground_truth  s4    3	'(*(E   R   t   pytestt   numpyR   t   scipy.sparseR8   Rx   t   sklearn.linear_model.sagR    t   sklearn.linear_model.sag_fastR   t   sklearn.linear_modelR   R   t   sklearn.linear_model.baseR   t   sklearn.linear_model.logisticR   t   sklearn.utils.fixesR   t   sklearn.utils.extmathR   t   sklearn.utils.testingR   R	   R
   R   R   t   sklearn.utilsR   R   t   sklearn.preprocessingR   R   t   sklearn.datasetsR   R   t   sklearn.baseR   RÁ   R   R   R   R   R(   R2   Rr   Rf   RN   RV   R[   Ro   Rv   t   markt   filterwarningsR€   R‚   R‡   Rš   R£   Rª   R³   R¸   R½   R¾   R¿   RÀ   RÒ   RÙ   (    (    (    sB   lib/python2.7/site-packages/sklearn/linear_model/tests/test_sag.pyt   <module>   s`   		
					7	f	'	 ,	,'+;2?	