
    {Kgm                    $   d dl Z d dlmZ d dlZd dlZd dl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mZmZ d d
lmZ d dlm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+ d Z, G d dejZ                        Z. G d dej^                        Z0 G d dejb                        Z2d Z-d Z/d Z1d Z3d Z4d Z5 ejl                  ddgddgddgddgddgddgg      Z7g dZ8 ejl                  ddgddgd dgg      Z9g d!Z: ejl                  ddgd"d#gd$d%gddgd&d#gd%d%gddgd d'gddgg	      Z;d(gd z  d)gd z  z   d*gd z  z   Z< ejl                  d$d#gddgd dgg      Z=g d+Z> ejl                  g d,g d,g d-g d-g d.g d.g d/g d/g      Z? ejl                  g d0      Z@ ejl                  g d1g d2g d3g d4g d5g d6g d7g d8g      ZA ejl                  g d0      ZB ej                         ZD ejl                  ddgddgddgddgddgddgg      ZEg dZFg d9ZGdd:ZHd; ZIej                  j                  d<e-e3e/e4g      ej                  j                  d=g d>      d?               ZLej                  j                  d<e-e3e/e4g      d@        ZMej                  j                  d<e-e3e/e4g      dA        ZNej                  j                  d<e-e3e/e4e1e5g      dB        ZOej                  j                  d<e-e3e/e4e1e5g      dC        ZPej                  j                  d<e-e3e/e4g      dD        ZQej                  j                  d<e-e3e/e4g      dE        ZRej                  j                  d<e-e3e/e4g      dF        ZSej                  j                  d<e-e3e/e4g      dG        ZTej                  j                  d<e-e3e/e4g      dH        ZUej                  j                  d<e-e3e/e4g      dI        ZVej                  j                  d<e-e3g      dJ        ZWej                  j                  d<e-e3e1e5g      dK        ZXej                  j                  dLe-dM ej                  dN      ife3dM ej                  dN      ife1dO ej                  dN      ife5dO ej                  dN      ifg      dP        ZZej                  j                  d<e-e3e/e4g      dQ        Z[ej                  j                  dLe-dMd ife3dMd ife1dOd ife5dOd ifg      dR        Z\ej                  j                  d<e-e3g      dS        Z]ej                  j                  d<e-e3g      dT        Z^ej                  j                  d<e-e3g      dU        Z_ej                  j                  d<e-e3g      dV        Z`ej                  j                  d<e-e3g      dW        Zaej                  j                  d<e-e3g      dX        Zbej                  j                  d<e-e3g      dY        Zcej                  j                  d<e-e3g      dZ        Zdej                  j                  d<e-e3g      d[        Zeej                  j                  d<e-e3g      d\        Zfej                  j                  d<e-e3g      d]        Zgej                  j                  d<e-e3g      d^        Zhej                  j                  d<e-e3g      d_        Ziej                  j                  d<e-e3g      d`        Zjej                  j                  d<e-e3g      da        Zkej                  j                  d<e-e3g      db        Zlej                  j                  d<e-e3g      dc        Zmej                  j                  d<e-e3g      dd        Znej                  j                  d<e-e3e1e5g      de        Zoej                  j                  d<e-e3g      df        Zpej                  j                  d<e-e3g      dg        Zqej                  j                  d<e-e3g      dh        Zrej                  j                  d<e-e3g      di        Zsej                  j                  d<e-e3g      dj        Ztej                  j                  d<e-e3g      ej                  j                  d=g d>      dk               Zuej                  j                  d<e-e3g      dl        Zvej                  j                  d<e-e3g      dm        Zwej                  j                  d<e-e3g      dn        Zxej                  j                  d<e/e4g      do        Zyej                  j                  d<e/e4g      dp        Zzej                  j                  d<e/e4g      dq        Z{ej                  j                  d<e/e4g      dr        Z|ej                  j                  d<e/e4g      ds        Z}ej                  j                  d<e/e4g      dt        Z~ej                  j                  d<e/e4g      du        Zej                  j                  d<e/e4g      dv        Ze+ej                  j                  d<e/e4g      dw               Zej                  j                  d<e/e4g      ej                  j                  d=g d>      dx               Zej                  j                  d<e/e4g      dy        ZddzZej                  j                  d<e1e5g      d{        Zej                  j                  d<e1e5g      ej                  j                  d=g d>      d|               Zej                  j                  d<e1e5g      d}        Zej                  j                  d<e1e5g      d~        Zej                  j                  d<e1e5g      ej                  j                  d=g d>      d               Zej                  j                  d<e1e5g      d        Zej                  j                  d<e1e5g      d        Zej                  j                  d<e1e5g      d        Zej                  j                  d<e1e5g      d        Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  dg d      d        Zej                  j                  dejZ                  ej^                  g      d        Zd Zd Zej                  j                  de-e/g      d        Zej                  j                  de-e3e/e4e1e5g      ej                  j                  dejJ                  ejL                  f      d               Zej                  j                  de-e3e/e4e1e5g      d        Zej                  j                  de-e1g      d        Zej                  j                  de-e/e1g      d        Zy)    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)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalignore_warningsc                 <    d| vrd| d<   d| vrd | d<   d| vrd| d<   y y )Nrandom_state*   tolmax_iter    kwargss    g/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_sgd.py_update_kwargsr%       s<    V#!#~Fuz      c                   <     e Zd Z fdZ fdZ fdZ fdZ xZS )_SparseSGDClassifierc                 V    t        j                  |      }t        |   ||g|i |S N)sp
csr_matrixsuperfitselfXyargskw	__class__s        r$   r.   z_SparseSGDClassifier.fit+   s,    MM!w{1a-$-"--r&   c                 V    t        j                  |      }t        |   ||g|i |S r*   )r+   r,   r-   partial_fitr/   s        r$   r7   z _SparseSGDClassifier.partial_fit/   s-    MM!w"1a5$5"55r&   c                 L    t        j                  |      }t        |   |      S r*   )r+   r,   r-   decision_functionr0   r1   r5   s     r$   r9   z&_SparseSGDClassifier.decision_function3   s!    MM!w(++r&   c                 L    t        j                  |      }t        |   |      S r*   )r+   r,   r-   predict_probar:   s     r$   r<   z"_SparseSGDClassifier.predict_proba7   s!    MM!w$Q''r&   )__name__
__module____qualname__r.   r7   r9   r<   __classcell__)r5   s   @r$   r(   r(   *   s    .6,( (r&   r(   c                       e Zd Zd Zd Zd Zy)_SparseSGDRegressorc                 v    t        j                  |      }t        j                  j                  | ||g|i |S r*   )r+   r,   r   SGDRegressorr.   r0   r1   r2   r3   r4   s        r$   r.   z_SparseSGDRegressor.fit=   s5    MM!((,,T1aE$E"EEr&   c                 v    t        j                  |      }t        j                  j                  | ||g|i |S r*   )r+   r,   r   rD   r7   rE   s        r$   r7   z_SparseSGDRegressor.partial_fitA   s5    MM!((44T1aM$M"MMr&   c                 t    t        j                  |      }t        j                  j                  | |g|i |S r*   )r+   r,   r   rD   r9   r0   r1   r3   r4   s       r$   r9   z%_SparseSGDRegressor.decision_functionE   s3    MM!((::4PTPRPPr&   Nr=   r>   r?   r.   r7   r9   r!   r&   r$   rB   rB   <   s    FNQr&   rB   c                       e Zd Zd Zd Zd Zy)_SparseSGDOneClassSVMc                 t    t        j                  |      }t        j                  j                  | |g|i |S r*   )r+   r,   r   SGDOneClassSVMr.   rH   s       r$   r.   z_SparseSGDOneClassSVM.fitL   s3    MM!**..tQDDDDr&   c                 t    t        j                  |      }t        j                  j                  | |g|i |S r*   )r+   r,   r   rM   r7   rH   s       r$   r7   z!_SparseSGDOneClassSVM.partial_fitP   s3    MM!**66tQLLLLr&   c                 t    t        j                  |      }t        j                  j                  | |g|i |S r*   )r+   r,   r   rM   r9   rH   s       r$   r9   z'_SparseSGDOneClassSVM.decision_functionT   s3    MM!**<<T1RtRrRRr&   NrI   r!   r&   r$   rK   rK   K   s    EMSr&   rK   c                  B    t        |        t        j                  di | S Nr!   )r%   r   SGDClassifierr"   s    r$   rR   rR   Y   s    6%%///r&   c                  B    t        |        t        j                  di | S rQ   )r%   r   rD   r"   s    r$   rD   rD   ^   s    6$$.v..r&   c                  B    t        |        t        j                  di | S rQ   )r%   r   rM   r"   s    r$   rM   rM   c   s    6&&000r&   c                  .    t        |        t        di | S rQ   )r%   r(   r"   s    r$   SparseSGDClassifierrV   h   s    6)&))r&   c                  .    t        |        t        di | S rQ   )r%   rB   r"   s    r$   SparseSGDRegressorrX   m   s    6(((r&   c                  .    t        |        t        di | S rQ   )r%   rK   r"   s    r$   SparseSGDOneClassSVMrZ   r   s    6 *6**r&         )r]   r]   r]   r^   r^   r^      )r]   r^   r^   g            ?g            ?g      ?      onetwothree)rc   rd   re   )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]   zG?g\(\?r   r   r   )r]   Q?g)\(?r   r   r   )r]   Q?Gz?r   r   r   )r   r   r   g{Gz?rj   r]   )r   r   r   gHzG?rh   r]   )r   r   r   rj   gffffff?r]   )r   r   r   g(\?r]   r]   )r   r]   r]   c                    |#t        j                  |j                  d         }n|}t        j                  |j                  d         }|}	d}
d}| t        t        fv rd}t        |      D ]o  \  }}t        j                  ||      }||	z  }|||   z
  }|d||z  z
  z  }|||z  |z   z  }|	||z   |z  z  }	||z  }||z  }||dz   z  }|
