
    {Kg_q                        d dl Z d dlZd dlZd dl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 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mZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z% d dl&m'Z' d dl(m)Z)  e       Z*d Z+d Z,d Z-d Z.d Z/	 	 	 	 	 	 d0dZ0	 	 	 	 	 	 	 d1dZ1d2dZ2d Z3d Z4ejj                  jm                  d      ejj                  jo                  de)      d               Z8ejj                  jm                  d      ejj                  jo                  de)      d               Z9ejj                  jm                  d      ejj                  jo                  de)      d               Z:d  Z;ejj                  jo                  d! e<d"            ejj                  jo                  de)      d#               Z=ejj                  jm                  d      ejj                  jo                  de)      d$               Z>ejj                  jm                  d      ejj                  jo                  de)      d%               Z?ejj                  jo                  de)      d&        Z@ejj                  jm                  d      ejj                  jo                  de)      d'               ZAd( ZBd) ZCd* ZDd+ ZEejj                  jo                  d,d-d.g      d/        ZFy)3    N)	logsumexp)HalfMultinomialLoss)clone)	load_iris
make_blobsmake_classification)LogisticRegressionRidge)make_dataset)LinearModelLoss)get_auto_step_size)"_multinomial_grad_loss_all_samples)OneVsRestClassifier)LabelBinarizerLabelEncoder)check_random_statecompute_class_weight)assert_allcloseassert_almost_equalassert_array_almost_equal)	row_norms)CSR_CONTAINERSc                     | |z  }|dkD  rt        j                  |       | z  S |dk  r| S | t        j                  |      dz   z  S )Ng      2@g      2      ?)mathexp)pyzs      g/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_sag.py	log_dlossr!   $   sQ    	AA4xxx|qb  5yr	2!s"##    c           	          t        j                  t        j                  dt        j                  | | z        z               S )Nr   )npmeanlogr   r   r   s     r    log_lossr(   .   s-    77266#rAv./00r"   c                     | |z
  S )N r'   s     r    squared_dlossr+   3   s    q5Lr"   c                 D    t        j                  d| |z
  z  | |z
  z        S )N      ?)r$   r%   r'   s     r    squared_lossr.   7   s"    773!a%=AE*++r"   c                     | j                         } t        j                  ||       } |||      }||| j                  |       z  dz  z  }|S )N       @)ravelr$   dot)walphamyXmyylosspredr   s          r    get_pobjr9   <   sH    		A66#q>DT3Aq	C	AHr"   c
           	         | 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}t        |      D ]"  }t        |
      D ]  }t        |j                         |
z        }| |   }|j                  |       t        j                  ||      |z   } ||||         }||||   z  }||z  ||z  z   }|||   z
  }||z  }|||<   |	r|||z  ddt        |      z  z
  z  z  }|r]|||   z
  }|||<   ||z  }||ddt        |      z  z
  z  z  }|	r|||z  t        |      z  |z  |z   z  }n|||z  t        |      z  |z  z  }|||z  t        |      z  z  } % ||fS )Nr              M   r   {Gz?)shaper$   zerosrandomRandomStatesetrangeintrandaddr2   len)Xr   	step_sizer4   n_iterdlosssparsesample_weightfit_interceptsaga	n_samples
n_featuresweightssum_gradientgradient_memory	interceptintercept_sum_gradientintercept_gradient_memoryrngdecayseenepochkidxentryr   gradientupdategradient_corrections                                r    sagrc   D   s7    GGAJ
zIhhqwwqz"G88AGGAJ'Lhh	:67OI  " 3
))


