
    /ЦiJ                    X   S SK r S SKrS SKJr  S SKrS SKrS SKrS SKJ	r
  S SKJrJrJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJrJr  S S
KJr  S SK J!r!J"r"J#r#J$r$  S SK%J&r&  S SK'J(r(  S SK)J*r*J+r+J,r,J-r-  S r. " S S\R^                  5      r0 " S S\Rb                  5      r2 " S S\Rf                  5      r4S r/S r1S r3S r5S r6S r7\Rp                  " SS/SS/SS/SS/SS/SS//5      r9/ S Qr:\Rp                  " SS/SS/S!S//5      r;/ S"Qr<\Rp                  " SS/S#S$/S%S&/SS/S'S$/S&S&/SS/S S(/SS//	5      r=S)/S!-  S*/S!-  -   S+/S!-  -   r>\Rp                  " S%S$/SS/S S//5      r?/ S,Qr@\Rp                  " / S-Q/ S-Q/ S.Q/ S.Q/ S/Q/ S/Q/ S0Q/ S0Q/5      rA\Rp                  " / S1Q5      rB\Rp                  " / S2Q/ S3Q/ S4Q/ S5Q/ S6Q/ S7Q/ S8Q/ S9Q/5      rC\Rp                  " / S1Q5      rD\R                  " 5       rF\Rp                  " SS/SS/SS/SS/SS/SS//5      rG/ S QrH/ S:QrISS; jrJS< rK\R                  R                  S=\/\5\1\6/5      \R                  R                  S>/ S?Q5      S@ 5       5       rN\R                  R                  S=\/\5\1\6/5      SA 5       rO\R                  R                  S>SBSC/5      \R                  R                  SDSE/\/SF4\1SG4/5      SH 5       5       rP\R                  R                  S=\/\5\1\6/5      SI 5       rQ\R                  R                  S=\/\5\1\6\3\7/5      SJ 5       rR\R                  R                  S=\/\5\1\6\3\7/5      SK 5       rS\R                  R                  S=\/\5\1\6/5      SL 5       rT\R                  R                  S=\/\5\1\6/5      SM 5       rU\R                  R                  S=\/\5\1\6/5      SN 5       rV\R                  R                  S=\/\5\1\6/5      SO 5       rW\R                  R                  S=\/\5\1\6/5      SP 5       rX\R                  R                  S=\/\5\1\6/5      SQ 5       rY\R                  R                  SR\/\1/5      \R                  R                  SS/ STQ5      SU 5       5       rZ\R                  R                  SR\/\5\1\6/5      SV 5       r[\R                  R                  S=\/\5\1\6\3\7/5      SW 5       r\\R                  R                  S=\/\5/5      SX 5       r]\R                  R                  S=\/\5\3\7/5      SY 5       r^\R                  R                  SZ\/S[\R                  " S\5      04\5S[\R                  " S\5      04\3S]\R                  " S\5      04\7S]\R                  " S\5      04/5      S^ 5       r`\R                  R                  S=\/\5\1\6/5      S_ 5       ra\R                  R                  SZ\/S[S 04\5S[S 04\3S]S 04\7S]S 04/5      S` 5       rb\R                  R                  S=\/\5/5      Sa 5       rc\R                  R                  S=\/\5/5      Sb 5       rd\R                  R                  S=\/\5/5      Sc 5       re\R                  R                  S=\/\5/5      Sd 5       rf\R                  R                  S=\/\5/5      Se 5       rg\R                  R                  S=\/\5/5      Sf 5       rh\R                  R                  S=\/\5/5      Sg 5       ri\R                  R                  S=\/\5/5      Sh 5       rj\R                  R                  S=\/\5/5      Si 5       rk\R                  R                  S=\/\5/5      Sj 5       rl\R                  R                  S=\/\5/5      Sk 5       rm\R                  R                  S=\/\5/5      Sl 5       rn\R                  R                  S=\/\5/5      Sm 5       ro\R                  R                  S=\/\5/5      Sn 5       rp\R                  R                  S=\/\5/5      So 5       rq\R                  R                  S=\/\5/5      Sp 5       rr\R                  R                  S=\/\5/5      Sq 5       rs\R                  R                  S=\/\5/5      Sr 5       rt\R                  R                  S=\/\5\3\7/5      Ss 5       ru\R                  R                  S=\/\5/5      St 5       rv\R                  R                  S=\/\5/5      Su 5       rw\R                  R                  S=\/\5/5      Sv 5       rx\R                  R                  S=\/\5/5      Sw 5       ry\R                  R                  S=\/\5/5      Sx 5       rz\R                  R                  S=\/\5/5      \R                  R                  S>/ S?Q5      Sy 5       5       r{\R                  R                  S=\/\5/5      Sz 5       r|\R                  R                  S=\/\5/5      S{ 5       r}\R                  R                  S=\/\5/5      S| 5       r~\R                  R                  S=\1\6/5      S} 5       r\R                  R                  S=\1\6/5      S~ 5       r\R                  R                  S=\1\6/5      S 5       r\R                  R                  S=\1\6/5      S 5       r\R                  R                  S=\1\6/5      S 5       r\R                  R                  S=\1\6/5      S 5       r\R                  R                  S=\1\6/5      S 5       r\R                  R                  S=\1\6/5      S 5       r\R                  R                  S=\1\6/5      S 5       r\R                  R                  S=\1\6/5      \R                  R                  S>/ S?Q5      S 5       5       r\R                  R                  S=\1\6/5      S 5       rSS jr\R                  R                  S=\3\7/5      S 5       r\R                  R                  S=\3\7/5      \R                  R                  S>/ S?Q5      S 5       5       r\R                  R                  S=\3\7/5      S 5       r\R                  R                  S=\3\7/5      S 5       r\R                  R                  S=\3\7/5      \R                  R                  S>/ S?Q5      S 5       5       r\R                  R                  S=\3\7/5      S 5       r\R                  R                  S=\3\7/5      S 5       r\R                  R                  S=\3\7/5      S 5       r\R                  R                  S=\3\7/5      S 5       rS rS rS rS rS rS rS r\R                  R                  S/ SQ5      S 5       rS rS rS rS rS rS rS rS rS r\R                  R                  S/ SQ5      S 5       r\R                  R                  SR\R^                  \Rb                  /5      S 5       rS rS r\R                  R                  SR\/\1/5      S 5       r\R                  R                  S\/\5\1\6\3\7/5      \R                  R                  S\GRT                  \GRV                  45      S 5       5       r\R                  R                  S\/\5\1\6\3\7/5      S 5       rS rg)    N)Mock)datasetslinear_modelmetrics)cloneis_classifier)ConvergenceWarning)Nystroem)	_sgd_fast)_stochastic_gradient)RandomizedSearchCVShuffleSplitStratifiedShuffleSplit)make_pipeline)LabelEncoderMinMaxScalerStandardScalerscale)OneClassSVM)get_tags)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalc                 H    SU ;  a  SU S'   SU ;  a  S U S'   SU ;  a  SU S'   g g )Nrandom_state*   tolmax_iter    kwargss    b/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_sgd.py_update_kwargsr%   !   s<    V#!#~Fuz      c                   L   ^  \ rS rSrU 4S jrU 4S jrU 4S jrU 4S jrSrU =r	$ )_SparseSGDClassifier+   c                 X   > [         R                  " U5      n[        TU ]  " X/UQ70 UD6$ N)sp
csr_matrixsuperfitselfXyargskw	__class__s        r$   r/   _SparseSGDClassifier.fit,   s*    MM!w{1-$-"--r&   c                 X   > [         R                  " U5      n[        TU ]  " X/UQ70 UD6$ r+   )r,   r-   r.   partial_fitr0   s        r$   r9    _SparseSGDClassifier.partial_fit0   s+    MM!w"15$5"55r&   c                 N   > [         R                  " U5      n[        TU ]  U5      $ r+   )r,   r-   r.   decision_functionr1   r2   r6   s     r$   r<   &_SparseSGDClassifier.decision_function4   s!    MM!w(++r&   c                 N   > [         R                  " U5      n[        TU ]  U5      $ r+   )r,   r-   r.   predict_probar=   s     r$   r@   "_SparseSGDClassifier.predict_proba8   s!    MM!w$Q''r&   r!   )
__name__
__module____qualname____firstlineno__r/   r9   r<   r@   __static_attributes____classcell__)r6   s   @r$   r(   r(   +   s    .6,( (r&   r(   c                   &    \ rS rSrS rS rS rSrg)_SparseSGDRegressor=   c                 x    [         R                  " U5      n[        R                  R                  " XU/UQ70 UD6$ r+   )r,   r-   r   SGDRegressorr/   r1   r2   r3   r4   r5   s        r$   r/   _SparseSGDRegressor.fit>   s3    MM!((,,TaE$E"EEr&   c                 x    [         R                  " U5      n[        R                  R                  " XU/UQ70 UD6$ r+   )r,   r-   r   rL   r9   rM   s        r$   r9   _SparseSGDRegressor.partial_fitB   s3    MM!((44TaM$M"MMr&   c                 v    [         R                  " U5      n[        R                  R                  " X/UQ70 UD6$ r+   )r,   r-   r   rL   r<   r1   r2   r4   r5   s       r$   r<   %_SparseSGDRegressor.decision_functionF   s1    MM!((::4PTPRPPr&   r!   NrB   rC   rD   rE   r/   r9   r<   rF   r!   r&   r$   rI   rI   =   s    FNQr&   rI   c                   &    \ rS rSrS rS rS rSrg)_SparseSGDOneClassSVML   c                 v    [         R                  " U5      n[        R                  R                  " X/UQ70 UD6$ r+   )r,   r-   r   SGDOneClassSVMr/   rR   s       r$   r/   _SparseSGDOneClassSVM.fitM   s1    MM!**..tDDDDr&   c                 v    [         R                  " U5      n[        R                  R                  " X/UQ70 UD6$ r+   )r,   r-   r   rY   r9   rR   s       r$   r9   !_SparseSGDOneClassSVM.partial_fitQ   s1    MM!**66tLLLLr&   c                 v    [         R                  " U5      n[        R                  R                  " X/UQ70 UD6$ r+   )r,   r-   r   rY   r<   rR   s       r$   r<   '_SparseSGDOneClassSVM.decision_functionU   s1    MM!**<<TRtRrRRr&   r!   NrT   r!   r&   r$   rV   rV   L   s    EMSr&   rV   c                  D    [        U 5        [        R                  " S0 U D6$ Nr!   )r%   r   SGDClassifierr"   s    r$   ra   ra   Z   s    6%%///r&   c                  D    [        U 5        [        R                  " S0 U D6$ r`   )r%   r   rL   r"   s    r$   rL   rL   _   s    6$$.v..r&   c                  D    [        U 5        [        R                  " S0 U D6$ r`   )r%   r   rY   r"   s    r$   rY   rY   d   s    6&&000r&   c                  .    [        U 5        [        S0 U D6$ r`   )r%   r(   r"   s    r$   SparseSGDClassifierre   i   s    6)&))r&   c                  .    [        U 5        [        S0 U D6$ r`   )r%   rI   r"   s    r$   SparseSGDRegressorrg   n   s    6(((r&   c                  .    [        U 5        [        S0 U D6$ r`   )r%   rV   r"   s    r$   SparseSGDOneClassSVMri   s   s    6 *6**r&         )rl   rl   rl   rm   rm   rm      )rl   rm   rm   g            ?g      g      ?g      ?      onetwothree)rq   rr   rs   )rl   rl   r   r   r   r   )r   r   rl   r   r   r   )r   r   r   r   rl   rl   )r   r   r   rl   r   r   )rl   rl   rl   rl   rm   rm   rm   rm   )rl   ?皙?r   r   r   )rl   zG?g\(\?r   r   r   )rl   Q?g)\(?r   r   r   )rl   Q?Gz?r   r   r   )r   r   r   g{Gz?rx   rl   )r   r   r   gHzG?rv   rl   )r   r   r   rx   ffffff?rl   )r   r   r   g(\?rl   rl   )r   rl   rl   c                    Uc$  [         R                  " UR                  S   5      nOUn[         R                  " UR                  S   5      nUn	Sn
SnU [        [        4;   a  Sn[        U5       Hd  u  p[         R                  " X5      nX-  nXU   -
  nUSX4-  -
  -  nXsU-  U-  * -  nXU-  * U-  -  n	X-  nX-  nXS-   -  nX-  n
X-  n
XS-   -  n
Mf     X4$ )Nrl                 ?{Gz?)npzerosshapere   rg   	enumeratedot)klassr2   r3   etaalphaweight_initintercept_initweightsaverage_weights	interceptaverage_interceptdecayientrypgradients                   r$   asgdr      s   ((1771:&hhqwwqz*OIE $&899aLFF5"	t83#+&&8^e+,,X~&..	"s7"&W$ !  --r&   c                 2   U " SSSUS9nUR                  X5        U " SSSUS9nUR                  XUR                  R                  5       UR                  R                  5       S9  U " SSSSUS9nUR                  X5        UR                  UR                  :X  d   e[        UR                  UR                  5        UR                  SS9  UR                  X5        UR                  UR                  :X  d   e[        UR                  UR                  5        g )	Nr~   F)r   eta0shufflelearning_rateMbP?	coef_initr   T)r   r   r   
warm_startr   r   )r/   coef_copy
intercept_t_r   
set_params)r   r2   Ylrclfclf2clf3s          r$   _test_warm_startr      s    
duB
GCGGAMu4bIDHHQSYY^^-cnn>Q>Q>SHT uRD 	HHQN77cffdjj#))4OO%O HHQN77dggdjj$**5r&   r   r   )constantoptimal
invscalingadaptivec                 0    [        U [        [        U5        g r+   )r   r2   r   r   r   s     r$   test_warm_startr      s    
 UAq"%r&   c                 `   U " SSS9nUR                  [        [        5        [        R                  " [        5      S S 2[        R
                  4   n[        R                  X"4   n[        R                  " [        5         UR                  [        U5        S S S 5        g ! , (       d  f       g = f)Nr~   Fr   r   )
r/   r2   r   r   arraynewaxisc_pytestraises
ValueError)r   r   Y_s      r$   test_input_formatr      sk    
 dE
*CGGAqM	!Q

]	#B	rvB	z	"2 
#	"	"s   ?B
B-pa1pa2estlosssquared_hingesquared_errorc                     U" X S9n[         R                  " [        5         UR                  [        [
        5        SSS5        g! , (       d  f       g= f)zETest that SGD raises with forbidden loss for passive-aggressive algo.)r   r   Nr   r   r   r/   r2   r   )r   r   r   s      r$   test_learning_rate_PA_raisesr     s3     4
*C	z	"1 
#	"	"   A
Ac                     U " SSS9n[        U5      nUR                  SS9  UR                  [        [        5        U " SSS9nUR                  [        [        5        [        UR                  UR                  5        g )Nr~   l1)r   penaltyl2)r   )r   r   r/   r2   r   r   r   r   r   r   s      r$   
test_cloner     s_    
 dD
)C
*CNN4N GGAqMtT*DHHQNsyy$**-r&   c                    U " SSS9nUR                  [        [        5        [        US5      (       d   e[        US5      (       d   e[        US5      (       d   e[        US5      (       d   eU " 5       nUR                  [        [        5        [        US5      (       a   e[        US5      (       a   e[        US5      (       a   e[        US5      (       a   eg )NTr~   )averager   _average_coef_average_intercept_standard_intercept_standard_coef)r/   r2   r   hasattrr   r   s     r$   test_plain_has_no_average_attrr   )  s     4
(CGGAqM3((((3,----3-....3())))
'CGGAqMsO,,,,s01111s12222s,-----r&   c                    U " SS9nU " 5       n[        S5       H  n[        U5      (       ad  UR                  [        [        [
        R                  " [        5      S9  UR                  [        [        [
        R                  " [        5      S9  Mw  UR                  [        [        5        UR                  [        [        5        M     [        UR                  UR                  SS9  U [        [        [        [        4;   a   [        UR                  UR                  SS9  g U [        [         4;   a!  [#        UR$                  UR$                  5        g g )NiX  r   d   classes   decimal)ranger   r9   r2   r   r   uniquer   r   ra   re   rL   rg   r   r   rY   ri   r   offset_)r   clf1r   _s       r$   %test_late_onset_averaging_not_reachedr   F  s     D7D3ZQ299Q<8Q299Q<8Q"Q"  djj$**bA 3\CUVVDOOT__bI	>#78	8dll3 
9r&   c           
         SnSn[         R                  " [        5      nSX3S:H  '   SX3S:H  '   U " SSS	UUSS
S9nU " S
SS	UUSS
S9nUR                  [        U5        UR                  [        U5        [        U [        UUUUR                  R                  5       UR                  S9u  pg[        UR                  R                  5       UR                  5       SS9  [        UR                  USS9  g )Nr   -C6?      rl   r}   rm      r   r   F)r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r/   r2   r   r   ravelr   r   r   )r   r   r   Y_encoder   r   r   r   s           r$   !test_late_onset_averaging_reachedr   c  s     DExx{H"H]!H] D  D 	HHQHHQ)-	JJ$$&*&O djj..0/2G2G2ISUV):BGr&   c                     [         R                  [         R                  S:     n[         R                  [         R                  S:     nS H.  nSnU " USUS9R                  X5      nUR                  U:  a  M.   e   g )Nr   TF  r   )early_stoppingr   r   )irisdatatargetr/   n_iter_)r   r2   r   r   r   r   s         r$   test_early_stoppingr     so     			$++/"ADKK!O$A'>thOSS
 {{X%%% (r&   c                    U " SSSSS9nUR                  [        R                  [        R                  5        U " SSSSS9nUR                  [        R                  [        R                  5        UR                  UR                  :  d   eg )Nr   r~   r   r   )r   r   r   r   r   )r/   r   r   r   r   )r   r   r   s      r$   "test_adaptive_longer_than_constantr     sf     z$MDHHTYY$z$MDHHTYY$<<$,,&&&r&   c                 x   [         R                  [         R                  p!SnSnSnSnU " S[        R                  R                  U5      USSS UUS9nUR                  X5        UR                  U:X  d   eU " S[        R                  R                  U5      SSS UUS	9n[        U5      (       a
  [        X4S
9n	O	[        X4S
9n	[        U	R                  X5      5      u  p[        R                  " U
5      n
UR                  X   X*   5        UR                  U:X  d   e[        UR                  UR                  5        g )N皙?r   F
   Tr   r~   )r   r   validation_fractionr   r   r   r   r   )r   r   r   r   r   r   r   )	test_sizer   )r   r   r   r   randomRandomStater/   r   r   r   r   nextsplitsortr   r   )r   r2   r   r   seedr   r   r   r   cv	idx_trainidx_vals               r$   )test_validation_set_not_used_for_trainingr     s"    99dkkqDGHYY**40/ 	D 	HHQN<<8###YY**40 D T#.AU$7Kbhhqn-I	"IHHQ\1<(<<8###tzz4::.r&   c                     [         R                  [         R                  p!S HJ  nS Vs/ s H%  nU " UUSSS9R                  X5      R                  PM'     nn[        U[        U5      5        ML     g s  snf )Nr   )rm   rn   r   r   r   )r   n_iter_no_changer   r   )r   r   r   r/   r   r   sorted)r   r2   r   r   r  n_iter_lists         r$   test_n_iter_no_changer    s     99dkkq' %/

 %/  -!1	 SYW %/ 	 

 	;{(;< (

s   ,A1c                     U " SSS9n[         R                  " [        5         UR                  [        [
        5        S S S 5        g ! , (       d  f       g = f)NTry   )r   r   )r   r   r   r/   X3Y3r   s     r$   )test_not_enough_sample_for_early_stoppingr    s5    
 t
>C	z	"B 
#	"	"s   A
A	Estimatorl1_ratio)r   gffffff?rl   c                     U " SSSS9R                  [        [        5      nU " SUSS9R                  [        [        5      n[        UR                  UR                  5        g)z@Check that l1_ratio is not used when penalty is not 'elasticnet'r   Nr   )r   r
  r   )r/   r2   r   r   r   )r	  r
  r   r   s       r$   test_sgd_l1_ratio_not_usedr    sL     TDqAEEaKDTH1EII!QODDJJ

+r&   c                     U " SS S9n[         R                  " [        SS9   UR                  [        [
        5        S S S 5        g ! , (       d  f       g = f)N
elasticnet)r   r
  z1l1_ratio must be set when penalty is 'elasticnet'matchr   )r	  r   s     r$   #test_sgd_failing_penalty_validationr    sA     L4
8C	M
 	1
 
 
r   c                 h   U " SS9n[         R                  " [        SS9   UR                  [        [
        5        SSS5        [        R                  " SS9 nU " SS9nUR                  [        [
        5        SSS5        [        W5      S	:X  d   eg! , (       d  f       N]= f! , (       d  f       N1= f)
z:Check that a warning is raised when `power_t` is negative.r   )power_tz,Negative values for `power_t` are deprecatedr  NT)recordro   r   )	r   warnsFutureWarningr/   r2   r   warningscatch_warningslen)r   r   ws      r$   test_power_t_limitsr    s     
C	K
 	1
 
	 	 	-C 1 
. q6Q;;
 
 
.	-s   B!B#
B #
B1c           
          S HK  nU " SSSUSSS9nUR                  [        [        5        [        UR	                  [
        5      [        5        MM     g )N)hinger   log_lossmodified_huberr   r~   Tr   )r   r   fit_interceptr   r   r   )r/   r2   r   r   predictTtrue_result)r   r   r   s      r$   test_sgd_clfr$  +  sM     I
 	13;;q>;7 Ir&   c                     [         R                  " [        SS9   U " 5       R                  [        [
        [        R                  " S5      S9  SSS5        g! , (       d  f       g= f)z1Check that the shape of `coef_init` is validated.z)Provided coef_init does not match datasetr  rn   r   N)r   r   r   r/   r2   r   r   r   r   s    r$   test_provide_coefr)  =  s<    
 
z)T	UAqBHHTN3 
V	U	Us   3A
A$zklass, fit_paramsr   r&  offset_initc                     U " 5       n[         R                  " [        SS9   UR                  " [        [
        40 UD6  SSS5        g! , (       d  f       g= f)z:Check that `intercept_init` or `offset_init` is validated.zdoes not match datasetr  Nr   )r   
fit_paramssgd_estimators      r$   test_set_intercept_offsetr.  F  s<     GM	z)A	B!Q-*- 
C	B	Bs   A
Ac                     Sn[         R                  " [        US9   U " SS9R                  [        [
        5        SSS5        g! , (       d  f       g= f)zKCheck that we raise an error for `early_stopping` used with
`partial_fit`.
z/early_stopping should be False with partial_fitr  T)r   N)r   r   r   r9   r2   r   )r   err_msgs     r$   (test_sgd_early_stopping_with_partial_fitr1  V  s9     @G	z	1T"..q!4 
2	1	1s   A
Ac                 F    U " 5       R                   " [        [        40 UD6  g)z`Check that we can pass a scaler with binary classification to
`intercept_init` or `offset_init`.N)r/   X5Y5)r   r,  s     r$    test_set_intercept_offset_binaryr5  b  s     
GKKB%*%r&   c                    SnSnSnSn[         R                  R                  S5      nUR                  X44S9nUR                  US9nU " SSUUS	S
S	SS9n[         R                  " Xg5      n	[         R
                  " U	5      n	UR                  Xi5        [        XXU5      u  pU
R                  S
S5      n
[        UR                  U
SS9  [        UR                  USS9  g )N皙?       @   r   r   sizer   r   Trl   Fr   r   r   r   r   r   r   r   rk      r   )r   r   r   normalr   signr/   r   reshaper   r   r   r   )r   r   r   	n_samples
n_featuresrngr2   r  r   r3   r   r   s               r$   &test_average_binary_computed_correctlyrD  q  s     CEIJ
))


"C

/
0A



#A
 	C 	qA

AGGAM)-e)F&O%--a4Ocii"E(92Fr&   c                     U " 5       R                  [        [        5      nU " 5       R                  [        [        UR                  S9  U " 5       R                  [        [
        5      nU " 5       R                  [        [
        UR                  S9  g )Nr   )r/   r3  r4  r   r2   r   r   s     r$   test_set_intercept_to_interceptrG    sX     '++b"
C	GKKBs~~K6
'++a
C	GKK1S^^K4r&   c                     U " SSS9n[         R                  " [        5         UR                  [        [
        R                  " S5      5        S S S 5        g ! , (       d  f       g = f)Nr~   r9  r   r   	   )r   r   r   r/   X2r   onesr   s     r$   test_sgd_at_least_two_labelsrM    s>     dR
(C	z	"BGGAJ 
#	"	"s   +A
A$c                     Sn[         R                  " [        US9   U " SS9R                  [        [
        [        R                  " [
        5      S9  S S S 5        g ! , (       d  f       g = f)Na`  class_weight 'balanced' is not supported for partial_fit\. In order to use 'balanced' weights, use compute_class_weight\('balanced', classes=classes, y=y\). In place of y you can use a large enough sample of the full training set target to properly estimate the class frequency distributions\. Pass the resulting weights as the class_weight parameter\.r  balanced)class_weightr   )r   r   r   r9   r2   r   r   r   )r   regexs     r$   &test_partial_fit_weight_class_balancedrR    sJ    	 
 
z	/:&221a12N 
0	/	/s   6A
A)c                 D   U " SSS9R                  [        [        5      nUR                  R                  S:X  d   eUR
                  R                  S:X  d   eUR                  SS//5      R                  S:X  d   eUR                  [        5      n[        U[        5        g )Nr~   r9  rI  rn   rm   r&  r   rl   rn   r/   rK  Y2r   r   r   r<   r!  T2r   true_result2r   r   preds      r$   test_sgd_multiclassr\    s     dR
(
,
,R
4C99??f$$$>>4'''  1a&*00F:::;;r?Dt\*r&   c                    SnSnU " SSUUSSSSS9n[         R                  " [        5      nUR                  [        U5        [         R
                  " U5      n[        U5       Hq  u  pg[         R                  " UR                  S	   5      nS
XU:g  '   [        U [        XU5      u  p[        XR                  U   SS9  [        XR                  U   SS9  Ms     g )Nr   r~   r   r   Trl   Fr<  r   rk   r   r   )r   r   rW  r/   rK  r   r   rL  r   r   r   r   r   r   )r   r   r   r   np_Y2r   r   cly_iaverage_coefr   s              r$   test_sgd_multiclass_averagerb    s    
CE
 	C HHRLEGGBiiG7#ggekk!n%RK*.ub#E*J'!,		!bI-~~a/@"M $r&   c                 \   U " SSS9nUR                  [        [        [        R                  " S5      [        R                  " S5      S9  UR
                  R                  S:X  d   eUR                  R                  (       d   S5       eUR                  [        5      n[        U[        5        g )Nr~   r9  rI  rT  rn   r   r&  )r/   rK  rW  r   r   r   r   r   r!  rX  r   rY  rZ  s      r$   "test_sgd_multiclass_with_init_coefrd    sz     dR
(CGGBbhhv.rxx{GK99??f$$$>>%%;;r?Dt\*r&   c                 F   U " SSSS9R                  [        [        5      nUR                  R                  S:X  d   eUR
                  R                  S:X  d   eUR                  SS//5      R                  S:X  d   eUR                  [        5      n[        U[        5        g )	Nr~   r9  rm   )r   r   n_jobsrT  r&  r   rU  rV  rZ  s      r$   test_sgd_multiclass_njobsrg    s     dR
2
6
6r2
>C99??f$$$>>4'''  1a&*00F:::;;r?Dt\*r&   c                 l   U " 5       n[         R                  " [        5         UR                  [        [
        [        R                  " S5      S9  S S S 5        U " 5       R                  [        [
        [        R                  " S5      S9nU " 5       n[         R                  " [        5         UR                  [        [
        [        R                  " S5      S9  S S S 5        U " 5       R                  [        [
        [        R                  " S5      S9ng ! , (       d  f       N= f! , (       d  f       NR= f)N)rm   rm   r'  rT  rl   rF  r&  )r   r   r   r/   rK  rW  r   r   r   s     r$   test_set_coef_multiclassrj    s    
 'C	z	"B"((6"23 
# '++b"(8+
9C 'C	z	"Brxx~6 
# '++b"RXXd^+
<C 
#	" 
#	"s   .D+.D%
D"%
D3c                 b   [         R                  R                   GHn  n[        US9nUS;   a(  [        US5      (       d   e[        US5      (       d   eM;  SR	                  U5      n[        US5      (       a   e[        US5      (       a   e[
        R                  " [        SS9 nUR                    S S S 5        [        WR                  R                  [        5      (       d   eU[        UR                  R                  5      ;   d   e[
        R                  " [        SS9 nUR                    S S S 5        [        UR                  R                  [        5      (       d   eU[        UR                  R                  5      ;   a  GMo   e   g ! , (       d  f       N= f! , (       d  f       Nu= f)	N)r   r  r  r@   predict_log_probaz5probability estimates are not available for loss={!r}z has no attribute 'predict_proba'r  z$has no attribute 'predict_log_proba')r   ra   loss_functionsr   formatr   r   AttributeErrorr@   
isinstancevalue	__cause__strrm  )r   r   r   	inner_msg	exec_infos        r$   $test_sgd_predict_proba_method_accessrw    sd    **99&11300003 34444OVVI sO4444s$78888&H!!
 ioo77HHHHIOO$=$= >>>>&L%% ioo77HHHHIOO$=$= >>>>1 :  s   &F$F 
F	 
F.	c                    [        SSSS S9R                  [        [        5      n[	        US5      (       a   e[	        US5      (       a   eS H  nU " USSS9nUR                  [        [        5        UR                  S	S
//5      nUS   S:  d   eUR                  SS//5      nUS   S:  d   e[        R                  " SS9   UR                  S	S
//5      nUS   US   :  d   eUR                  SS//5      nUS   US   :  d   e S S S 5        M     U " SSSS9R                  [        [        5      nUR                  SS/SS//5      nUR                  SS/SS//5      n[        [        R                  " USS9[        R                  " USS95        [        US   R                  5       S5        [        R                   " US   S:  5      (       d   eUR                  SS//5      nUR                  SS//5      n[        [        R"                  " US   5      [        R"                  " US   5      5        UR                  S	S
//5      nUR                  S	S
//5      n[%        [        R&                  " U5      U5        UR                  SS//5      nUR                  SS//5      n[%        [        R&                  " U5      U5        U " SSSS9nUR                  [        [        5        UR                  S	S
//5      nUR                  S	S
//5      nU [(        :w  a/  [        R                  " USS9[        R                  " USS9:X  d   eO.[        R*                  " USS9[        R*                  " USS9:X  d   e[        R-                  SS9nUR                  U/5      n[        R                   " US:  5      (       a&  UR                  U/5      n[%        US   S/S	-  5        g g ! , (       d  f       GM  = f)Nr  r~   r   )r   r   r   r   r@   rm  rl  )r   r   r   rn   rm   r   rl   ro   rk   ignore)divide)r   r   r  r7  皙333333?皙?rl   )axisr   r  gUUUUUU?)ra   r/   r2   r   r   r@   r   errstaterm  rK  rW  r<   r   argmaxr   sumallargsortr   logre   argminmean)r   r   r   r   dlpxs          r$   test_sgd_probar  *  s    WD24
H
L
LQPQ
RCsO,,,,s/0000 /TB711vh'w}}Bxj)w}} [[)%%1vh/AT7QtW$$$%%Bxj1AT7QtW$$$	 *) /" Ztb
9
=
=b"
ECT{S#J78AC;c
34Aryy+RYYqq-AB!
A&66!A$!)B8*%ABxj)Arzz!A$'AaD)9:			Ax	(BAq6(#AbffQi,			Rz	*BB8*%AbffQi,
 %TB
?CGGBO1vh'AAq6(#A##yy#ryy';;;;yy#ryy';;;;
 	
AAqc"A	vva"f~~qc"!!A$	A6 Y *)s   AO##
O3	c           	      ,   [        [        5      n[        R                  R	                  S5      n[        R
                  " U5      nUR                  U5        [        US S 24   n[        U   nU " SSSSS SS9nUR                  XE5        [        UR                  SSS	24   [        R                  " S
5      5        UR                  U5      n[        Xu5        UR                  5         [        R                  " UR                  5      (       d   eUR                  U5      n[        Xu5        [         R"                  " [         R$                  " U5      5      n[        R                  " UR                  5      (       d   eUR                  U5      n[        Xu5        g )N   r   r~  F  )r   r   r   r   r   r   r   rl   rk   )   )r  X4r   r   r   aranger   Y4r/   r   r   r   r!  sparsifyr,   issparsepickleloadsdumps)r   nrC  idxr2   r   r   r[  s           r$   test_sgd_l1r  r  s1    	BA
))


#C
))A,CKK
36
A
3A
C GGAMsyyAbD)288D>:;;q>Dt LLN;;syy!!!!;;q>Dt ,,v||C(
)C;;syy!!!!;;q>Dtr&   c                    [         R                  " SS/SS/SS/SS/SS//5      n/ SQnU " SSS	S S
9nUR                  X5        [        UR	                  SS//5      [         R                  " S/5      5        U " SSS	SS0S
9nUR                  X5        [        UR	                  SS//5      [         R                  " S/5      5        g )Nr   r   皙r}   r|   rl   rl   rl   rk   rk   r7  r   F)r   r   r   rP  r~  rl   r   rk   r   r   r/   r   r!  r   r2   r3   r   s       r$   test_class_weightsr    s     	4,q	D$<#sc3ZPQAA
cDD
QCGGAMs{{S$K=1288QC=A cDQPUJ
WCGGAM s{{S$K=1288RD>Br&   c                     SS/SS/SS/SS//n/ SQnU " SSS S9nUR                  X5        SS/SS//nSS/nU " SSSSS.S9nUR                  X5        [        UR                  UR                  S	S
9  g )Nrl   r   )r   r   rl   rl   r7  r   r   r   rP  ro   ry  rm   r   )r/   r   r   )r   r2   r3   r   clf_weighteds        r$   test_equal_class_weightr    s     Q!Q!Q!Q(AA
cDt
<CGGAM
Q!QA	
AAsTCC@PQLQ 		<#5#5qAr&   c                     U " SSSS0S9n[         R                  " [        5         UR                  [        [
        5        S S S 5        g ! , (       d  f       g = f)Nr7  r   r   ro   r  r   r   s     r$   test_wrong_class_weight_labelr    s;     cD3x
@C	z	"1 
#	"	"s   A		
Ac                    SSS.n[         R                  R                  S5      nUR                  [        R
                  S   5      n[         R                  " U5      nU[        S:H  ==   US   -  ss'   U[        S:H  ==   US   -  ss'   U " SSUS	9nU " SSS
9nUR                  [        [        US9  UR                  [        [        US9  [        UR                  UR                  5        g )Ng333333?r}  )rl   rm   r   rl   rm   r7  r9  r  rI  sample_weight)r   r   r   random_sampler  r   r   r/   r  r   r   )r   class_weightsrC  sample_weightsmultiplied_togetherr   r   s          r$   test_weights_multipliedr    s     $M
))


"C&&rxx{3N''.1a M!$44 a M!$44 sRmDDsR(DHHR>H2HHR#6H7

DJJ/r&   c                    [         R                  [         R                  p![        U5      n[        R
                  " UR                  S   5      n[        R                  R                  S5      nUR                  U5        X   nX#   nU " SSS SS9R                  X5      n[        R                  " X%R                  U5      SS9n[        US	S
S9  U " SSSSS9R                  X5      n[        R                  " X'R                  U5      SS9n[        US	S
S9  [        UR                   UR                   S5        XS:H  S S 24   nX"S:H     n	[        R"                  " U/U/S-  -   5      n
[        R$                  " U/U	/S-  -   5      nU " SS SS9nUR                  X5        UR                  U5      n[        R                  " X,SS9S	:  d   eU " SSSS9nUR                  X5        UR                  U5      n[        R                  " X,SS9S	:  d   eg )Nr      r   r   F)r   r   rP  r   weightedr   rw   rl   r   rO  r   )r   rP  r   )r   r   r   r   r   r  r   r   r   r   r/   r   f1_scorer!  r   r   r   vstackconcatenate)r   r2   r3   r  rC  r   f1clf_balancedX_0y_0X_imbalancedy_imbalancedy_preds                r$   test_balanced_weightr    s   
 99dkkqaA
))AGGAJ
C
))


"CKK	A	A
ft$
N
R
RST
XC			![[^Z	@BD!, t*e	c!i  
		!11!4j	IBD!, cii););Q? FAI,C
F)C99aSC52:-.L>>1#
"23L D%
@CGGL'[[^FAz:TAAA J
FCGGL'[[^FAz:TAAAr&   c                    [         R                  " SS/SS/SS/SS/SS//5      n/ SQnU " SSS	S
9nUR                  X5        [        UR	                  SS//5      [         R                  " S/5      5        UR                  XS/S-  S/S-  -   S9  [        UR	                  SS//5      [         R                  " S/5      5        g )Nr   r   r  r}   r|   r  r7  r   Fr   r   r   r~  rl   r   rn   rm   r  rk   r  r  s       r$   test_sample_weightsr    s     	4,q	D$<#sc3ZPQAA
cD
>CGGAMs{{S$K=1288QC=A GGA!qcAg 5G6 s{{S$K=1288RD>Br&   c                 (   U [         [        4;   a	  U " SSSS9nOU [        [        4;   a  U " SSSS9n[        R
                  " [        5         WR                  [        [        [        R                  " S5      S9  S S S 5        g ! , (       d  f       g = f)Nr7  r   Fr  )nur   r   r   r  )ra   re   rY   ri   r   r   r   r/   r2   r   r   r  r   s     r$   test_wrong_sample_weightsr    sn    
  344#EB	>#78	8sT?	z	"1BIIaL1 
#	"	"s   .B
Bc                     U " SS9n[         R                  " [        5         UR                  [        [
        5        S S S 5        g ! , (       d  f       g = f)Nr~   r   )r   r   r   r9   r  r  r   s     r$   test_partial_fit_exceptionr  %  s2    
d
C	z	"B 
#	"	"r   c                    [         R                  S   S-  nU " SS9n[        R                  " [        5      nUR                  [         S U [        S U US9  UR                  R                  S[         R                  S   4:X  d   eUR                  R                  S:X  d   eUR                  SS//5      R                  S:X  d   e[        UR                  R                  5      nUR                  [         US  [        US  5        [        UR                  R                  5      nU(       d   U5       eUR                  [        5      n[        U[        5        g )Nr   rn   r~   r   r   rl   ri  )r2   r   r   r   r   r9   r   r   r<   idr   r!  r"  r   r#  )r   thirdr   r   id1id2r  s          r$   test_partial_fit_binaryr  -  s   GGAJ!OE
d
CiilGOOAfuIq%y'O:99??q!''!*o--->>4'''  1a&*00D888
SYY^^
COOAefIqy)
SYY^^
COO3[[^Fv{+r&   c                 d   [         R                  S   S-  nU " SS9n[        R                  " [        5      nUR                  [         S U [        S U US9  UR                  R                  S[         R                  S   4:X  d   eUR                  R                  S:X  d   eUR                  SS//5      R                  S:X  d   e[        UR                  R                  5      nUR                  [         US  [        US  5        [        UR                  R                  5      nU(       d   U5       eg )	Nr   rn   r~   r   r   rl   r&  rU  )rK  r   r   r   rW  r9   r   r   r<   r  r   )r   r  r   r   r  r  s         r$   test_partial_fit_multiclassr  B  s    HHQK1E
d
CiimGOOBvJ6E
GO<99??q"((1+....>>4'''  1a&*00F:::
SYY^^
COOBuvJ56
+
SYY^^
COO3r&   c                 >   [         R                  S   S-  nU " S[         R                  S   S9n[        R                  " [        5      nUR                  [         S U [        S U US9  UR                  R                  S[         R                  S   4:X  d   eUR                  R                  S:X  d   eUR                  [         US  [        US  5        UR                  R                  S[         R                  S   4:X  d   eUR                  R                  S:X  d   eg )Nr   rn   r~   )r   r   r   rl   r&  )rK  r   r   r   rW  r9   r   r   )r   r  r   r   s       r$   #test_partial_fit_multiclass_averager  T  s    HHQK1E
dBHHQK
0CiimGOOBvJ6E
GO<99??q"((1+....>>4'''OOBuvJ56
+99??q"((1+....>>4'''r&   c                 z    U " 5       nUR                  [        [        5        UR                  [        [        5        g r+   )r/   rK  rW  r9   r   s     r$   test_fit_then_partial_fitr  c  s&    
 'CGGBOOOBr&   c           	         [         [        [        4[        [        [
        44 H  u  p#nU " SSSUSS9nUR                  X#5        UR                  U5      nUR                  n[        R                  " U5      nU " SSUSS9n[        S5       H  n	UR                  X#US9  M     UR                  U5      n
UR                  U:X  d   e[        XjSS9  M     g )Nr~   rm   F)r   r   r   r   r   r   r   r   r   r   r   )r2   r   r"  rK  rW  rX  r/   r<   r   r   r   r   r9   r   )r   r   X_r   T_r   r  tr   r   y_pred2s              r$   "test_partial_fit_equal_fit_classifr  m  s     1ay2r2,/
$TARQVW&&r*FF))B-$TUKqAOOBGO4 ''+vv{{!&1= 0r&   c                    [         R                  R                  S5      nU " SSSSUS9nUR                  [        [
        5        S[         R                  " UR                  [        5      [
        :H  5      :X  d   eU " SSSSUS9nUR                  [        [
        5        S[         R                  " UR                  [        5      [
        :H  5      :X  d   eU " SS	US
9nUR                  [        [
        5        S[         R                  " UR                  [        5      [
        :H  5      :X  d   eU " SSSSUS9nUR                  [        [
        5        S[         R                  " UR                  [        5      [
        :H  5      :X  d   eg )Nrl   r~   r   r7  epsilon_insensitive)r   r   r   r   r   r}   squared_epsilon_insensitivehuber)r   r   r   r   )r   r   r   r/   r2   r   r  r!  )r   r   r   s      r$   test_regression_lossesr    s9   99((+L
 "!C GGAqM"''#++a.A-....
 *!C GGAqM"''#++a.A-....
d|
DCGGAqM"''#++a.A-....
 !C GGAqM"''#++a.A-....r&   c                 0    [        U [        [        S5        g )Nr   )r   rK  rW  r(  s    r$   test_warm_start_multiclassr    s    UBI.r&   c                    U " SSS9nUR                  [        [        5        [        US5      (       d   e[	        5       R                  [        5       Vs/ s H
  nSS/U   PM     nnUR                  [        S S 2S S24   U5        g s  snf )Nr~   Fr   r   hamspamrk   )r/   r2   r   r   r   fit_transform)r   r   r   r3   s       r$   test_multiple_fitr    s~     dE
*CGGAqM3     &2^%A%A!%DE%D%	%DAEGGAa"fIq 	Fs   Bc                     U " SSSS9nUR                  SS/SS/SS/// SQ5        UR                  S   UR                  S   :X  d   eg )Nr7  rm   Fr  r   rl   )r   rl   rm   )r/   r   r   s     r$   test_sgd_regr    sQ     cAU
;CGGaVaVaV$i099Q<399Q<'''r&   c                 j   SnSnSnSn[         R                  R                  S5      nUR                  X44S9nUR                  US9n[         R                  " Xg5      nU " SSUUS	S
S	SS9n	U	R                  Xh5        [        XXU5      u  p[        U	R                  U
SS9  [        U	R                  USS9  g )Nr   r~   r9  r   r   r:  r   r   Trl   Fr<  r   r   )r   r   r   r>  r   r/   r   r   r   r   r   r   r   r   rA  rB  rC  r2   r  r3   r   r   r   s               r$   $test_sgd_averaged_computed_correctlyr    s     CEIJ
))


"C

/
0A



#A 	qA
 	C GGAM)-e)F&Ocii"E(92Fr&   c                    SnSnSnSn[         R                  R                  S5      nUR                  X44S9nUR                  US9n[         R                  " Xg5      nU " SSUUS	S
S	SS9n	U	R                  US [        US-  5       S S  US [        US-  5       5        U	R                  U[        US-  5      S  S S  U[        US-  5      S  5        [        XXU5      u  p[        U	R                  U
SS9  [        U	R                  S   USS9  g )Nr   r~   r9  r   r   r:  r   r   Trl   Fr<  rm   r   r   )r   r   r   r>  r   r9   intr   r   r   r   r   r  s               r$   test_sgd_averaged_partial_fitr    s#    CEIJ
))


"C

/
0A



#A 	qA
 	C OOA*IM*+A.2FC	A4F0GHOOAc)a-(*+A.#i!m2D2F0GH)-e)F&Ocii"Eq)+<bIr&   c                    SnSnU " SSUUSSSSS9n[         R                  S	   nUR                  [        S [	        US
-  5       S S  [         S [	        US
-  5       5        UR                  [        [	        US
-  5      S  S S  [         [	        US
-  5      S  5        [        U [        [         X5      u  pV[        UR                  USS9  [        UR                  USS9  g )Nr   r~   r   r   Trl   Fr<  r   rm   r   r   )
r  r   r9   r  r  r   r   r   r   r   )r   r   r   r   rA  r   r   s          r$   test_average_sparser    s     CE
 	C IOOB+Y]+,Q/4Hc)a-6H1IJOOBs9q=)+,Q/C	A4F4H1IJ)-eRS)H&Ocii"E(92Fr&   c                    Su  pSn[         R                  R                  S5      n[         R                  " XU5      R	                  US5      nSUR                  5       -  nU " SSSS	S
9nUR                  XV5        UR                  XV5      nUS:  d   eSUR                  5       -  UR                  US5      R                  5       -   nU " SSSS	S
9nUR                  XV5        UR                  XV5      nUS:  d   eg )Nr    r   r   rl   ro   r   r7  r9  F)r   r   r   r   ry   	r   r   r   linspacer@  r   r/   scorerandn	r   xminxmaxrA  rC  r2   r3   r   r  s	            r$   test_sgd_least_squares_fitr     s    JDI
))


"C
D	*229a@A 	aggiA
_C"E
RCGGAMIIaOE4<< 	aggi#))Iq17799A
_C"E
RCGGAMIIaOE3;;r&   c                    Su  pSn[         R                  R                  S5      n[         R                  " XU5      R	                  US5      nSUR                  5       -  nU " SSSS	S
S9nUR                  XV5        UR                  XV5      nUS:  d   eSUR                  5       -  UR                  US5      R                  5       -   nU " SSSS	S
S9nUR                  XV5        UR                  XV5      nUS:  d   eg )Nr  r   r   rl   ro   r  r~   r7  r9  Fr   epsilonr   r   r   ry   r  r  s	            r$   test_sgd_epsilon_insensitiver  8  s    JDI
))


"C
D	*229a@A 	aggiA
"C GGAMIIaOE4<< 	aggi#))Iq17799A
"C GGAMIIaOE3;;r&   c                    Su  pSn[         R                  R                  S5      n[         R                  " XU5      R	                  US5      nSUR                  5       -  nU " SSSSS	S
9nUR                  XV5        UR                  XV5      nUS:  d   eSUR                  5       -  UR                  US5      R                  5       -   nU " SSSSS	S
9nUR                  XV5        UR                  XV5      nUS:  d   eg )Nr  r   r   rl   ro   r  r7  r9  Fr  ry   r  r  s	            r$   test_sgd_huber_fitr  \  s    JDI
))


"C
D	*229a@A 	aggiA
WcrQV
WCGGAMIIaOE4<< 	aggi#))Iq17799A
WcrQV
WCGGAMIIaOE3;;r&   c           
         Su  p[         R                  R                  S5      nUR                  X5      nUR                  U5      n[         R                  " XE5      nS Hs  nS Hj  n[
        R                  " XxSS9n	U	R                  XF5        U " SSUUSS	9n
U
R                  XF5        S
Xx4-  n[        U	R                  U
R                  SUS9  Ml     Mu     g )N)r   r    r   )r~   r   )ro   ru   r}   F)r   r
  r   r  2   )r   r   r   r
  r   zNcd and sgd did not converge to comparable results for alpha=%f and l1_ratio=%frm   )r   r0  )
r   r   r   r  r   r   
ElasticNetr/   r   r   )r   rA  rB  rC  r2   ground_truth_coefr3   r   r
  cdsgdr0  s               r$   test_elasticnet_convergencer  t  s     $I
))


"C		)(A 		*-
q$A 'H((eB FF1L$!#C GGAM7:?9JK   #))QP# ( r&   c                 0   [         R                  S   S-  nU " SS9nUR                  [         S U [        S U 5        UR                  R                  [         R                  S   4:X  d   eUR
                  R                  S:X  d   eUR                  SS//5      R                  S:X  d   e[        UR                  R                  5      nUR                  [         US  [        US  5        [        UR                  R                  5      nU(       d   U5       eg )Nr   rn   r~   r   rl   ri  )	r2   r   r9   r   r   r   r!  r  r   )r   r  r   r  r  s        r$   test_partial_fitr    s    GGAJ!OE
d
COOAfuIq%y)99??qwwqzm+++>>4''';;Ax &&$...
SYY^^
COOAefIqy)
SYY^^
COO3r&   c                 Z   U " SSSUSS9nUR                  [        [        5        UR                  [        5      nUR
                  nU " SSUSS9n[        S5       H  nUR                  [        [        5        M     UR                  [        5      nUR
                  U:X  d   e[        X6SS9  g )Nr~   rm   F)r   r   r   r   r   r  r   )	r/   r2   r   r!  r"  r   r   r9   r   )r   r   r   r  r  r   r  s          r$   test_partial_fit_equal_fitr	    s     dQTU
SCGGAqM[[^FA
dR
GC1X1 kk!nG66Q;;fq9r&   c                 ^    U " SS9nUR                  SS9  UR                  S   S   S:X  d   eg )Nrt   )r  r7  r  rl   )r   rn  r   s     r$   test_loss_function_epsilonr    s8    

CNN3Ng&q)S000r&   c                    Uc$  [         R                  " UR                  S   5      nOUn[         R                  " UR                  S   5      nUnSU-
  n	Sn
SnU [        :X  a  Sn[	        U5       Hw  u  p[         R
                  " X5      nX-  nUS::  a  SnOSnU[        SSX#-  S-  -
  5      -  nXbU-  U-  * -  nXX?-   -  * U-  -  n	X|-  nXv-  nX|S-   -  nX-  n
X-  n
XS-   -  n
My     USU
-
  4$ )Nrl   r|   r}   r~   rk   r   rm   )r   r   r   ri   r   r   max)r   r2   r   r  r   r*  coefra  offsetr   r   r   r   r   r   r   s                   r$   asgd_oneclassr    s-   xx
#88AGGAJ'LFF
IE $$aLFF5	8HHAschl+,,.5())bm,-55	C&W$# !& ....r&   c                 0   U " SSSUS9nUR                  U5        U " SSSUS9nUR                  XR                  R                  5       UR                  R                  5       S9  U " SSSSUS9nUR                  U5        UR                  UR                  :X  d   e[        UR                  UR                  5        UR                  SS	9  UR                  U5        UR                  UR                  :X  d   e[        UR                  UR                  5        g )
Nro   r~   F)r  r   r   r   r7  r   r*  T)r  r   r   r   r   r  )r/   r   r   r   r   r   r   )r   r2   r   r   r   r   s         r$   _test_warm_start_oneclassr    s     3T5
CCGGAJCdEDDHHQ))..*8H8H8JHK CdEdRTUDHHQK77cffDJJ		*OOsOHHQK77dggDJJ

+r&   c                 &    [        U [        U5        g r+   )r  r2   r   s     r$   test_warm_start_oneclassr    s     eQ+r&   c                     U " SS9n[        U5      nUR                  SS9  UR                  [        5        U " SS9nUR                  [        5        [	        UR
                  UR
                  5        g )Nro   r  r7  )r   r   r/   r2   r   r   r   s      r$   test_clone_oneclassr    sU     3-C
*CNNcNGGAJC=DHHQKsyy$**-r&   c                 R   [         R                  S   S-  nU " SS9nUR                  [         S U 5        UR                  R                  [         R                  S   4:X  d   eUR                  R                  S:X  d   eUR                  SS//5      R                  S:X  d   eUR                  nUR                  [         US  5        UR                  UL d   e[        R                  " [        5         UR                  [         S S 2S4   5        S S S 5        g ! , (       d  f       g = f)Nr   rn   r7  r  rl   ri  )	r2   r   r9   r   r   r!  r   r   r   )r   r  r   previous_coefss       r$   test_partial_fit_oneclassr    s    GGAJ!OE
3-COOAfuI99??qwwqzm+++;;$$$;;Ax &&$...YYNOOAefI99&&& 
z	"!Q$  
#	"	"s   2D
D&c                    U " SSSUSS9nUR                  [        5        UR                  [        5      nUR                  nUR
                  nUR                  nU " SSSUSS9n[        S5       H  nUR                  [        5        M     UR                  [        5      nUR                  U:X  d   e[        X85        [        UR
                  U5        [        UR                  U5        g )N皙?rm   r~   F)r  r   r   r   r   rl   )r  r   r   r   r   )
r/   r2   r<   r"  r   r   r   r   r9   r   )	r   r   r   y_scoresr  r  r  r   	y_scores2s	            r$   #test_partial_fit_equal_fit_oneclassr   )  s     4!$b%
PCGGAJ$$Q'HA99D[[F
4dQb%
PC1X %%a(I66Q;;H(CIIt$CKK(r&   c           	         SnSnU " SSXSSS9nU " SSUUSSS9nUR                  [        5        UR                  [        5        [        U [        XUR                  R	                  5       UR
                  S	9u  pV[        UR                  R	                  5       UR	                  5       5        [        UR
                  U5        g )
Nr   r  r   r   rm   F)r   r   r   r  r   r   rl   r  )r/   r2   r  r   r   r   r   )r   r   r  r   r   ra  average_offsets          r$   *test_late_onset_averaging_reached_oneclassr#  >  s     D	B $SXD  D 	HHQKHHQK $1q$djj&6&6&8dll$ L DJJ$$&(:(:(<=DLL.1r&   c           
          SnSnSnSn[         R                  R                  S5      nUR                  X44S9nU " SUUSS	SS
S9nUR	                  U5        [        XX5      u  p[        UR                  U5        [        UR                  U	5        g )Nr   r  r9  r   r   r:  r   Trl   Fr   r   r  r   r   r   r   )	r   r   r   r>  r/   r  r   r   r   
r   r   r  rA  rB  rC  r2   r   ra  r"  s
             r$   -test_sgd_averaged_computed_correctly_oneclassr'  _  s     C	BIJ
))


"C

/
0A
 C GGAJ#03#C LCII|,CKK0r&   c           
         SnSnSnSn[         R                  R                  S5      nUR                  X44S9nU " SUUSS	SS
S9nUR	                  US [        US-  5       S S  5        UR	                  U[        US-  5      S  S S  5        [        XX5      u  p[        UR                  U5        [        UR                  U	5        g )Nr   r  r9  r   r   r:  r   Trl   Fr%  rm   )
r   r   r   r>  r9   r  r  r   r   r   r&  s
             r$   &test_sgd_averaged_partial_fit_oneclassr)  z  s     C	BIJ
))


"C

/
0A
 C OOA*IM*+A./OOAc)a-(*+A./#03#C LCII|,CKK0r&   c           
      X   SnSnU " SUUSSSSS9n[         R                  S   nUR                  [         S [        US	-  5       5        UR                  [         [        US	-  5      S  5        [	        U [         X5      u  pV[        UR                  U5        [        UR                  U5        g )
Nr   r~   r   Trl   Fr%  r   rm   )r  r   r9   r  r  r   r   r   )r   r   r  r   rA  ra  r"  s          r$   test_average_sparse_oneclassr+    s     C	B
 C IOOB+Y]+,-OOBs9q=)+,-#0C#D LCII|,CKK0r&   c                  v   [         R                  " SS/SS/SS//5      n [         R                  " SS/SS//5      n[        SSSSSS9nUR                  U 5        [	        UR
                  [         R                  " S	S
/5      5        UR                  S   S:X  d   eUR                  U5      n[	        U[         R                  " SS/5      5        UR                  U5      UR                  -
  n[	        UR                  U5      U5        UR                  U5      n[        U[         R                  " SS/5      5        g )Nrj   rk   rl   ro   rm   r   F)r  r   r   r   r   g      g      ?r   rp   g      g      ?)r   r   rY   r/   r   r   r   score_samplesr<   r!  r   )X_trainX_testr   scoresdecr[  s         r$   test_sgd_oneclassr2    s    hhR2r(QF34GXXRy1a&)*F
Qj%!C GGGCIIrxx(89:;;q>T!!!v&FFBHHgu%567


F
#ckk
1CC))&137;;vDtRXXr1g./r&   c            	          Sn SnSn[         R                  R                  U5      nSUR                  SS5      -  n[         R                  US-   US-
  4   nSUR                  SS5      -  n[         R                  US-   US-
  4   n[        USU S	9nUR                  U5        UR                  U5      nUR                  U5      R                  S
S5      n	Sn
[        XS9n[        U SSU
US S9n[        X5      nUR                  U5        UR                  U5      nUR                  U5      R                  S
S5      n[         R                  " X:H  5      S:  d   e[         R                  " [         R                  " X45      5      S   nUS:  d   eg )Nr  r8  r   r}    rm   r   rbf)gammakernelr  rl   rk      )r6  r   T)r  r   r   r   r   r   ry   ry  rt   )r   r   r   r  r_r   r/   r!  r<   r@  r
   rY   r   r  corrcoefr  )r  r6  r   rC  r2   r.  r/  r   y_pred_ocsvm	dec_ocsvmr   	transformclf_sgdpipe_sgdy_pred_sgdocsvmdec_sgdocsvmr:  s                    r$   test_ocsvm_vs_sgdocsvmrB    s    
BEL ))


-CciiQAeeAE1q5L!GciiQAUU1q5!a%< F E%B
7CGGG;;v&L%%f-55a<I Hu@I!G Y0HLL&&v.O--f5==aDL77?23t;;;{{2>>9*CDEdKHs??r&   c            	          S HA  n [        U SSSSS9nUR                  [        R                  5        UR                  S:  a  MA   e   g )Nr7  ro   rt   r   r   r   r  r   r   r   r   r  )rY   r/   r   r   r   )r  models     r$   test_sgd_oneclass_convergencerG    sI     CT$
 			$)) }}q    r&   c            	         S GH  n [        U SS SSS9n[        SU SS9nUR                  [        R                  5        UR                  [        R                  5        UR                  [        R                  5      nUR                  [        R                  5      nUR                  [        R                  5      nUR                  [        R                  5      n[        R                  " XF5      S	   n[        R                  " X55      S	   n[        R                  " [        R                  " UR                  UR                  * /5      [        R                  " UR                  R                  5       UR                  /5      5      S	   n	US
:H  R                  5       [        U5      -  n
US:  d   eUS:  d   eU	S:  d   e[!        S
U
-
  U 5        GM     g )NrD  i N  r   r   rE  lineargư>)r7  r  r   ry  rl   ry   rz   )rY   r   r/   r   r   r!  r<   r   r:  r  r   r   flattenr   r  r  r   )r  rF  	model_refpredsdec_fn	preds_ref
dec_fn_refdec_fn_corr
preds_corr	coef_corr
share_oness              r$   $test_sgd_oneclass_vs_linear_oneclassrT    sq   Et:D
  xBDA			$))dii dii(((3%%dii0	00;
kk&5d;[[248
KKNNEKK%--89NNIOO335y7K7KLM
 	
 qj%%'#e*4
T!!!D   4J+9 r&   c            	         [         R                  " SSSSS9u  p[        SSS SS	S
S9R                  X5      n[        SSSS
S S9R                  X5      n[	        UR
                  UR
                  5        [        SSS SSS
S9R                  X5      n[        SSSS
S S9R                  X5      n[	        UR
                  UR
                  5        g )Nr   r   r9  i  )rA  rB  n_informativer   r   r  r  gA?r   )r   r   r   r   r
  r   r   )r   r   r   r   r   g|=r   )r   make_classificationra   r/   r   r   )r2   r3   est_enest_l1est_l2s        r$   test_l1_ratior[    s    ''3btDA
  
c!i  TABD	c!i  fllFLL9  
c!i  TABD	c!i  fllFLL9r&   c                     [         R                  " SS9   [         R                  R                  S5      n SnSnU R	                  X4S9nUS S 2S S24==   S-  ss'   [         R
                  " U5      R                  5       (       d   e[        5       R                  U5      n[         R
                  " U5      R                  5       (       d   eU R	                  US9n[         R                  " XE5      S	:  R                  [         R                  5      n[        [         R                  " U5      SS
/5        [        SSSS9nUR                  XF5        [         R
                  " UR                   5      R                  5       (       d   eSn["        R$                  " [&        US9   UR                  X65        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nraiser  r   r   r   r:  rm   gu <7~r|   rl   r7  r   r4  )r   r   r   zwFloating-point under-/overflow occurred at epoch #.* Scaling input data with StandardScaler or MinMaxScaler might help.r  )r   r  r   r   r>  isfiniter  r   r  r   astypeint32r   r   ra   r/   r   r   r   r   )	rC  rA  rB  r2   X_scaledground_truthr3   rF  	msg_regxps	            r$   test_underflow_or_overlowre  @  ss   		!ii##A&	
JJY3J4	!RaR%E{{1~!!####
  >//2{{8$((**** zzzz2VVH+c199"((C299Q<!Q0CoL 			({{5;;'++---- 	
 ]]:Y7IIaO 8C 
"	!B 87C 
"	!s$   F	GG0G
G	G
G c                  H   [        SSSSSSSSS S	9	n [        R                  " S
S9   U R                  [        R
                  [        R                  5        S S S 5        [        R                  " U R                  5      R                  5       (       d   eg ! , (       d  f       ND= f)Nr   r   Tr  r}  r~   r   r   )	r   r   r   r   r
  r   r   r   r   r]  r^  )
ra   r   r  r/   r   r   r   r_  r   r  )rF  s    r$   'test_numerical_stability_large_gradientrg  f  s}     
E 
	!		$))T[[) 
";;u{{#'')))) 
"	!s   /B
B!r   )r   r   r  c           
      B   [        SSSU SS SS9n[        R                  " SS9   UR                  [        R
                  [        R                  5        S S S 5        [        UR                  [        R                  " UR                  5      5        g ! , (       d  f       NC= f)	Ng     j@r   r7  Fr  )r   r   r   r   r   r   r   r]  r^  )
ra   r   r  r/   r   r   r   r   r   
zeros_like)r   rF  s     r$   test_large_regularizationrj  y  sp      E 
	!		$))T[[) 
"ekk2==+EF 
"	!s   /B
Bc                     [        5       R                  [        R                  5      n [        R                  S:H  nSn[        S SUS9nUR                  X5        X#R                  :X  d   eSn[        SSUS9nUR                  X5        X$R                  :  d   eUR                  S:  d   e[        SSUS9nUR                  X5        UR                  UR                  :  d   eUR                  S:  d   e[        SS	SS
9nSn[        R                  " [        US9   UR                  X5        S S S 5        UR                  S:X  d   eg ! , (       d  f       N!= f)Nrl   r   r   )r   r   r   r  r    r7  rn   r   )r   r   r   zhMaximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.r  )r   r  r   r   r   ra   r/   r   r   r  r	   )r2   r3   r   model_0model_1model_2model_3warning_messages           r$   test_tol_parameterrq    s8   &&tyy1AqA H1xHGKK&&& HHEGKKoo%%%??Q !hGGKK??W__,,,??Q QDqAG	 
 
(	@A 
A??a 
A	@s   E
Ec                     U H<  u  p#pE[        U R                  X#5      U5        [        U R                  X#5      U5        M>     g r+   )r   py_losspy_dloss)loss_functioncasesr   r3   expected_lossexpected_dlosss         r$   _test_loss_commonry    s=     05+mM11!7GM2218.I 05r&   c                      [         R                  " S5      n / SQn[        X5        [         R                  " S5      n / SQn[        X5        g )Nr}   ))g?r}   r|   r|          r   r|   r|   )r}   r}   r|   r   )r   r   r|   r}   )ro   r}   ro   r   )r8  r         @r}   )rp   r   ro   r}   )r|   r}   rl   r   r|   )r}   r}   r|   r|   )r|  r   r|   r|   )r|   r}   r|   r   )r|   r   r|   r}   )ro   r   ro   r}   )r8  r   r8  r}   )rp   r}   ro   r   )r   r}   r}   r   )sgd_fastHingery  r   rv  s     r$   test_loss_hinger    sD     >>#D
E d" >>#D
E d"r&   c                  N    [         R                  " S5      n / SQn[        X5        g )Nr}   )r~  r{  )r}   r         @r  r   r}   r        )ro   r}   g      ?r   ro   r   g      @r}  )r  SquaredHingery  r  s     r$   test_gradient_squared_hinger    s#      %DE d"r&   c                  L    [         R                  " 5       n / SQn[        X5        g )N)r~  )r   r   r|   r|   )r8  r}   r|   r|   )r|   r}   r}   r|  r  r  )r|  r}      r  )g      r}      r  )r  ModifiedHuberry  r  s     r$   test_loss_modified_huberr    s!    !!#D
E d"r&   c                  N    [         R                  " S5      n / SQn[        X5        g )Nr7  )r|   r|   r|   r|   r7  r|   r|   r|   gffffff r|  r|   r|   gffffff@r}  r|   r|   )皙@r8  r7  r}   )r8  r   333333@r}   )r8  r  r7  r   )r|  r}   r  r   )r  EpsilonInsensitivery  r  s     r$   test_loss_epsilon_insensitiver    s#    &&s+D
E d"r&   c                  N    [         R                  " S5      n / SQn[        X5        g )Nr7  )r  r  r  r  )r  r8  r~   r~  )r8  r   R @g333333@)r8  r  r~   gɿ)r|  r}   r  g333333)r  SquaredEpsilonInsensitivery  r  s     r$   %test_loss_squared_epsilon_insensitiver  	  s#    --c2D
E d"r&   c            
      \   [        SSSSSSSS9n U R                  [        R                  [        R                  5        U R
                  U R                  :  d   eU R
                  U R                  S-   :  d   eU R                  [        R                  [        R                  5      S	:  d   eg )
Nr   r   Tr   r   rm   )r   r   r   r   r  r   rf  r9  ru   )ra   r/   r   r   r   r   r  r  )r   s    r$   0test_multi_thread_multi_class_and_early_stoppingr    s     C GGDIIt{{#;;-----;;--222299TYY,s222r&   c                      [         R                  " SSS5      / SQS.n [        SSSS	S
9n[        XSSS	S9nUR	                  [
        R                  [
        R                  5        UR                  S:  d   eg )Nr  rJ  )r    r   r   )r   r  r~   r   Tr   )r   r   r   r   r    rm   )n_iterrf  r   ru   )	r   logspacera   r   r/   r   r   r   best_score_)
param_gridr   searchs      r$   -test_multi_core_gridsearch_and_early_stoppingr  ,  sl    
 RA&'J
 D4ST
UC!RSTF
JJtyy$++&###r&   backend)lokymultiprocessing	threadingc                    [         R                  R                  S5      n[        R                  " SSSSUS9nUR	                  SS5      n[        SS	SS
9nUR                  X#5        [        SSSS
9n[        R                  " U S9   UR                  X#5        S S S 5        [        UR                  UR                  5        g ! , (       d  f       N/= f)Nr   r4  r  g{Gz?csr)densityro  r   r9  r   rl   )r   rf  r   r  )r  )r   r   r   r,   choicera   r/   joblibparallel_backendr   r   )r  r   r2   r3   clf_sequentialclf_parallels         r$   'test_SGDClassifier_fit_for_all_backendsr  ;  s      99((,L
 			#tT%lSAB$A #DLNq !$qrJL		 	 	1 
2n22L4F4FG 
2	1s   C  
Cc                 t   U [         R                  :X  a  [        R                  " US9u  p#O[        R                  " US9u  p#U " USS9n[
        R                  " [        5         UR                  X#5      R                  nUR                  S:X  d   e S S S 5        U " USS9n[
        R                  " [        5         UR                  X#5      R                  nUR                  S:X  d   e S S S 5        [        WW5        U " US-   SS9n[
        R                  " [        5         UR                  X#5      R                  nUR                  S:X  d   e S S S 5        [        R                  " UW-
  5      R                  5       S:  d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N^= f)N)r   rl   )r   r   r}   )r   rL   r   make_regressionrW  r   r  r	   r/   r   r   r   r   absr  )r	  global_random_seedr2   r3   r   coef_same_seed_acoef_same_seed_bcoef_other_seeds           r$   test_sgd_random_stater  _  sd    L---''5GH1++9KL
 !3a
@C	(	)771=..{{a 
* !3a
@C	(	)771=..{{a 
* $&67 !3a!7!
DC	(	)''!---{{a 
* 66"_4599;cAAA) 
*	)
 
*	) 
*	)s$   #.F;.F".F)
F
F&)
F7c                    [         R                  [         R                  p!UR                  S   nSn[        R
                  " SSSUS9n[        [        R                  S9nU R                  [        SU5        UR                  X5        UR                  S   S	S
 u  pxUR                  S   [        X4-  5      :X  d   eUR                  S   [        X4-  5      :X  d   eg)zaTest that data passed to validation callback correctly subsets.

Non-regression test for #23255.
r   r~  Tr   r   )r   r   r   r   )side_effect_ValidationScoreCallbackrl   rn   N)r   r   r   r   r   ra   r   r   r  setattrr/   	call_argsr  )	monkeypatchr2   r   rA  r   r   mockX_valy_vals	            r$   &test_validation_mask_correctly_subsetsr    s    
 99dkkq
I

$
$/	C 0IIJD,.H$OGGAM>>!$Qq)LE;;q>S!@AAAA;;q>S!@AAAAr&   c                  (   [         R                  [         R                  p[        R                  " U5      nSn[
        R                  " SUSS9nSn[        R                  " [        US9   UR                  XUS9  S S S 5        g ! , (       d  f       g = f)Nr   Tr   )r   r   r   z\The sample weights for validation set are all zero, consider using a different random state.r  r  )r   r   r   r   ri  r   ra   r   r   r   r/   )r2   r   r  r   r   error_messages         r$   (test_sgd_error_on_zero_validation_weightr    sv     99dkkqMM!$M

$
$1DSTC
	#  
z	7M2 
8	7	7s   )B
Bc                 @    U " SS9R                  [        [        5        g)z!non-regression test for gh #25249rl   )verboseN)r/   r2   r   )r	  s    r$   test_sgd_verboser    s     aQ"r&   SGDEstimator	data_typec                     [         R                  U5      n[        R                  " [        US9nU " 5       nUR                  X#5        UR                  R                  U:X  d   eg )Ndtype)r2   r`  r   r   r   r/   r   r  )r  r  _X_Y	sgd_models        r$   test_sgd_dtype_matchr    sM     
)	B	!9	%BIMM"??  I---r&   c                    [         R                  [        R                  S9n[        R                  " [
        [        R                  S9n[         R                  [        R                  S9n[        R                  " [
        [        R                  S9nU " SS9nUR                  X5        U " SS9nUR                  X45        [        UR                  UR                  5        g )Nr  r9  )r   )
r2   r`  r   float64r   r   float32r/   r   r   )r  X_64Y_64X_32Y_32sgd_64sgd_32s          r$   test_sgd_numerical_consistencyr    s     88"**8%D88ARZZ(D88"**8%D88ARZZ(D2&F
JJt2&F
JJtFLL&,,/r&   c                  N    [        5       n [        U 5      R                  S:X  d   eg)zuCheck that SGDOneClassSVM has the correct estimator type.

Non-regression test for if the mixin was not on the left.
outlier_detectorN)rY   r   estimator_type)	sgd_ocsvms    r$   %test_sgd_one_class_svm_estimator_typer    s&    
  II--1CCCCr&   )Nr|   )r  r  unittest.mockr   r  numpyr   r   scipy.sparsesparser,   sklearnr   r   r   sklearn.baser   r   sklearn.exceptionsr	   sklearn.kernel_approximationr
   sklearn.linear_modelr   r  r   sklearn.model_selectionr   r   r   sklearn.pipeliner   sklearn.preprocessingr   r   r   r   sklearn.svmr   sklearn.utilsr   sklearn.utils._testingr   r   r   r   r%   ra   r(   rL   rI   rY   rV   re   rg   ri   r   r2   r   r"  r#  rK  rW  rX  rY  r  r  r  r  	load_irisr   r3  r4  true_result5r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r$  r)  r   r.  r1  r5  rD  rG  rM  rR  r\  rb  rd  rg  rj  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r   r#  r'  r)  r+  r2  rB  rG  rT  r[  re  rg  rj  rq  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!   r&   r$   <module>r     s	          3 3 - 1 1 6 5 
 + S S # " (<55 ($Q,33 QSL77 S0
/
1
*
)
+ HHr2hR2r(QFQFQFCDHHr2hAA'( XX	Q		s	
A	s	c
	R	
D		
B
 Wq[E7Q;'Q.XXc{QFQG,-& XX	 XX&' XX      	 XX&' XXBx"bB8aVaVaVDE.D60 m0,@RS PQ& R& m0,@RS u~.
FO}o68WX / m0,@RS
.
. 
.
.$ 
4
4$ m0,@RS(H(HV m0,@RS&& m0,@RS'' m0,@RS&/&/R m0,@RS==$ m0,@RS }l&CD[1, 2 E, -!4lDVW 

* =2E"FG8 H8" m0.BVW44 	)288D>:;	/$@A	-$89	rxx~>?	.. m0,@RS55 	)1-.	/34	-+,	q12	&& =2E"FGG HGB =2E"FG5 H5 =2E"FG  H  =2E"FGO HO  =2E"FG+ H+ =2E"FGN HN6 =2E"FG+ H+ =2E"FG+ H+ =2E"FG= H=( =2E"FG? H?B =2E"FGD7 HD7N =2E"FG!  H! H =2E"FGC HC$ =2E"FGB HB  =2E"FG H =2E"FG0 H0$ =2E"FG+B H+B\ =2E"FGC HC" m0.BVW22 =2E"FG  H  =2E"FG, H,( =2E"FG H" =2E"FG( H( =2E"FG H =2E"FGPQ> R H>" =2E"FG"/ H"/J =2E"FG/ H/ =2E"FG H <1C"DE( F( <1C"DEG FG@ <1C"DEJ FJ@ <1C"DEG FG4 <1C"DE F. <1C"DE  F F <1C"DE F. <1C"DEQ FQB <1C"DE F  <1C"DEPQ: R F: <1C"DE1 F1#/L >3G"HI, J,, >3G"HIPQ, R J, >3G"HI
. J
. >3G"HI! J!& >3G"HIPQ) R J)& >3G"HI2 J2@ >3G"HI1 J14 >3G"HI1 J16 >3G"HI1 J100,&R!,B :F#L*& $>?G @G"! HJ#B##"#"#"3$$ $LM H N HF ,,,l.G.GH B BFB03& }l&CD# E#
 
 rzz2::&>?. @
. 
0
0 Dr&   