|z  }
|
|	z  }
|
|dz   z  }
q ||
fS )Nr]                 ?{Gz?)npzerosshaperV   rX   	enumeratedot)klassr1   r2   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5FF5'"	Yqt83#+&&S8^e+,,sX~&..	17"1s7"QY&QW$ !  ---r&   c                 T    | ddd|      }|j                  ||        | ddd|      }|j                  |||j                  j                         |j                  j                                 | dddd|      }|j                  ||       |j                  |j                  k(  sJ t        |j                  |j                         |j                  d       |j                  ||       |j                  |j                  k(  sJ t        |j                  |j                         y )	Nro   F)rw   eta0shufflelearning_rateMbP?	coef_initry   T)rw   r   r   
warm_startr   rw   )r.   coef_copy
intercept_t_r   
set_params)ru   r1   Ylrclfclf2clf3s          r$   _test_warm_startr      s    
duB
GCGGAqMu4bIDHHQSYY^^-cnn>Q>Q>SHT uRD 	HHQN77cffdjj#))4OO%O HHQN77dggdjj$**5r&   ru   r   )constantoptimal
invscalingadaptivec                 0    t        | t        t        |       y r*   )r   r1   r   ru   r   s     r$   test_warm_startr      s    
 UAq"%r&   c                 Z    | dd      }|j                  t        t               t        j                  t              d d t        j
                  f   }t        j                  ||f   }t        j                  t              5  |j                  t        |       d d d        y # 1 sw Y   y xY w)Nro   Frw   r   )
r.   r1   r   rp   arraynewaxisc_pytestraises
ValueError)ru   r   Y_s      r$   test_input_formatr      sm    
 dE
*CGGAqM	!Q

]	#B	r2vB	z	"2 
#	"	"s   B!!B*c                     | dd      }t        |      }|j                  d       |j                  t        t                | dd      }|j                  t        t               t        |j                  |j                         y )Nro   l1)rw   penaltyl2)r   )r   r   r.   r1   r   r   r   ru   r   r   s      r$   
test_cloner     s_    
 dD
)C
*CNN4N GGAqMtT*DHHQNsyy$**-r&   c                 n    | dd      }|j                  t        t               t        |d      sJ t        |d      sJ t        |d      sJ t        |d      sJ  |        }|j                  t        t               t        |d      rJ t        |d      rJ t        |d      rJ t        |d      rJ y )NTro   )averager   _average_coef_average_intercept_standard_intercept_standard_coef)r.   r1   r   hasattrru   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s1222s,----r&   c                     | d      } |        }t        d      D ]  }t        |      rg|j                  t        t        t        j                  t                     |j                  t        t        t        j                  t                     u|j                  t        t               |j                  t        t                t        |j                  |j                  d       | t        t        t        t        fv r#t        |j                  |j                  d       y | t        t         fv r!t#        |j$                  |j$                         y y )NiX  r   d   classes   decimal)ranger   r7   r1   r   rp   uniquer   r   rR   rV   rD   rX   r   r   rM   rZ   r   offset_)ru   clf1r   _s       r$   %test_late_onset_averaging_not_reachedr   :  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           	          d}d}t        j                  t              }d||dk(  <   d||dk(  <    | ddd	||dd
      } | d
dd	||dd
      }|j                  t        |       |j                  t        |       t        | t        ||||j                  j                         |j                        \  }}t        |j                  j                         |j                         d       t        |j                  |d       y )Nr   -C6?      r]   rn   r^      r   squared_errorF)r   r   lossr   rw   r   r   )rx   ry   r   r   )rp   r   r   r.   r1   r   r   ravelr   r   r   )ru   r   rw   Y_encoder   r   r{   r}   s           r$   !test_late_onset_averaging_reachedr   W  s    DExx{H"HX]!HX] D  D 	HHQHHQ)-	JJ$$&*&O& djj..0/2G2G2ISUV):BGr&   c                     t         j                  t         j                  dkD     }t         j                  t         j                  dkD     }dD ]0  }d} | |d|      j                  ||      }|j                  |k  r0J  y )Nr   TF  r   )early_stoppingr   r   )irisdatatargetr.   n_iter_)ru   r1   r   r   r   r   s         r$   test_early_stoppingr     sq     			$++/"ADKK!O$A'>thOSSq
 {{X%%% (r&   c                 "    | dddd      }|j                  t        j                  t        j                          | dddd      }|j                  t        j                  t        j                         |j                  |j                  kD  sJ y )Nr   ro   r   r   )r   r   r   r   r   )r.   r   r   r   r   )ru   r   r   s      r$   "test_adaptive_longer_than_constantr     sf     z$MDHHTYY$z$MDHHTYY$<<$,,&&&r&   c           
         t         j                  t         j                  }}d}d}d}d} | dt        j                  j                  |      |ddd ||      }|j                  ||       |j                  |k(  sJ  | dt        j                  j                  |      ddd ||	      }t        |      rt        ||
      }	nt        ||
      }	t        |	j                  ||            \  }
}t        j                  |
      }
|j                  ||
   ||
          |j                  |k(  sJ t        |j                  |j                         y )N皙?r   F
   Tr   ro   )r   r   validation_fractionr   r   r   r   r   )r   r   r   r   r   r   r   )	test_sizer   )r   r   r   rp   randomRandomStater.   r   r   r   r   nextsplitsortr   r   )ru   r1   r   r   seedr   r   r   r   cv	idx_trainidx_vals               r$   )test_validation_set_not_used_for_trainingr     s0    99dkkqADGHYY**40/ 	D 	HHQN<<8###YY**40 D T#.APTU$7dKbhhq!n-Iw	"IHHQy\1Y<(<<8###tzz4::.r&   c           
          t         j                  t         j                  }}dD ]J  }dD cg c](  } | ||dd      j                  ||      j                  * }}t        |t        |             L y c c}w )Nr   )r^   r_   r   r   r   )r   n_iter_no_changer   r   )r   r   r   r.   r   r   sorted)ru   r1   r   r   r   n_iter_lists         r$   test_n_iter_no_changer     s     99dkkqA' %/

 %/  -!1	 SAYW %/ 	 

 	;{(;< (

s   -A1c                      | dd      }t        j                  t              5  |j                  t        t
               d d d        y # 1 sw Y   y xY w)NTrk   )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c           	          dD ]M  } | ddd|dd      }|j                  t        t               t        |j	                  t
              t               O y )N)hingesquared_hingelog_lossmodified_huberr   ro   Tr   )r   rw   fit_interceptr   r   r   )r.   r1   r   r   predictTtrue_result)ru   r   r   s      r$   test_sgd_clfr     sM     I
 	13;;q>;7 Ir&   c                     t        j                  t        d      5   |        j                  t        t
        t        j                  d             ddd       y# 1 sw Y   yxY w)z1Check that the shape of `coef_init` is validated.z)Provided coef_init does not match datasetmatchr_   r   N)r   r   r   r.   r1   r   rp   rq   ru   s    r$   test_provide_coefr    s<    
 