#CE5D vy!Achhj9,-CcFEHHSMug&2AQ#'H(M#..X%7F"(?3+?"?//L#)OC .:a#D	/>QRR&.1J31O&O#19)#.&*==&#yC#D	/4I'JJ#!$::SYFN+", ,I -C!Cc$i!ORW!WWIy</#d);;G9 " > Ir"   c                    ||z  dk(  rt        d      | j                  d   | j                  d   }}t        j                  |      }t        j                  |      }t        j                  |t              }t        j                  |      }t        |
      }d}d}d}d}t               }t        j                  ||z        }|rd}d}t        |      D ]>  }t        |      D ],  }t	        |j                         |z        }| |   }|j                  |       |dk\  r\t        |      D ]N  }||   dk(  r||xx   ||dz
     ||   z  z  cc<   n%||xx   ||dz
     |||   dz
     z
  ||   z  z  cc<   |||<   P |t        j                  ||      z  |z   } ||||         }||||   z  }||z  } | ||   |z  z
  }!||!z  }|	r8t        |      D ]*  }||xx   |!|   |z  ddt        |      z  z
  z  |z  z  cc<   , |rX|||   z
  }!||!z  }|!|ddt        |      z  z
  z  z  }!|	r|||z  t        |      z  |z  |!z   z  }n|||z  t        |      z  |z  z  }|||<   |d||z  z
  z  }|dk(  r||t        |      z  z  |d<   n||dz
     ||t        |      z  z  z   ||<   |dk\  rj|dk  ret        |      D ]K  }||   dk(  r||xx   ||   ||   z  z  cc<   n"||xx   ||   |||   dz
     z
  ||   z  z  cc<   |dz   ||<   M d||<   ||z  }d}|dz  }/ A t        |      D ]I  }||   dk(  r||xx   ||dz
     ||   z  z  cc<   %||xx   ||dz
     |||   dz
     z
  ||   z  z  cc<   K ||z  }||fS )	Nr   z:Sparse sag does not handle the case step_size * alpha == 1r   r;   dtyper<   r>   g&.>)ZeroDivisionErrorr?   r$   r@   rE   r   rC   rD   rF   rG   r2   rH   )"rI   r   rJ   r4   rK   rL   rN   rM   rO   rP   random_staterQ   rR   rS   rT   last_updatedrU   rY   rV   rW   wscalerZ   r[   c_sumcounterr\   r]   r^   r_   jr   r`   ra   rb   s"                                     r    
sag_sparsern      si    5CH
 	
 GGAJ
zIhhz"G88J'L88Jc2Lhhy)O
\
*CI FE5DHHVi'(E Gvy!Achhj9,-CcFEHHSM!|z*A#A!+
eGaK&8<?&JJ

!'A+.|A7J1KK(O', ,
 '.LO + "&&00I=AQ#'H(M#..X%F"(OC,@5,H"I//Lz*AAJ+A.#$sSY.0 !!J + &.1E&E#&*==&#yC#D	/4I'JJ#!$::SYFN+", ,I -C!Cc$i!ORW!WWI#+OC cEI---F!|$T(:;a!&w{!3i6CPTICU6V!Vg!|z*A#A!+
eGn|A&FF

!'NU<?Q3F-GG(O', ,
 '.kLO + "#g6!qLGE " J :?aAJ%!,|A>>JAJgk"U<?Q+>%??Q   J	  vGIr"   c                     |r9dt        j                  t        j                  | | z  d            |z   d|z  z   z  S dt        j                  t        j                  | | z  d            |z   |z   z  S )N      @r;   axisr   )r$   maxsum)rI   r4   rO   classifications       r    get_step_sizerv      sc    bffRVVAE23mCcEkQRRbffRVVAE23mCeKLLr"   c                     d} t        | ddd      \  }}d||dk(  <   d}d}t        |||      }d	D ]$  }|d
k(  rd}nd}t        ||dd|z  | z  |d      }|j                  ||       t	        |||||t
        ||dk(        \  }	}
t        |||||t
        ||dk(        \  }}t        j                  |	      }	t        j                  |
      }
t        j                  |      }t        j                  |      }t        |	|j                  d       t        |
|j                  d       t        ||j                  d       t        ||j                  d       ' y )N      r   皙?rQ   centersrh   cluster_std皙?T)rc   rP   rc   P   ,  dy=r   
   solverrO   tolCmax_iterrh   rP   )rK   rL   rO   rP   	   decimal)r   rv   r	   fitrn   r!   rc   r$   
atleast_2d
atleast_1dr   coef_
intercept_)rQ   rI   r   r4   rO   rJ   r   rK   clfrS   rV   weights2
intercept2s                r    test_classifier_matchingr      sg   I	11RUVDAqAa1fIEMa6I!U?F F 'EkI%
 	1''6!	
  #'6!	 
* --(MM),	==*]]:.
!'399a@!)S^^QG!(CIIqA!*cnnaHY "r"   c            	      @   d} d}t         j                  j                  d      }|j                  | |f      }|j                  |      }|j	                  |      }d}d}d}t        |||d      }	t        |d	d
|| z  |      }
|
j                  ||       t        |||	||t        |      \  }}t        |||	||t        |      \  }}t        ||
j                         t        ||
j                         t        ||
j                         t        ||
j                         y )Nr      sizer   d   TFru   r   rc   )rO   r   r   r4   r   rK   rL   rO   )r$   rA   rB   normalr2   rv   r
   r   rn   r+   rc   r   r   r   )rQ   rR   rY   rI   true_wr   r4   rK   rO   rJ   r   weights1