z)T	UAqBHHTN3 
V	U	Us   5AA#zklass, fit_paramsry   r   offset_initc                      |        }t        j                  t        d      5   |j                  t        t
        fi | ddd       y# 1 sw Y   yxY w)z:Check that `intercept_init` or `offset_init` is validated.zdoes not match datasetr   Nr   r   r   r.   r1   r   )ru   
fit_paramssgd_estimators      r$   test_set_intercept_offsetr    s>     GM	z)A	B!Q-*- 
C	B	Bs   A		Ac                     d}t        j                  t        |      5   | d      j                  t        t
               ddd       y# 1 sw Y   yxY w)zSCheck 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   r7   r1   r   )ru   err_msgs     r$   (test_sgd_early_stopping_with_partial_fitr    s9     @G	z	1T"..q!4 
2	1	1s   "A		Ac                 F      |        j                   t        t        fi | y)zdCheck that we can pass a scaler with binary classification to
    `intercept_init` or `offset_init`.N)r.   X5Y5)ru   r  s     r$    test_set_intercept_offset_binaryr  $  s     EGKKB%*%r&   c           
         d}d}d}d}t         j                  j                  d      }|j                  ||f      }|j                  |      } | dd||d	d
d	d      }t        j                  ||      }	t        j
                  |	      }	|j                  ||	       t        | ||	||      \  }
}|
j                  d
d      }
t        |j                  |
d       t        |j                  |d       y )N皙?       @   r   r   sizer   r   Tr]   Fr   r   r   rw   r   r   r   r   r\      r   )rp   r   r   normalrt   signr.   r   reshaper   r   r   r   )ru   rv   rw   	n_samples
n_featuresrngr1   wr   r2   r{   r}   s               r$   &test_average_binary_computed_correctlyr  3  s     CEIJ
))


"C

J/
0A



#A
 	C 	q!A

AGGAqM)-eQ3)F&O&%--a4Ocii"E(92Fr&   c                 ,    |        j                  t        t              } |        j                  t        t        |j                          |        j                  t        t
              } |        j                  t        t
        |j                         y )Nry   )r.   r  r  r   r1   r   r   s     r$   test_set_intercept_to_interceptr"  U  sX     '++b"
C	GKKBs~~K6
'++a
C	GKK1S^^K4r&   c                      | dd      }t        j                  t              5  |j                  t        t        j                  d             d d d        y # 1 sw Y   y xY w)Nro   r  rw   r   	   )r   r   r   r.   X2rp   onesr   s     r$   test_sgd_at_least_two_labelsr(  _  s>     dR
(C	z	"BGGAJ 
#	"	"s   *AA c                     d}t        j                  t        |      5   | d      j                  t        t
        t        j                  t
                     d d d        y # 1 sw Y   y xY w)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   r7   r1   r   rp   r   )ru   regexs     r$   &test_partial_fit_weight_class_balancedr-  g  sJ    	 
 
z	/:&221a12N 
0	/	/s   ;A""A+c                 D    | dd      j                  t        t              }|j                  j                  dk(  sJ |j
                  j                  dk(  sJ |j                  ddgg      j                  dk(  sJ |j                  t              }t        |t               y )Nro   r  r$  r_   r^   r   r   r]   r_   r.   r&  Y2r   rr   r   r9   r   T2r   true_result2ru   r   preds      r$   test_sgd_multiclassr7  x  s     dR
(
,
,R
4C99??f$$$>>4'''  1a&*00F:::;;r?Dt\*r&   c           
         d}d} | dd||dddd      }t        j                  t              }|j                  t        |       t        j
                  |      }t        |      D ]{  \  }}t        j                  |j                  d	         }d
|||k7  <   t        | t        |||      \  }	}
t        |	|j                  |   d       t        |
|j                  |   d       } y )Nr   ro   r   r   Tr]   Fr  r   r\   r   r   )rp   r   r2  r.   r&  r   rs   r'  rr   r   r   r   r   r   )ru   rv   rw   r   np_Y2r   r   cly_iaverage_coefr}   s              r$   test_sgd_multiclass_averager=    s    
CE
 	C HHRLEGGBiiG7#2ggekk!n%ERK*.ub#sE*J''!,		!bI-s~~a/@"M $r&   c                 X    | dd      }|j                  t        t        t        j                  d      t        j                  d             |j
                  j                  dk(  sJ |j                  j                  sJ d       |j                  t              }t        |t               y )Nro   r  r$  r/  r_   r   r   )r.   r&  r2  rp   rq   r   rr   r   r   r3  r   r4  r5  s      r$   "test_sgd_multiclass_with_init_coefr?    sz     dR
(CGGBbhhv.rxx{GK99??f$$$>>%%;;r?Dt\*r&   c                 F    | ddd      j                  t        t              }|j                  j                  dk(  sJ |j
                  j                  dk(  sJ |j                  ddgg      j                  dk(  sJ |j                  t              }t        |t               y )	Nro   r  r^   )rw   r   n_jobsr/  r   r   r0  r1  r5  s      r$   test_sgd_multiclass_njobsrB    s     dR
2
6
6r2
>C99??f$$$>>4'''  1a&*00F:::;;r?Dt\*r&   c                 d    |        }t        j                  t              5  |j                  t        t
        t        j                  d             d d d         |        j                  t        t
        t        j                  d            } |        }t        j                  t              5  |j                  t        t
        t        j                  d             d d d         |        j                  t        t
        t        j                  d            }y # 1 sw Y   xY w# 1 sw Y   JxY w)N)r^   r^   r   r/  r]   r!  r   )r   r   r   r.   r&  r2  rp   rq   r   s     r$   test_set_coef_multiclassrE    s    
 'C	z	"B"((6"23 
# '++b"(8+
9C 'C	z	"Brxx~6 
# '++b"RXXd^+
<C 
#	" 
#	"s   0D-0D&D#&D/c                    t         j                  j                  D ]O  }t        |      }|dv rt        |d      sJ t        |d      r/J dj	                  |      }t        |d      rJ t        |d      rJ t        j                  t        d      5 }|j                   d d d        t        j                  j                  t              sJ |t        |j                  j                        v sJ t        j                  t        d      5 }|j                   d d d        t        |j                  j                  t              sJ |t        |j                  j                        v rPJ  y # 1 sw Y   xY w# 1 sw Y   bxY w)	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   rR   loss_functionsr   formatr   r   AttributeErrorr<   
isinstancevalue	__cause__strrH  )ru   r   r   	inner_msg	exec_infos        r$   $test_sgd_predict_proba_method_accessrR    sR    **99&1130003 3444OVVI sO444s$7888&H!!
 ioo77HHHIOO$=$= >>>>&L%% ioo77HHHIOO$=$= >>>>1 :  s   E/E;/E8	;F	c                    t        dddd       j                  t        t              }t	        |d      rJ t	        |d      rJ dD ]  } | |dd      }|j                  t        t               |j                  d	d
gg      }|d   dkD  sJ |j                  ddgg      }|d   dk  sJ t        j                  d      5  |j                  d	d
gg      }|d   |d   kD  sJ |j                  ddgg      }|d   |d   k  sJ 	 d d d          | ddd      j                  t        t              }|j                  ddgddgg      }|j                  ddgddgg      }t        t        j                  |d      t        j                  |d             t        |d   j                         d       t        j                   |d   dk\        sJ |j                  ddgg      }|j                  ddgg      }t        t        j"                  |d         t        j"                  |d                |j                  d	d
gg      }|j                  d	d
gg      }t%        t        j&                  |      |       |j                  ddgg      }|j                  ddgg      }t%        t        j&                  |      |        | ddd      }|j                  t        t               |j                  d	d
gg      }|j                  d	d
gg      }| t(        k7  r1t        j                  |d      t        j                  |d      k(  s3J t        j*                  |d      t        j*                  |d      k(  sJ t        j-                  d      }|j                  |g      }t        j                   |dk        r&|j                  |g      }t%        |d   dgd	z         y y # 1 sw Y   xY w)Nr   ro   r   )r   rw   r   r   r<   rH  rG  )r   rw   r   r_   r^   r   r]   r`   r\   ignore)divide)r   r   r   r  皙333333?皙?r]   )axisr   r   gUUUUUU?)rR   r.   r1   r   r   r<   rp   errstaterH  r&  r2  r9   r   argmaxr   sumallargsortr   logrV   argminmean)ru   r   r   r   dlpxs          r$   test_sgd_probarf    s    WD24
H
L
LQPQ
RCsO,,,s/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O&	c                    t        t              }t        j                  j	                  d      }t        j
                  |      }|j                  |       t        |d d f   }t        |   } | ddddd d      }|j                  ||       t        |j                  ddd	f   t        j                  d
             |j                  |      }t        ||       |j                          t        j                  |j                        sJ |j                  |      }t        ||       t!        j"                  t!        j$                  |            }t        j                  |j                        sJ |j                  |      }t        ||       y )N   r   rY  F  )r   rw   r   r   r   r   r   r]   r\   )   )lenX4rp   r   r   aranger   Y4r.   r   r   rq   r   sparsifyr+   issparsepickleloadsdumps)ru   nr  idxr1   r   r   r6  s           r$   test_sgd_l1rv  4  s3    	BA
))


#C
))A,CKK
36
A
3A
C GGAqMsyyAbD)288D>:;;q>DtQ LLN;;syy!!!;;q>DtQ ,,v||C(
)C;;syy!!!;;q>DtQr&   c                    t        j                  ddgddgddgddgddgg      }g d} | ddd	d 
      }|j                  ||       t        |j	                  ddgg      t        j                  dg              | ddd	ddi
      }|j                  ||       t        |j	                  ddgg      t        j                  dg             y )Nr   r   皙rn   rm   r]   r]   r]   r\   r\   r  r   F)rw   r   r   r+  rY  r]   r   r\   rp   r   r.   r   r   ru   r1   r2   r   s       r$   test_class_weightsr|  Y  s     	4,q	D$<#sc3ZPQAA
cDD
QCGGAqMs{{S$K=1288QC=A cDQPUJ
WCGGAqM s{{S$K=1288RD>Br&   c                     ddgddgddgddgg}g d} | ddd       }|j                  ||       ddgddgg}ddg} | ddddd      }|j                  ||       t        |j                  |j                  d	
       y )Nr]   r   )r   r   r]   r]   r  r   rw   r   r+  r`   rT  r^   r   )r.   r   r   )ru   r1   r2   r   clf_weighteds        r$   test_equal_class_weightr  l  s     Q!Q!Q!Q(AA
cDt
<CGGAqM
Q!QA	
AAsTCC@PQLQ 		<#5#5qAr&   c                      | ddddi      }t        j                  t              5  |j                  t        t
               d d d        y # 1 sw Y   y xY w)Nr  r   r   r`   r~  r  r   s     r$   test_wrong_class_weight_labelr  }  s;     cD3x