intercept1r   r   s                  r    test_regressor_matchingr   6  s"   IJ
))


#C

J/
0AZZZZ(F	fAEFMaeLI
#iC GGAqM%		#Hj 		#Hj Hcii(J/Hcii(J/r"   zignore:The max_iter was reachedcsr_containerc                    d}d}d}t        |ddd      \  }}t        dd	d
d|z  |z  |d      }t        |      }t        d	d
d|z  |z  |d      }|j                  ||       |j                   | |      |       |j                  ||       t	        |j
                  |||t              }	t	        |j
                  |||t              }
t	        |j
                  |||t              }t        |	|
d       t        |
|d       t        ||	d       y)z%tests if the sag pobj matches log regr   r   rx   ry   r   rz   r{   rc   FgHz>r   r   )rO   r   r   r   rh      r   N)r   r	   r   r   r9   r   r(   r   )r   rQ   r4   r   rI   r   clf1clf2clf3pobj1pobj2pobj3s               r    )test_sag_pobj_matches_logistic_regressionr   f  s    IEH	11RUVDAq
+	
!D ;D
+	
!D 	HHQNHH]1q!HHQNTZZ1h7ETZZ1h7ETZZ1h7EeUA6eUA6eUA6r"   c                    d}d}d}d}d}t         j                  j                  d      }|j                  ||f      }|j                  |      }|j	                  |      }	t        |dd||d	      }
t        |
      }t        |d
d||d	      }|
j                  ||	       |j                   | |      |	       |j                  ||	       t        |
j                  |||	t              }t        |j                  |||	t              }t        |j                  |||	t              }t        ||d       t        ||d       t        ||d       y)z'tests if the sag pobj matches ridge regr   r   r   Fr   r   rc   *   rO   r   r   r4   r   rh   h㈵>lsqrr   r   N)r$   rA   rB   r   r2   r
   r   r   r9   r   r.   r   )r   rQ   rR   r4   rK   rO   rY   rI   r   r   r   r   r   r   r   r   s                   r    &test_sag_pobj_matches_ridge_regressionr     s;    IJEFM
))


#C

J/
0AZZZZ(F	fA#D ;D#D 	HHQNHH]1q!HHQNTZZ1l;ETZZ1l;ETZZ1l;EeUA6eUA6eUA6r"   c                    d}d}d}d}d}d}t         j                  j                  d      }|j                  ||f      }|j                  |      }	t        j                  ||	      d	z   }
t        |||d
      }t        ||d||z  ||      }t        |      }|j                  ||
       |j                   | |      |
       t        ||
|||t        ||      \  }}t        ||
|||t        d||	      \  }}t        |j                  j                         |j                         d       t        |j                  |d       y)z0tests if the sag regressor is computed correctlyrz   r   (   r   gư>Tr   r   r0   Fr   rc   r   )rK   rL   rO   rh   )rK   rL   rM   rO   rh      r   r;   N)r$   rA   rB   r   r2   rv   r
   r   r   rn   r+   r   r   r1   r   r   )r   r4   rR   rQ   r   r   rO   rY   rI   r3   r   rJ   r   r   
spweights1spintercept1
spweights2spintercept2s                     r    %test_sag_regressor_computed_correctlyr     sR    EJIH
CM
))


"C

J/
0A



#A
q!sAaeLI#iD ;DHHQNHH]1q!)		#	 J  *		#
 J djj..0*2B2B2DaPqAr"   c            
         t        j                  g dg dg dgt         j                        } d}d}d}t        | d	      j	                         }| j
                  d
   }t        ||d       dD ]  }dD ]  }|rc||z   t        |      z   }|d|z  z   t        |      z   dz  }t        d|z  |z  |      }	t        d|z  |z  |      }