@C	z	"1 
#	"	"s   AAc                    ddd}t         j                  j                  d      }|j                  t        j
                  d         }t        j                  |      }|t        dk(  xx   |d   z  cc<   |t        dk(  xx   |d   z  cc<    | dd|	      } | dd
      }|j                  t        t        |       |j                  t        t        |       t        |j                  |j                         y )Ng333333?rX  )r]   r^   r   r]   r^   r  r  r~  r$  sample_weight)rp   r   r   random_samplern  rr   r   r.   rl  r   r   )ru   class_weightsr  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                 `   t         j                  t         j                  }}t        |      }t	        j
                  |j                  d         }t        j                  j                  d      }|j                  |       ||   }||   } | ddd d      j                  ||      }t        j                  ||j                  |      d      }t        |d	d
        | dddd      j                  ||      }t        j                  ||j                  |      d      }t        |d	d
       t        |j                   |j                   d       ||dk(  d d f   }||dk(     }	t	        j"                  |g|gdz  z         }
t	        j$                  |g|	gdz  z         } | dd d      }|j                  |
|       |j                  |      }t        j                  ||d      d	k  sJ  | ddd      }|j                  |
|       |j                  |      }t        j                  ||d      d	kD  sJ y )Nr      r   r   F)rw   r   r+  r   weightedr   ri   r]   r   r*  r   )r   r+  r   )r   r   r   r   rp   rm  rr   r   r   r   r.   r   f1_scorer   r   r   r   vstackconcatenate)ru   r1   r2   ru  r  r   f1clf_balancedX_0y_0X_imbalancedy_imbalancedy_preds                r$   test_balanced_weightr    s   
 99dkkqAaA
))AGGAJ
C
))


"CKK	#A	#A
ft$
N
R
RSTVW
XC			!S[[^Z	@BD!, t*e	c!Qi  
		!\11!4j	IBD!, cii););Q? AFAI,C
AF)C99aSC52:-.L>>1#
"23L D%
@CGGL,'[[^FAvz:TAAA J
FCGGL,'[[^FAvz:TAAAr&   c                    t        j                  ddgddgddgddgddgg      }g d} | ddd	
      }|j                  ||       t        |j	                  ddgg      t        j                  dg             |j                  ||dgdz  dgdz  z          t        |j	                  ddgg      t        j                  dg             y )Nr   r   rx  rn   rm   ry  r  r   Frw   r   r   rY  r]   r   r_   r^   r  r\   rz  r{  s       r$   test_sample_weightsr    s     	4,q	D$<#sc3ZPQAA
cD
>CGGAqMs{{S$K=1288QC=A GGAq!qcAg 5G6 s{{S$K=1288RD>Br&   c                 $   | t         t        fv r | ddd      }n| t        t        fv r | ddd      }t	        j
                  t              5  j                  t        t        t        j                  d             d d d        y # 1 sw Y   y xY w)Nr  r   Fr  )nur   r   r   r  )rR   rV   rM   rZ   r   r   r   r.   r1   r   rp   rm  r   s     r$   test_wrong_sample_weightsr    sn    
  344#EB	>#78	8sT?	z	"1BIIaL1 
#	"	"s   0BBc                      | d      }t        j                  t              5  |j                  t        t
               d d d        y # 1 sw Y   y xY w)Nro   r   )r   r   r   r7   r   r   r   s     r$   test_partial_fit_exceptionr    s2    
d
C	z	"B 
#	"	"s   AAc                    t         j                  d   dz  } | d      }t        j                  t              }|j                  t         d | t        d | |       |j                  j                  dt         j                  d   fk(  sJ |j                  j                  dk(  sJ |j                  ddgg      j                  dk(  sJ t        |j                  j                        }|j                  t         |d  t        |d         t        |j                  j                        }|sJ |       |j                  t              }t        |t               y )Nr   r_   ro   r   r   r]   rD  )r1   rr   rp   r   r   r7   r   r   r9   idr   r   r   r   r   )ru   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                 ^   t         j                  d   dz  } | d      }t        j                  t              }|j                  t         d | t        d | |       |j                  j                  dt         j                  d   fk(  sJ |j                  j                  dk(  sJ |j                  ddgg      j                  dk(  sJ t        |j                  j                        }|j                  t         |d  t        |d         t        |j                  j                        }|sJ |       y )	Nr   r_   ro   r   r   r]   r   r0  )r&  rr   rp   r   r2  r7   r   r   r9   r  r   )ru   r  r   r   r  r  s         r$   test_partial_fit_multiclassr    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                 @   t         j                  d   dz  } | dt         j                  d         }t        j                  t              }|j                  t         d | t        d | |       |j                  j                  dt         j                  d   fk(  sJ |j                  j                  dk(  sJ |j                  t         |d  t        |d         |j                  j                  dt         j                  d   fk(  sJ |j                  j                  dk(  sJ y )Nr   r_   ro   )rw   r   r   r]   r   )r&  rr   rp   r   r2  r7   r   r   )ru   r  r   r   s       r$   #test_partial_fit_multiclass_averager    s    HHQK1E
dBHHQK
0CiimGOOBvJ6E
GO<99??q"((1+....>>4'''OOBuvJ56
+99??q"((1+....>>4'''r&   c                 z     |        }|j                  t        t               |j                  t        t               y r*   )r.   r&  r2  r7   r   s     r$   test_fit_then_partial_fitr  %  s&    
 'CGGBOOOBr&   c                    t         t        t        ft        t        t
        ffD ]  \  }}} | ddd|d      }|j                  ||       |j                  |      }|j                  }t        j                  |      } | dd|d      }t        d      D ]  }	|j                  |||        |j                  |      }
|j                  |k(  sJ t        ||
d        y )Nro   r^   F)rw   r   r   r   r   rw   r   r   r   r   r   )r1   r   r   r&  r2  r3  r.   r9   r   rp   r   r   r7   r   )ru   r   X_r   T_r   r  tr   r   y_pred2s              r$   "test_partial_fit_equal_fit_classifr  /  s     1ay2r2,/
B$TARQVWB&&r*FF))B-$TUKqAOOBGO4 ''+vv{{!&'1= 0r&   c                    t         j                  j                  d      } | dddd|      }|j                  t        t
               dt        j                  |j                  t              t
        k(        k(  sJ  | dddd|      }|j                  t        t
               dt        j                  |j                  t              t
        k(        k(  sJ  | dd	|
      }|j                  t        t
               dt        j                  |j                  t              t
        k(        k(  sJ  | dddd|      }|j                  t        t
               dt        j                  |j                  t              t
        k(        k(  sJ y )Nr]   ro   r   r  epsilon_insensitive)rw   r   r   r   r   rn   squared_epsilon_insensitivehuber)rw   r   r   r   )rp   r   r   r.   r1   r   rb  r   )ru   r   r   s      r$   test_regression_lossesr  B  s9   99((+L
 "!C GGAqM"''#++a.A-....
 *!C GGAqM"''#++a.A-....
d|
DCGGAqM"''#++a.A-....
 !C GGAqM"''#++a.A-....r&   c                 0    t        | t        t        d       y )Nr   )r   r&  r2  r  s    r$   test_warm_start_multiclassr  h  s    UBI.r&   c                     | dd      }|j                  t        t               t        |d      sJ t	               j                  t              D cg c]	  }ddg|    }}|j                  t        d d d df   |       y c c}w )Nro   Fr   r   hamspamr\   )r.   r1   r   r   r   fit_transform)ru   r   r   r2   s       r$   test_multiple_fitr  m  s{     dE
*CGGAqM3    &2^%A%A!%DE%D%	%DAEGGAa"fIq 	Fs   Bc                      | ddd      }|j                  ddgddgddggg d       |j                  d   |j                  d   k(  sJ y )Nr  r^   Fr  r   r]   )r   r]   r^   )r.   r   r   s     r$   test_sgd_regr  }  sQ     cAU
;CGGaVaVaV$i099Q<399Q<'''r&   c           
         d}d}d}d}t         j                  j                  d      }|j                  ||f      }|j                  |      }t        j                  ||      } | dd||d	d
d	d      }	|	j                  ||       t        | ||||      \  }
}t        |	j                  |
d       t        |	j                  |d       y )Nr   ro   r  r   r   r  r   r   Tr]   Fr  r   r   )rp   r   r   r  rt   r.   r   r   r   r   r   ru   rv   rw   r  r  r  r1   r  r2   r   r{   r}   s               r$   $test_sgd_averaged_computed_correctlyr    s     CEIJ
))


"C

J/
0A



#A 	q!A
 	C GGAqM)-eQ3)F&O&cii"E(92Fr&   c           
      @   d}d}d}d}t         j                  j                  d      }|j                  ||f      }|j                  |      }t        j                  ||      } | dd||d	d
d	d      }	|	j                  |d t        |dz         d d  |d t        |dz                |	j                  |t        |dz        d  d d  |t        |dz        d         t        | ||||      \  }
}t        |	j                  |
d       t        |	j                  d   |d       y )Nr   ro   r  r   r   r  r   r   Tr]   Fr  r^   r   r   )rp   r   r   r  rt   r7   intr   r   r   r   r   r  s               r$   test_sgd_averaged_partial_fitr    s.    CEIJ
))


"C

J/
0A



#A 	q!A
 	C OOA*IM*+A.2FC	A4F0GHOOAc)a-(*+A.#i!m2D2F0GH)-eQ3)F&O&cii"Eq)+<bIr&   c           
         d}d} | dd||dddd      }t         j                  d	   }|j                  t        d t	        |d
z         d d  t         d t	        |d
z                |j                  t        t	        |d
z        d  d d  t         t	        |d
z        d         t        | t        t         ||      \  }}t        |j                  |d       t        |j                  |d       y )Nr   ro   r   r   Tr]   Fr  r   r^   r   r   )
r   rr   r7   r   r  r   r   r   r   r   )ru   rv   rw   r   r  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                    d\  }}d}t         j                  j                  d      }t        j                  |||      j	                  |d      }d|j                         z  } | dddd	
      }|j                  ||       |j                  ||      }|dkD  sJ d|j                         z  |j                  |d      j                         z   } | dddd	
      }|j                  ||       |j                  ||      }|dkD  sJ y )Nr    r   r   r]   r`   r   r  r  F)r   rw   r   r   rk   	rp   r   r   linspacer  r   r.   scorerandn	ru   xminxmaxr  r  r1   r2   r   r  s	            r$   test_sgd_least_squares_fitr    s    JD$I
))


"C
D$	*229a@A 	aggiA
_C"E
RCGGAqMIIaOE4<< 	aggi#))Iq17799A
_C"E
RCGGAqMIIaOE3;;r&   c                    d\  }}d}t         j                  j                  d      }t        j                  |||      j	                  |d      }d|j                         z  } | dddd	d
      }|j                  ||       |j                  ||      }|dkD  sJ d|j                         z  |j                  |d      j                         z   } | dddd	d
      }|j                  ||       |j                  ||      }|dkD  sJ y )Nr  r   r   r]   r`   r  ro   r  r  Fr   epsilonrw   r   r   rk   r  r  s	            r$   test_sgd_epsilon_insensitiver    s   JD$I
))


"C
D$	*229a@A 	aggiA
"C GGAqMIIaOE4<< 	aggi#))Iq17799A
"C GGAqMIIaOE3;;r&   c                    d\  }}d}t         j                  j                  d      }t        j                  |||      j	                  |d      }d|j                         z  } | ddddd	
      }|j                  ||       |j                  ||      }|dkD  sJ d|j                         z  |j                  |d      j                         z   } | ddddd	
      }|j                  ||       |j                  ||      }|dkD  sJ y )Nr  r   r   r]   r`   r  r  r  Fr  rk   r  r  s	            r$   test_sgd_huber_fitr    s    JD$I
))


"C
D$	*229a@A 	aggiA
WcrQV
WCGGAqMIIaOE4<< 	aggi#))Iq17799A
WcrQV
WCGGAqMIIaOE3;;r&   c           	         d\  }}t         j                  j                  d      }|j                  ||      }|j                  |      }t        j                  ||      }dD ]|  }dD ]u  }t        j                  ||d      }	|	j                  ||        | dd||d	      }
|
j                  ||       d
||fz  }t        |	j                  |
j                  d|       w ~ y )N)r   r    r   )ro   r   )r`   rg   rn   F)rw   l1_ratior   
elasticnet2   )r   r   rw   r  r   zNcd and sgd did not converge to comparable results for alpha=%f and l1_ratio=%fr^   )r   r
  )
rp   r   r   r  rt   r   
ElasticNetr.   r   r   )ru   r  r  r  r1   ground_truth_coefr2   rw   r  cdsgdr
  s               r$   test_elasticnet_convergencer  6  s     $Iz
))


"C		)Z(A 		*-
q#$A 'H((heB FF1aL$!#C GGAqM7:?9JK   #))QP# ( r&   c                 &   t         j                  d   dz  } | d      }|j                  t         d | t        d |        |j                  j                  t         j                  d   fk(  sJ |j
                  j                  dk(  sJ |j                  ddgg      j                  dk(  sJ t        |j                  j                        }|j                  t         |d  t        |d         t        |j                  j                        }|sJ |       y )Nr   r_   ro   r   r]   rD  )	r1   rr   r7   r   r   r   r   r  r   )ru   r  r   r  r  s        r$   test_partial_fitr  X  s     GGAJ!OE
d
COOAfuIq%y)99??qwwqzm+++>>4''';;Ax &&$...
SYY^^
COOAefIqy)
SYY^^
COO3r&   c                 h    | ddd|d      }|j                  t        t               |j                  t              }|j
                  } | dd|d      }t        d      D ]  }|j                  t        t                |j                  t              }|j
                  |k(  sJ t        ||d       y )Nro   r^   F)rw   r   r   r   r   r  r   )	r.   r1   r   r   r   r   r   r7   r   )ru   r   r   r  r  r   r  s          r$   test_partial_fit_equal_fitr  j  s     dQTU
SCGGAqM[[^FA
dR
GC1X1 kk!nG66Q;;fgq9r&   c                 h     | d      }|j                  d       |j                  d   d   dk(  sJ y )Nrf   )r  r  r  r]   )r   rI  r   s     r$   test_loss_function_epsilonr  {  s8    

CNN3Ng&q)S000r&   c                    |#t        j                  |j                  d         }n|}t        j                  |j                  d         }|}d|z
  }	d}
d}| t        k(  rd}t	        |      D ]  \  }}t        j
                  ||      }||	z  }|dk  rd}nd}|t        dd||z  dz  z
        z  }|||z  |z   z  }|	|||z   z   |z  z  }	||z  }||z  }||dz   z  }|
|z  }
|
|	z  }
|
|dz   z  }
 |d|
z
  fS )Nr]   rm   rn   ro   r\   r   r^   )rp   rq   rr   rZ   rs   rt   max)ru   r1   rv   r  r   r  coefr<  offsetr|   r}   r~   r   r   r   r   s                   r$   asgd_oneclassr    sG   xx
#88AGGAJ'LFF
IE $$aL5FF5$	Y8HHAscBhl+,,#.5())sb8m,-55	CQY&QW$# !& ....r&   c                 L    | ddd|      }|j                  |        | ddd|      }|j                  ||j                  j                         |j                  j                                 | dddd|      }|j                  |       |j                  |j                  k(  sJ t        |j                  |j                         |j                  d	       |j                  |       |j                  |j                  k(  sJ t        |j                  |j                         y )
Nr`   ro   F)r  r   r   r   r  r   r  T)r  r   r   r   r   r  )r.   r   r   r   r   r   r   )ru   r1   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                 &    t        | t        |       y r*   )r  r1   r   s     r$   test_warm_start_oneclassr    s     eQ+r&   c                      | d      }t        |      }|j                  d       |j                  t                | d      }|j                  t               t	        |j
                  |j
                         y )Nr`   r  r  )r   r   r.   r1   r   r   r   s      r$   test_clone_oneclassr    sU     3-C
*CNNcNGGAJC=DHHQKsyy$**-r&   c                 D   t         j                  d   dz  } | d      }|j                  t         d |        |j                  j                  t         j                  d   fk(  sJ |j                  j                  dk(  sJ |j                  ddgg      j                  dk(  sJ |j                  }|j                  t         |d         |j                  |u sJ t        j                  t              5  |j                  t         d d df          d d d        y # 1 sw Y   y xY w)Nr   r_   r  r  r]   rD  )	r1   rr   r7   r   r   r   r   r   r   )ru   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   0DDc                     | ddd|d      }|j                  t               |j                  t              }|j                  }|j
                  }|j                  } | ddd|d      }t        d      D ]  }|j                  t                |j                  t              }|j                  |k(  sJ t        ||       t        |j
                  |       t        |j                  |       y )N皙?r^   ro   F)r  r   r   r   r   r]   )r  r   r   r   r   )
r.   r1   r9   r   r   r   r   r   r7   r   )	ru   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;;Hi(CIIt$CKK(r&   c                    d}d} | dd||dd      } | dd||dd      }|j                  t               |j                  t               t        | t        |||j                  j	                         |j
                  	      \  }}t        |j                  j	                         |j	                                t        |j
                  |       y )
Nr   r  r   r   r^   F)r   r   r   r  r   r   r]   r  )r.   r1   r  r   r   r   r   )ru   r   r  r   r   r<  average_offsets          r$   *test_late_onset_averaging_reached_oneclassr    s     D	B $2SXD  D 	HHQKHHQK $1q$djj&6&6&8dll$ L. DJJ$$&(:(:(<=DLL.1r&   c           	      4   d}d}d}d}t         j                  j                  d      }|j                  ||f      } | d||dd	dd
      }|j	                  |       t        | |||      \  }}	t        |j                  |       t        |j                  |	       y )Nr   r  r  r   r   r  r   Tr]   Fr   r   r  r   r   r   r   )	rp   r   r   r  r.   r  r   r   r   
ru   rv   r  r  r  r  r1   r   r<  r   s
             r$   -test_sgd_averaged_computed_correctly_oneclassr  "  s     C	BIJ
))


"C

J/
0A
 C GGAJ#03#C L.CII|,CKK0r&   c           	         d}d}d}d}t         j                  j                  d      }|j                  ||f      } | d||dd	dd
      }|j	                  |d t        |dz         d d         |j	                  |t        |dz        d  d d         t        | |||      \  }}	t        |j                  |       t        |j                  |	       y )Nr   r  r  r   r   r  r   Tr]   Fr  r^   )
rp   r   r   r  r7   r  r  r   r   r   r  s
             r$   &test_sgd_averaged_partial_fit_oneclassr  =  s     C	BIJ
))


"C

J/
0A
 C OOA*IM*+A./OOAc)a-(*+A./#03#C L.CII|,CKK0r&   c           	      b   d}d} | d||dddd      }t         j                  d   }|j                  t         d t        |d	z                |j                  t         t        |d	z        d         t	        | t         ||      \  }}t        |j                  |       t        |j                  |       y )
Nr   ro   r   Tr]   Fr  r   r^   )r   rr   r7   r  r  r   r   r   )ru   rv   r  r   r  r<  r   s          r$   test_average_sparse_oneclassr	  Y  s     C	B
 C IOOB+Y]+,-OOBs9q=)+,-#0C#D L.CII|,CKK0r&   c                  p   t        j                  ddgddgddgg      } t        j                  ddgddgg      }t        ddddd      }|j                  |        t	        |j
                  t        j                  d	d
g             |j                  d   dk(  sJ |j                  |      }t	        |t        j                  ddg             |j                  |      |j                  z
  }t	        |j                  |      |       |j                  |      }t        |t        j                  ddg             y )Nr[   r\   r]   r`   r^   r   F)r  r   r   r   r   g      g      ?r   rb   g      g      ?)rp   r   rM   r.   r   r   r   score_samplesr9   r   r   )X_trainX_testr   scoresdecr6  s         r$   test_sgd_oneclassr  r  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                  0   d} d}d}t         j                  j                  |      }d|j                  dd      z  }t         j                  |dz   |dz
  f   }d|j                  dd      z  }t         j                  |dz   |dz
  f   }t        |d| 	      }|j                  |       |j                  |      }|j                  |      j                  d