dd|z  |	z   z  }dd|z  |
z   z  }n+d||z   t        |      z   z  }d|d|z  z   t        |      z   z  }t        ||d|||      }t        ||d|||      }t        ||d       t        ||d         d}t        j                  t        |      5  t        ||d|       d d d        y # 1 sw Y   y xY w)N)r;   ry   r   )ry   r   r   )ry   r   ry   re   333333?F   T)squaredr   r   r   )TFrp   ry   r;   r   r   )rQ   is_sagar&   z:Unknown loss function for SAG solver, got wrong instead ofmatchwrong)r$   arrayfloat64r   rs   r?   r   rE   minr   pytestraises
ValueError)rI   r4   rO   max_squared_summax_squared_sum_rQ   rP   L_sqrL_logmun_sqrmun_logstep_size_sqrstep_size_logstep_size_sqr_step_size_log_msgs                   r    test_get_auto_step_sizer     s   
)Y	2"**EAEM O D1557
I)91E*M'%/#m2DD(3;6]9KKsRa)me3U;a)me3U; !QY%8 9 !QY%8 9 #'>]AS'S T ##cEk1C4FF! 0 #N 0 #N  ~qI~qIA + F GC	z	-+UG]K 
.	-	-s   &E>>Fseedr   c                    d\  }}d}d}d}d}t         j                  j                  |       }t        j                  |||      j	                  |d      }	d|	j                         z  }
t        |d|||z  |	      }t        |      }|j                  |	|
       |j                   ||	      |
       |j                  |	|
      }|j                  |	|
      }|d
kD  sJ |d
kD  sJ d|	j                         z  |j                  |d      j                         z   }
t        |d|||z        }t        |      }|j                  |	|
       |j                   ||	      |
       |j                  |	|
      }|j                  |	|
      }|dkD  sJ |dkD  sJ y)z(tests if the sag regressor performs well)r   r   gMbP?r   rz   r;   r-   rc   )r   r   r   r4   rh   g\(\?)r   r   r   r4   ?N)r$   rA   rB   linspacereshaper1   r
   r   r   scorerandn)r   r   xminxmaxrQ   r   r   r4   rY   rI   r   r   r   score1score2s                  r    test_sag_regressorr   *  s    JD$I
CHE
))


%C
D$	*229a@A 	aggiAiD ;DHHQNHH]1q!ZZ1FZZ1FD==D== 	aggi#))Iq17799ASARSD;DHHQNHH]1q!ZZ1FZZ1FD==D==r"   c           
         d}d}d}d}d}t        |ddd      \  }}t        |||d      }t        j                  |      }	t        j                  |      }
d	|
||	d
   k7  <   |
}t        dd|z  |z  ||d|      }t        |      }|j                  ||       |j                   | |      |       t        |||||t        |      \  }}t        |||||t        d|      \  }}t        |j                  j                         |j                         d       t        |j                  |d
       t        |j                  j                         |j                         d       t        |j                  |d
       y)z4tests if the binary classifier is computed correctlyrz   2   r   Try   r   r{   r   r~   r;   rc   r   r=   r   r   r   r   rh   rO   r   )rK   rL   rM   rO   r   N)r   rv   r$   uniqueonesr	   r   r   rn   r!   r   r   r1   r   r   )r   r4   rQ   rK   r   rO   rI   r   rJ   classesy_tmpr   r   	spweightsspinterceptr   r   s                    r    &test_sag_classifier_computed_correctlyr   U  su    EIF
CM	11RUVDAqadKIiilGGGIEE!wqz/A
+	
!#D ;DHHQNHH]1q!'		#I{  *		#	 J djj..0)//2CQOa@djj..0*2B2B2DaPqAr"   c                    d}d}d}d}d}t        |ddd      \  }}t        |||d	      }t        j                  |      }	t	        t        d
d|z  |z  ||d|            }
t        |
      }|
j                  ||       |j                   | |      |       g }g }g }g }|	D ]  }t        j                  |      }d|||k7  <   t        ||||t        ||      \  }}t        ||||t        |d|      \  }}|j                  |       |j                  |       |j                  |       |j                  |        t        j                  |      }t        j                  |      }t        j                  |      }t        j                  |      }t        |	      D ]  \  }}t        |
j                   |   j"                  j%                         ||   d       t        |
j                   |   j&                  ||   d       t        |j                   |   j"                  j%                         ||   d       t        |j                   |   j&                  ||   d        y)z8tests if the multiclass classifier is computed correctlyrz   rx   r   F   Tr   r   r{   r   rc   r   r=   r   r~   )rL   rK   rO   )rL   rK   rM   rO   r>   )rtolr-   N)r   rv   r$   r   r   r	   r   r   r   rn   r!   appendvstackr   	enumerater   estimators_r   r1   r   )r   r4   rQ   r   r   rO   rI   r   rJ   r   r   r   coef1r   coef2r   cl	y_encodedr   r   r   r   is                          r    &test_sag_multiclass_computed_correctlyr     sG    EI
CHM	11RUVDAqadKIiilGEkI%'	
	D ;DHHQNHH]1q!EJEJGGI&		!r'#-'$
 