d      }	d}
t        ||      }t        | dd|
|d       }t        ||      }|j                  |       |j                  |      }|j                  |      j                  d
d      }t        j                  ||k(        dk\  sJ t        j                  t        j                  |	|f            d   }|dk\  sJ y )Nr  r  r   rX    r^   r   rbf)gammakernelr  r]   r\      )r  r   T)r  r   r   r   r   r   rk   rT  rf   )rp   r   r   r  r_r   r.   r   r9   r  r
   rM   r   rb  corrcoefr  )r  r  r   r  r1   r  r  r   y_pred_ocsvm	dec_ocsvmr   	transformclf_sgdpipe_sgdy_pred_sgdocsvmdec_sgdocsvmr  s                    r$   test_ocsvm_vs_sgdocsvmr     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?l23t;;;{{2>>9l*CDEdKHs??r&   c                     t        j                  dddd      \  } }t        ddd dd	d
      j                  | |      }t        dddd
d       j                  | |      }t	        |j
                  |j
                         t        ddd ddd
      j                  | |      }t        dddd
d       j                  | |      }t	        |j
                  |j
                         y )Nr   r   r  i  )r  r  n_informativer   r   r  r  gA?r   )rw   r   r   r   r  r   r   )rw   r   r   r   r   g|=r   )r   make_classificationrR   r.   r   r   )r1   r2   est_enest_l1est_l2s        r$   test_l1_ratior'    s    ''3btDAq
  
c!Qi  TABD	c!Qi  fllFLL9  
c!Qi  TABD	c!Qi  fllFLL9r&   c                     t        j                  d      5  t         j                  j                  d      } d}d}| j	                  ||f      }|d d d dfxx   dz  cc<   t        j
                  |      j                         sJ t               j                  |      }t        j
                  |      j                         sJ | j	                  |      }t        j                  ||      d	kD  j                  t         j                        }t        t        j                  |      dd
g       t        ddd      }|j                  ||       t        j
                  |j                         j                         sJ d}t#        j$                  t&        |      5  |j                  ||       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nraiser^  r   r   r   r  r^   gu <7~rm   r]   r  r   r  )rw   r   r   zwFloating-point under-/overflow occurred at epoch #.* Scaling input data with StandardScaler or MinMaxScaler might help.r   )rp   r[  r   r   r  isfiniter^  r   r  rt   astypeint32r   r   rR   r.   r   r   r   r   )	r  r  r  r1   X_scaledground_truthr2   model	msg_regxps	            r$   test_underflow_or_overlowr2    sr   		!ii##A&	
JJY
3J4	!RaR%E{{1~!!###
  >//2{{8$((*** zzzz2VVHl+c199"((C299Q<!Q0CoL 			(A{{5;;'++--- 	
 ]]:Y7IIaO 8C 
"	!B 87C 
"	!s$   FG
F>-G
>G	G

Gc                  <   t        ddddddddd 		      } t        j                  d
      5  | j                  t        j
                  t        j                         d d d        t        j                  | j                        j                         sJ y # 1 sw Y   9xY w)Nr   r   Tr  rX  ro   r   r   )	r   r   r   r   r  rw   r   r   r   r)  r*  )
rR   rp   r[  r.   r   r   r   r+  r   r^  )r0  s    r$   'test_numerical_stability_large_gradientr4    sz     
E 
	!		$))T[[) 
";;u{{#''))) 
"	!s   /BBr   )r   r   r  c           	      @   t        ddd| dd d      }t        j                  d      5  |j                  t        j
                  t        j                         d d d        t        |j                  t        j                  |j                               y # 1 sw Y   =xY w)	Ng     j@r   r  Fr  )rw   r   r   r   r   r   r   r)  r*  )
rR   rp   r[  r.   r   r   r   r   r   
zeros_like)r   r0  s     r$   test_large_regularizationr7    sp      E 
	!		$))T[[) 
"ekk2==+EF 
"	!s   /BBc                     t               j                  t        j                        } t        j                  dk(  }d}t        d d|      }|j                  | |       ||j                  k(  sJ d}t        dd|      }|j                  | |       ||j                  kD  sJ |j                  dkD  sJ t        dd|      }|j                  | |       |j                  |j                  kD  sJ |j                  dkD  sJ t        dd	d
      }d}t        j                  t        |      5  |j                  | |       d d d        |j                  dk(  sJ y # 1 sw Y   xY w)Nr]   r   r   )r   r   r   ri  r    r  r_   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   rR   r.   r   r   warnsr	   )r1   r2   r   model_0model_1model_2model_3warning_messages           r$   test_tol_parameterr?    sD   &&tyy1AqA H1xHGKK1w&&& HHEGKK1goo%%%??Q !hGGKK1??W__,,,??Q QDqAG	 
 
(	@Aq 
A??a 
A	@s   )EEc                     |D ]?  \  }}}}t        | j                  ||      |       t        | j                  ||      |       A y r*   )r   py_losspy_dloss)loss_functioncasesr   r2   expected_lossexpected_dlosss         r$   _test_loss_commonrG  C  sE     05+1m^M11!Q7GM221a8.I 05r&   c                      t        j                  d      } g d}t        | |       t        j                  d      } g d}t        | |       y )Nrn   ))g?rn   rm   rm          r   rm   rm   )rn   rn   rm   r   )r   r   rm   rn   )r`   rn   r`   r   )r  r         @rn   )rb   r   r`   rn   )rm   rn   r]   r   rm   )rn   rn   rm   rm   )rW  r   rm   rm   )rm   rn   rm   r   )rm   r   rm   rn   )r`   r   r`   rn   )r  r   r  rn   )rb   rn   r`   r   )r   rn   rn   r   )sgd_fastHingerG  r   rD  s     r$   test_loss_hingerP  K  sH     >>#D
E dE" >>#D
E dE"r&   c                  N    t        j                  d      } g d}t        | |       y )Nrn   )rL  rI  )rn   r         @rR  r   rn   rR        )r`   rn   g      ?r   r`   r   g      @rK  )rM  SquaredHingerG  rO  s     r$   test_gradient_squared_hingerW  l  s%      %DE dE"r&   c                  J   t        j                         } ddt        j                  dt        j                  d      z         dt        j                  d      dz   z  fddt        j                  dt        j                  d      z         dt        j                  d      dz   z  fddt        j                  dt        j                  d      z         dt        j                  d      dz   z  fddt        j                  dt        j                  d      z         dt        j                  d      dz   z  fddt        j                  d      dfddt        j                  d      dfddg}t        | |       t        | j                  d	d      t        j                  d
      dz  d       t        | j                  d	d      t        j                  d
      d       t        | j                  d
d      t        j                  d
      dz  d       t        | j                  d