L $.'	$
 
L 	Z ,'Z ,'7 : IIeE*%JIIeE*%J7#2((+1177958$O((+66
1DQ((+1177958$O((+66
1DQ $r"   c                 
   d}d}d}d}d}t         j                  j                  d      }|j                  ||f      }|j                  |      }t        j                  ||      }	t        j
                  |	      }	t        dd	|z  |z  ||d
      }
t        |
      }|
j                  ||	       |j                   | |      |	       |
j                  |      }|j                  |      }t        ||	d       t        ||	d       y)z(tests if classifier results match targetrz   rx   r   r>      r   r   rc   r   r=   )r   r   r   r   rh      r   N)r$   rA   rB   r   r2   signr	   r   r   predictr   )r   r4   rR   rQ   r   r   rY   rI   r3   r   r   r   pred1pred2s                 r    test_classifier_resultsr     s     EJI
CH
))


"C

J/
0A



#A
q!A

A
+	
!D ;DHHQNHH]1q!LLOELLOEq"-q"-r"   c                    d}d}d}d}d}t        |ddd      \  }}t        |||d	      }t        j                  |      }	t        j                  |      }
d
|
||	d   k7  <   |
}ddd}t        dd|z  |z  ||d||      }t        |      }|j                  ||       |j                   | |      |       t               }t        |t        j                  |      |      }||j                  |         }t        |||||t        ||      \  }}t        |||||t        d||	      \  }}t        |j                  j                         |j                         d       t!        |j"                  |d       t        |j                  j                         |j                         d       t!        |j"                  |d       y)z8tests binary classifier with classweights for each classrz   r   rx   r   Try   r   r{   r   r~   r;   r   g?)r;   r~   rc   r   r=   )r   r   r   r   rh   rO   class_weight)r   r   )rK   rL   rN   rO   )rK   rL   rM   rN   rO   r   N)r   rv   r$   r   r   r	   r   r   r   r   fit_transformrn   r!   r   r   r1   r   r   )r   r4   rQ   rK   r   rO   rI   r   rJ   r   r   r   r   r   leclass_weight_rN   r   r   r   r   s                        r    #test_binary_classifier_class_weightr    s    EIF
CM	12SVWDAqadKIiilGGGIEE!wqz/A&L
+	
!#!D ;DHHQNHH]1q!	B(ryy|qQM!""2"21"56M'		##	I{  *		##
 J djj..0)//2CQOa@djj..0*2B2B2DaPqAr"   c                      ddgddgg} ddg}d}t        j                  t        |      5  t        d      j	                  | |       d	d	d	       y	# 1 sw Y   y	xY w)
z1tests if ValueError is thrown with only one classr;   ry   r   r   z;This solver needs samples of at least 2 classes in the datar   rc   )r   N)r   r   r   r	   r   )rI   r   r   s      r    test_classifier_single_classr  5  sQ    
Q!QA	
AA
GC	z	-%(,,Q2 
.	-	-s   AAc                     ddgddgg} ddg}d}d}t        j                  d      }t        dd|z  |      }t        j                  t
        |	      5  |j                  | |       d d d        t        |d|
      }t        j                  t
        |	      5  |j                  | |       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)Nr   r;   r~   Fr   zQCurrent sag implementation does not handle the case step_size * alpha_scaled == 1rc   )r   r   rO   r   )rO   r   r4   )reescaper	   r   r   rg   r   r
   )rI   r   rO   r4   r   r   r   s          r    test_step_size_alpha_errorr
  ?  s    
Q!QA	
BAME
))	)C
 UcEkWD	(	4A 
5 }U%HD	(	4A 
5	4	 
5	4 
5	4s   B2B>2B;>Cc                  "   t         j                  t         j                  j                  t        j
                        }} | j                  \  }}t        t	        j                  |            }t        d      }|j                  ||      }|j                  |      }t	        j                  |j                  |            }t        | ||d      \  }	}
t        |	|||||      \  }}t        t        |      d      }t	        j                   ||f      j"                  }|j%                  || |d|      \  }}|d d d df   j"                  }|t	        j&                  |      z  }|t	        j&                  |      z  }t)        ||       t+        ||       y )	Nr   rh   	n_classesT	base_lossrO   r<   l2_reg_strengthrN   r~   )irisdatatargetastyper$   r   r?   rH   r   r   r   absr   r   r   r   r   Tloss_gradientrt   r   r   )rI   r   rQ   rR   r  rY   rS   rV   sample_weightsdataset_loss_1grad_1r7   weights_interceptloss_2grad_2s                    r    test_multinomial_lossr"  R  s^   99dkk((4qAGGIzBIIaL!I
R
 Cii
I.G		)$IVVCIIi01N aNDJGQ7)Y
INFF %	:D 		7I"6799''1aN ( NFF AssF^F
bff^$$F
bff^$$F ff-'r"   c                     d} t        j                  ddgddgddgddgg      }t        j                  g dt         j                        }t               }|j	                  |      }t        j                  g d	g d
g      }t        j                  g d      }t        j                  g d      }t        j
                  ||      |z   }t        |d      }	||	d d t         j                  f   z
  }
|d d t         j                  f   |
z  |z  j                          }|d d t         j                  f   t        j                  |
      |z
  z  }t        j
                  |j                  |      }t        t        |       d      }t        j                  ||f      j                  }|j                  |||d|      \  }}|d d d df   j                  }|t        j                  |      z  }|t        j                  |      z  }t        ||       t!        ||       d}t        j                  g dg dg      }t        ||       t!        ||       y )Nr   r   g@ggffffff
@g)r   r;   ry   r   re   )rz   g?g333333?)r   r   g)r   r   gɿ)皙?r;   r;   r$  r;   rq   r  Tr  r<   r  r~   gc>1X\'@)g>g6
g	/i@)gbgs@g<FzQk)r$   r   r   r   r  r2   r   newaxisrt   r   r  r   r   r   r  r   r   )r  rI   r   lbinY_binrS   rV   r  
predictionlogsumexp_predictionr   r  diffr  r7   r  r   r!  loss_gtgrad_gts                       r    "test_multinomial_loss_ground_truthr-  u  s   I
3*sDkC;c
CDA
RZZ0ADq!Ehh)9:;G(IXX./N7#i/J$Za8)!RZZ-88Aam,q058==??F!RZZ-(BFF1I,=>DVVACCF%	:D 		7I"6799''1aN ( NFF AssF^F
bff^$$F
bff^$$F'ff- !Ghh	*,MNG (fg.r"   r   rc   rP   c                 ^   t         j                  j                  d      }t        |      \  }}t	        | |d      }|j                  ||       t         j                  |j                  d d  t        j                  t        d      5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr   r  T)r   rh   
warm_startzFloating-point under-/overflowr   )r$   rA   rB   r   r	   r   nanr   r   r   r   )r   rY   rI   r   r   s        r     test_sag_classifier_raises_errorr1    s}     ))


#CC0DAq
F
NCGGAqM
 66CIIaL	z)I	J1 
K	J	Js   B##B,)r;   NFNTF)r;   NNFTFr   )T)Gr   r  numpyr$   r   scipy.specialr   sklearn._loss.lossr   sklearn.baser   sklearn.datasetsr   r   r   sklearn.linear_modelr	   r
   sklearn.linear_model._baser   !sklearn.linear_model._linear_lossr   sklearn.linear_model._sagr   sklearn.linear_model._sag_fastr   sklearn.multiclassr   sklearn.preprocessingr   r   sklearn.utilsr   r   sklearn.utils._testingr   r   r   sklearn.utils.extmathr   sklearn.utils.fixesr   r  r!   r(   r+   r.   r9   rc   rn   rv   r   r   markfilterwarningsparametrizer   r   r   r   rD   r   r   r   r   r  r  r
  r"  r-  r1  r*   r"   r    <module>rE     s    	   # 2  G G : 3 = 8 M 2 > B 
 , .{$1
,
 
	=J 
	rjM3Il-0` =>.9"7 : ?"7J =>.9(7 : ?(7V =>.93B : ?3Bx/Ld q*.9& : +&R =>.93B : ?3Bl =>.9FR : ?FRR .9. :.: =>.9:B : ?:Bz3& (F)/X E6?3 4r"   