d      d	d       y )Nrn   r   rm   r^   rb   r`   )fffff1@r   rY  rn   )gfffff1rn   rY  r   g2@g2r   )	rM  Logrp   r`  exprG  r   rB  rA  rO  s     r$   test_loss_logr\  {  s   <<>D 
c266#t,-trvvc{S7H/IJ	dBFF3,-sbffTlS6H/IJ	tRVVC"&&,./sc8I1JK	sBFF3,-trvvd|c7I/JK	c266!9d#	dBFF1Is# 
E dE"dC0"&&-$2FKT3/CeT2BFF5MC4GLUC0$;r&   c                  L    t        j                         } g d}t        | |       y )N)rm   rm   rm   rm   rL  )rn   rm   r`   rn   )r`   r   g      ?ra   )g      r  g     @$@g      )rM  SquaredLossrG  rO  s     r$   test_loss_squared_lossr`    s#    !DE dE"r&   c                  N    t        j                  d      } g d}t        | |       y )Nr  )r^  )r  rm   {Gzt?r  )rm   r  rb  rW  )g@rR  g{GzT?g)      @r  gzG?r  )r   rc  g
ףp=
?rW  )rM  HuberrG  rO  s     r$   test_loss_huberre    s#    >>#DE dE"r&   c                  L    t        j                         } g d}t        | |       y )N)rL  )r   r   rm   rm   )r  rn   rm   rm   )rm   rn   rn   rJ  rS  rU  )rJ  rn      rT  )g      rn      rT  )rM  ModifiedHuberrG  rO  s     r$   test_loss_modified_huberrj    s#    !!#D
E dE"r&   c                  N    t        j                  d      } g d}t        | |       y )Nr  )r^  r  rm   rm   rm   gffffff rJ  rm   rm   gffffff@rK  rm   rm   )皙@r  r  rn   )r  r   333333@rn   )r  ro  r  r   )rJ  rn   rp  r   )rM  EpsilonInsensitiverG  rO  s     r$   test_loss_epsilon_insensitiverr    s%    &&s+D
E dE"r&   c                  N    t        j                  d      } g d}t        | |       y )Nr  )r^  rl  rm  rn  )ro  r  ro   rY  )r  r   R @g333333@)r  ro  ro   gɿ)rJ  rn   rt  g333333)rM  SquaredEpsilonInsensitiverG  rO  s     r$   %test_loss_squared_epsilon_insensitiverv    s%    --c2D
E dE"r&   c            	      \   t        ddddddd      } | j                  t        j                  t        j                         | j
                  | j                  kD  sJ | j
                  | j                  dz   k  sJ | j                  t        j                  t        j                        d	kD  sJ y )
Nr   r   Tr   r   r^   )rw   r   r   r   r   r   rA  r  rg   )rR   r.   r   r   r   r   r   r  )r   s    r$   0test_multi_thread_multi_class_and_early_stoppingrx    s     C GGDIIt{{#;;-----;;--222299TYY,s222r&   c                      t        j                  ddd      g dd} t        dddd	
      }t        || ddd	      }|j	                  t
        j                  t
        j                         |j                  dkD  sJ y )Nrj  r%  )r    r   r  )rw   r   ro   r   Tr   )r   r   r   r   r    r^   )n_iterrA  r   rg   )	rp   logspacerR   r   r.   r   r   r   best_score_)
param_gridr   searchs      r$   -test_multi_core_gridsearch_and_early_stoppingr    sn    
 RA&'J
 D4ST
UCZ!RSTF
JJtyy$++&###r&   backend)lokymultiprocessing	threadingc                    t         j                  j                  d      }t        j                  dddd|      }|j	                  dd      }t        dd	d
      }|j                  ||       t        ddd
      }t        j                  |       5  |j                  ||       d d d        t        |j                  |j                         y # 1 sw Y   *xY w)Nr   r  ri  g{Gz?csr)densityrJ  r   r  r   r]   )r   rA  r   rj  )r  )rp   r   r   r+   choicerR   r.   joblibparallel_backendr   r   )r  r   r1   r2   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A 
2n22L4F4FG 
2	1s   CC	Estimatorc                 h   | t         j                  k(  rt        j                  |      \  }}nt        j                  |      \  }} | |d      }t        j                  t              5  |j                  ||      j                  }|j                  dk(  sJ 	 d d d         | |d      }t        j                  t              5  |j                  ||      j                  }|j                  dk(  sJ 	 d d d        t                | |dz   d      }t        j                  t              5  |j                  ||      j                  }|j                  dk(  sJ 	 d d d        t        j                  |z
        j                         dkD  sJ y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   MxY w)N)r   r]   )r   r   rn   )r   rD   r   make_regressionr#  r   r9  r	   r.   r   r   r   rp   absr  )r  global_random_seedr1   r2   estcoef_same_seed_acoef_same_seed_bcoef_other_seeds           r$   test_sgd_random_stater  %  sl    L---''5GH1++9KL1
 !3a
@C	(	)771a=..{{a 
* !3a
@C	(	)771a=..{{a 
* $&67 !3a!7!
DC	(	)''!Q---{{a 
* 66"_4599;cAAA) 
*	)
 
*	) 
*	)s$   *.F.F-.F(FF%(F1c                    t         j                  t         j                  }}|j                  d   }d}t	        j
                  ddd|      }t        t        j                        }| j                  t        d|       |j                  ||       |j                  d   d	d
 \  }}|j                  d   t        ||z        k(  sJ |j                  d   t        ||z        k(  sJ y)ziTest that data passed to validation callback correctly subsets.

    Non-regression test for #23255.
    r   rY  Tr   r   )r   r   r   r   )side_effect_ValidationScoreCallbackr]   r_   N)r   r   r   rr   r   rR   r   r   r  setattrr.   	call_argsr  )	monkeypatchr1   r   r  r   r   mockX_valy_vals	            r$   &test_validation_mask_correctly_subsetsr  K  s    
 99dkkqA
I

$
$/	C 0IIJD,.H$OGGAqM>>!$Qq)LE5;;q>S-@!@AAAA;;q>S-@!@AAAAr&   c                  .   t         j                  t         j                  }} t        j                  |      }d}t        j                  d|d      }d}t        j                  t        |      5  |j                  | ||       d d d        y # 1 sw Y   y xY w)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   rp   r6  r   rR   r   r   r   r.   )r1   r   r  r   r   error_messages         r$   (test_sgd_error_on_zero_validation_weightr  c  sz     99dkkqAMM!$M

$
$1DSTC
	#  
z	71M2 
8	7	7s   -BBc                 F     | d      j                  t        t               y)z!non-regression test for gh #25249r]   )verboseN)r.   r1   r   )r  s    r$   test_sgd_verboser  v  s     aQ"r&   SGDEstimator	data_typec                     t         j                  |      }t        j                  t        |      } |        }|j                  ||       |j                  j                  |k(  sJ y )Ndtype)r1   r,  rp   r   r   r.   r   r  )r  r  _X_Y	sgd_models        r$   test_sgd_dtype_matchr  |  sO     
)	B	!9	%BIMM"b??  I---r&   c                    t         j                  t        j                        }t        j                  t
        t        j                        }t         j                  t        j                        }t        j                  t
        t        j                        } | d      }|j                  ||        | d      }|j                  ||       t        |j                  |j                         y )Nr  r  )r   )
r1   r,  rp   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
JJtT2&F
JJtTFLL&,,/r&   c                    t        j                  ddgddgg      }t        j                  ddg      } |        j                  ||      }t        j                  t
        d      5  |j                   d d d        y # 1 sw Y   y xY w)Nr]   r^   r_   rj  r   z`loss_function_` was deprecatedr   )rp   r   r.   r   r9  FutureWarningloss_function_)r  r1   r2   r  s       r$   test_loss_attribute_deprecationr    sh     	1a&1a&!"A
!QA
+//!Q
C	m+L	M 
N	M	Ms   %A;;Bc                      | d      }t        j                  t        d      5  |j                  t        t
               d d d        y # 1 sw Y   y xY w)Nr   r   z	average=0r   )r   r9  r  r.   r1   r   )r  r  s     r$   *test_passive_aggressive_deprecated_averager    s3    
A
C	m;	71 
8	7	7s   A		A)Nrm   )rq  unittest.mockr   r  numpyrp   r   scipy.sparsesparser+   sklearnr   r   r   sklearn.baser   r   sklearn.exceptionsr	   sklearn.kernel_approximationr
   sklearn.linear_modelr   rM  r   sklearn.model_selectionr   r   r   sklearn.pipeliner   sklearn.preprocessingr   r   r   r   sklearn.svmr   sklearn.utils._testingr   r   r   r   r   r%   rR   r(   rD   rB   rM   rK   rV   rX   rZ   r   r1   r   r   r   r&  r2  r3  r4  r   r   rl  rn  	load_irisr   r  r  true_result5r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r  rq   r  r  r  r  r"  r(  r-  r7  r=  r?  rB  rE  rR  rf  rv  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   r'  r2  r4  r7  r?  rG  rP  rW  r\  r`  re  rj  rr  rv  rx  r  r  r  r  r  r  r  r  r  r  r  r  r!   r&   r$   <module>r     sq         3 3 - 1 1 6 5 
 + S S # (<55 ($Q,33 QSL77 S0
/
1
*
)
+ BHHr2hR2r(QFQFQFCDBHHr2hAA'( RXX	Q		s	
A	s	c
	R	
D		
B
 Wq[E7Q;'Q.RXXc{QFQG,-& RXX	 RXX&' RXX      	 RXX&'x RXXBx"bB8aVaVaVDE.D60 m0,@RS PQ& R& m0,@RS 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 =2E"FG8 H8" m0.BVW44 	)8288D>:;	/$@A	-$89	xrxx~>?	.. 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 :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" }n&EF G }lN&ST Ur&   