
    Kiq                        S SK r S SKrS SK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  S SK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Jr  \R>                  " SS/SS/SS/SS/SS/SS//SS9r \R>                  " / SQ5      r!\R>                  " / SQ5      r"\R>                  " S/S/S/S/S/S//SS9r#\R>                  " S S /SS/SS/SS/SS/SS/SS/SS/SS//	5      r$\R>                  " / SQ5      r%\R>                  " / SQ5      r&\R>                  " S/S/S/S/S /S/S/S/S//	5      r'\R>                  " SS /SS /SS /SS /S S /SS /SS /SS /SS //	5      r(\R>                  " / SQ5      r)/ SQr*S r+\RX                  R[                  SSS/5      \RX                  R[                  S/ SQ5      S 5       5       r.S r/S r0S  r1S! r2S" r3S# r4S$ r5\RX                  R[                  S%\6" S&5      5      S' 5       r7S( r8\RX                  R[                  S)SS*/5      \RX                  R[                  SS*S/5      S+ 5       5       r9\RX                  R[                  S,\Rt                  \Rt                  4\Rv                  \Rv                  4\Rx                  \Rv                  4\Rz                  \Rv                  4/5      S- 5       r>S. r?\RX                  R[                  SS/S0/5      S1 5       r@S2 rAS3 rBS4 rCS5 rD\RX                  R[                  S6/ S7Q5      S8 5       rES9 rFS: rG\RX                  R[                  SS/S0/5      S; 5       rHS< rI\RX                  R[                  S/ SQ5      S= 5       rJ\RX                  R[                  SS/S0/5      S> 5       rKS? rL\RX                  R[                  S)S@/5      \RX                  R[                  SASB/5      \RX                  R[                  SCS/S0/5      SD 5       5       5       rMg)E    N)linalg)KMeans)
LedoitWolfShrunkCovarianceledoit_wolf)
make_blobs)LinearDiscriminantAnalysisQuadraticDiscriminantAnalysis_cov)ShuffleSplitcross_val_score)StandardScaler)check_random_state)_convert_containerassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal      fdtype)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   )	)svdN)lsqrN)eigenN)r   auto)r   r   )r   Q?)r    r!   )r    r   )r    r"   c            	         [          GH[  n U u  p[        XS9nUR                  [        [        5      R                  [        5      n[        U[        SU-  5        UR                  [        [        5      R                  [        5      n[        U[        SU-  5        UR                  [        5      n[        US S 2S4   S:  S-   [        SU-  5        UR                  [        5      n[        [        R                  " U5      USSSU-  S9  UR                  [        [        5      R                  [        5      n[        R                  " U[        :g  5      (       a  GMT   SU-  5       e   [        SSS9n[        R                   " ["        5         UR                  [        [        5        S S S 5        [        S	S
[%        5       S9n[        R                   " [&        SS9   UR                  [        [        5        S S S 5        [        S[)        5       S9n[        R                   " [&        SS9   UR                  [        [        5        S S S 5        [        S	[+        SSS9S9n[        R                   " [&        5         UR                  [        [        5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nsolver	shrinkagez	solver %sr         ?ư>)rtolatolerr_msgr   r!   r   皙?r%   r&   covariance_estimator[covariance_estimator and shrinkage parameters are not None. Only one of the two can be set.matchr%   r.   z.covariance estimator is not supported with svdr   
n_clustersn_init)solver_shrinkager	   fitXypredictr   X1predict_probapredict_log_probar   npexpy3anypytestraisesNotImplementedErrorr   
ValueErrorr   r   )		test_caser%   r&   clfy_predy_pred1y_proba_pred1y_log_proba_pred1y_pred3s	            j/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/sklearn/tests/test_discriminant_analysis.pytest_lda_predictrN   D   s.    &%	%(LA&&q)61kF&:; ''"a.((,7A{V';< ))"-M!Q$/#5:A{V?ST11"5FF$%&(	
 ''!R.((+vvgm$$:kF&::$3 &6 %EV
DC	*	+1 
, %;K;MC 
.
 	1
 %E

UC	J
 	1
 %Fa,OC 
z	"1 
#	"7 
,	+
 

 
 
#	"s0   JJ,(J=7K
J),
J:=
K
K	n_classesr%   r   r   r    c                 |   SS jn[         R                  " SS/SS/SS//5      S U n[         R                  " SS/SS///[        U5      -  5      nU" S	X4S
S9u  pV[        U SS S9R	                  XV5      n[        UR                  USS9  [        UR                  US   SS9  [        R                  " US   5      n/ n	/ n
[        [        U5      S-
  5       H  nU	R                  [         R                  " XU   US   -
  S S 2[         R                  4   5      5        U
R                  [         R                  " SX;   US   -   [         R                  S S 24   -  U	S   5      5        M     [         R                  " SS//5      nS n[         R                  " [        US-
  5       Vs/ s HH  n[        U" XX5      S[        [        US-
  5       Vs/ s H  nU" XX5      PM     sn5      -   -  5      PMJ     sn5      nS[         R                  " U5      -
  n[        SS[        [        US-
  5       Vs/ s H  nU" XX5      PM     sn5      -   -  5      nU[         R"                  " U5      :X  d   e[        UR%                  U5      [         R&                  " X/5      [         R                     SS9  g s  snf s  snf s  snf )Nc                 `   [        U5      n[        R                  " [        X5       VVs/ s H!  u  pVUR	                  XVU [        U5      -  S9PM#     snn5      n[        R                  " [        [        U5      5       Vs/ s H  o/U [        U5      -  -  PM     sn5      n	Xy4$ s  snnf s  snf )zFGenerate a multivariate normal data given some centers and
covariancessize)r   r>   vstackzipmultivariate_normallenhstackrange)
	n_samplescenterscovariancesrandom_staterngmeancovr8   clazzr9   s
             rM   generate_dataset0test_lda_predict_proba.<locals>.generate_dataset   s     !.II "%W!:!:ID ''	S\8Q'R!:
 II@Ec'l@ST@SuW	S\12@ST
 t Us   (B%
 B+r   (   i   
   d   i_ *   )r[   r\   r]   r^   T)r%   store_covariancer&   r,   )r*   r   r         i   c                     [         R                  " X#   [         R                  " XU   5      -   5      R                  5       $ N)r>   r?   dotitem)samplecoef	interceptrb   s       rM   discriminant_func1test_lda_predict_proba.<locals>.discriminant_func   s/    vvi&U)DDEJJLL    {Gz?ro   )r>   arrayrX   r	   r7   r   means_covariance_r   invrZ   appendrp   newaxisfloatsumrB   approxr<   rY   )r%   rO   rc   blob_centers	blob_stdsr8   r9   lda	precisionalpha_k	alpha_k_0rb   rr   ru   probprob_ref
prob_ref_2s                    rM   test_lda_predict_probar      s    88aVc2Yb	:;JYGLB8b#Y/03|3DDEISUDA %	c!i 
 CJJ48COOYq\:
 

9Q<(IGIs<(1,-FF9E2\"5EEq"**}UV	
 	FF+l2.>>

ANN	
	 . XXRyk"FM 88 y1}-	
 . !&9D */y1})=)= .fyP)=	 .	
D$ 266$<H 	 "'y1}!5!5 &fyH!5		
J v}}Z0000 &!299d-=#>rzz#JQU?	
4s   %)J4J/!J40J9/J4c                  j   [         R                  " SS/5      n [        U S9nSn[        R                  " [
        US9   UR                  [        [        5        S S S 5        [        SS/S9nUR                  [        [        5        [         R                  " SS/5      n [         R                  " SS/5      n[        U S9n[        R                  " [        5         UR                  [        [        5        S S S 5        [        UR                  US	5        g ! , (       d  f       N= f! , (       d  f       N7= f)
Nr'   rl   priorszpriors must be non-negativer0   333333??g?r   )r>   ry   r	   rB   rC   rE   r7   r8   r9   warnsUserWarningr   priors_)r   rG   msg
prior_norms       rM   test_lda_priorsr      s    XXsDk"F
$F
3C
'C	z	-1 
.
 %S#J
7CGGAqM XXsCj!F4,'J
$F
3C	k	"1 
# ckk:q9! 
.	- 
#	"s   DD$
D!$
D2c                     Sn SnSn[        X USS9u  p4[        SS9n[        SS9n[        SS9nUR                  X45        UR                  X45        UR                  X45        [        UR                  UR                  S	5        [        UR                  UR                  S	5        [        UR                  UR                  S	5        g )
Nr        r[   
n_featuresr\   r^   r   r%   r   r    r   )r   r	   r7   r   coef_)r   rO   r[   r8   r9   clf_lda_svdclf_lda_lsqrclf_lda_eigens           rM   test_lda_coefsr      s    JIIITVDA -E:K-V<L.g>MOOAQak//1C1CQGk//1D1DaHm11<3E3EqIrw   c                     [        SSS9n U R                  [        [        5      R	                  [        5      nUR
                  S   S:X  d   e[        SSS9n U R                  [        [        5      R	                  [        5      nUR
                  S   S:X  d   e[        SSS9n U R                  [        [        5        Sn[        R                  " [        US9   U R	                  [        5        S S S 5        g ! , (       d  f       g = f)Nr   r   )r%   n_componentsr    r   z$transform not implemented for 'lsqr'r0   )	r	   r7   r8   r9   	transformshaperB   rC   rD   )rG   X_transformedr   s      rM   test_lda_transformr     s    
$E
BCGGAqM++A.Mq!Q&&&
$G!
DCGGAqM++A.Mq!Q&&&
$F
CCGGAqM
0C	*#	6a 
7	6	6s   C77
Dc                  F   [         R                  R                  S5      n U R                  SSSS9nU R	                  SSSS9n[        SS	9nUR                  X5        [        UR                  R                  5       S
S5        UR                  R                  S:X  d   S5       e[        SS	9nUR                  X5        [        UR                  R                  5       S
S5        UR                  R                  S:X  d   S5       e[        UR                  UR                  5        g )Nr   ri   )rf      )locscalerT   r   )rf   rS   r    r         ?)r   z/Unexpected length for explained_variance_ratio_r   )r>   randomRandomStatenormalrandintr	   r7   r   explained_variance_ratio_r   r   r   )stater8   r9   r   r   s        rM   !test_lda_explained_variance_ratior   #  s	    II!!!$E#H5Aa'A.g>Ma??CCEsAN2288D@ 9@ -E:KOOA==AACS!L0066$> 9> --}/V/Vrw   c            	      j   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ/ SQ/ SQ/ SQ/ S	Q/ S
Q/5      nU S S 2[         R                  S S 24   U[         R                  S S 2S S 24   -   R                  S5      n[         R                  " [         R
                  " U R                  S   5      UR                  S   5      n[        SS9R                  X#5      nUR                  U 5      nUS   US   -
  nUS   US   -
  nU[         R                  " [         R                  " US-  5      5      -  nU[         R                  " [         R                  " US-  5      5      -  n[        [         R                  " UR                  U5      R                  5      [         R                  " S5      5        [        [         R                   " [         R"                  " US S SS/5      5      S5        [        [         R                   " [         R"                  " US S SS/5      5      S5        g )N)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>   ry   r~   reshaperepeataranger   r	   r7   r   sqrtr   r   ra   Teyeabsrp   )meansscatterr8   r9   rG   means_transformedd1d2s           rM   test_lda_orthogonalityr   @  s    HHj)ZCDE hh	
	G 
q"**a	 72::q!+;#<	<EEgNA
		"))EKKN+W]]1-=>A %E
2
6
6q
<Ce,	1	 1! 4	4B	1	 1! 4	4B"''"&&Q-
  B"''"&&Q-
  B s}}W5778"&&)D rvvb!fq!f56< rvvb!fq!f56<rw   c                     Sn [         R                  R                  S5      nUR                  SSU S45      / SQ-   nUR                  SSU S45      / SQ-   n[         R                  " X#45      / SQ-  nS/U -  S/U -  -   nS	 H:  n[        US
9nUR                  XE5      R                  XE5      S:X  a  M2   SU-  5       e   g )Nri   i  r   r   r   )re   r   r   )rh   r   r   )r   ri   i'  rP   r   r   zusing covariance: %s)r>   r   r   uniformrU   r	   r7   score)nr_   x1x2xr9   r%   rG   s           rM   test_lda_scalingr   i  s    A
))


%C 
RQF	#k	1B	RQF	#j	0B
		2(o-A	qA37A*(7wwq}""1(C/P1G&1PP/ +rw   c            	      z   S H  n [        U S9R                  [        [        5      n[	        US5      (       d   e[        U SS9R                  [        [        5      n[	        US5      (       d   e[        UR                  [        R                  " SS/SS//5      5        M     [        S	S9R                  [        [        5      n[	        US5      (       a   e[        W SS9R                  [        [        5      n[	        US5      (       d   e[        UR                  [        R                  " SS/SS//5      5        g )
N)r   r    r   r{   T)r%   rk   gil?gam?g	^?r   )	r	   r7   X6y6hasattrr   r{   r>   ry   )r%   rG   s     rM   test_lda_store_covariancer   z  s    $(7;;BCsM**** )NRR
 sM****!OORXX(';h=Q&RS	
 $ %E
2
6
6r2
>CsM**** %FT
J
N
NrSU
VC3&&&&Hh#7(H9M"NOrw   seedrh   c                    [         R                  R                  U 5      nUR                  SS5      nUR	                  SSS9n[        SSSS9n[        S[        SS	9SS
9nUR                  X#5        UR                  X#5        [        UR                  UR                  5        [        UR                  UR                  5        g )Nri   rh   r   rS   Tr'   r   rk   r&   r%   )r&   rk   r.   r%   )r>   r   r   randr   r	   r   r7   r   rz   r{   )r   r_   r8   r9   c1c2s         rM   test_lda_shrinkager     s     ))


%CbAAS"A	#TSQW	XB	#-<
B
 FF1LFF1LBIIryy)BNNBNN3rw   c                      " S S5      n [         R                  R                  S5      nUR                  SS5      nUR	                  SSS9n[        S	S
SS9n[        S	U " 5       SS9nUR                  X#5        UR                  X#5        [        UR                  UR                  5        [        UR                  UR                  5        g )Nc                       \ rS rSrS rSrg)3test_lda_ledoitwolf.<locals>.StandardizedLedoitWolfi  c                     [        5       nUR                  U5      n[        U5      S   nUR                  S S 2[        R
                  4   U-  UR                  [        R
                  S S 24   -  nX@l        g Nr   r   fit_transformr   scale_r>   r~   r{   selfr8   scX_scss        rM   r7   7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fit  `    !B##A&DD!!$A		!RZZ-(1,ryyQ/GGA rw   r{   N__name__
__module____qualname____firstlineno__r7   __static_attributes__ rw   rM   StandardizedLedoitWolfr         	!rw   r   r   ri   rh   r   ri   rS   Tr!   r   r   r   )
r>   r   r   r   r   r	   r7   r   rz   r{   )r   r_   r8   r9   r   r   s         rM   test_lda_ledoitwolfr     s    ! ! ))


"CbAAF#A	#
B 
$35
B
 FF1LFF1LBIIryy)BNNBNN3rw   r   r   c                    [        S5      nSnUR                  X15      n[        R                  " [	        U 5      X0-  S-   5      S U n[        XS-
  5      nUS-
  S U4 H  n[        US9nUR                  XE5        M     US-   [        XS-
  5      S-   4 HA  n[        US9nSn	[        R                  " [        U	S9   UR                  XE5        S S S 5        MC     g ! , (       d  f       MU  = f)Nr   rh   r   )r   z#n_components cannot be larger than r0   )r   randnr>   tilerZ   minr	   r7   maxrB   rC   rE   )
rO   r   r_   r[   r8   r9   max_componentsr   r   r   s
             rM   test_lda_dimension_warningr     s     Q
CI		)(A 	i )"81"<=jyIA]3N'!+T>B(lC C
 (!+S]-Ka-OP
 )lC3]]:S1GGAM 21 Q 21s   ;C
C)	zdata_type, expected_typec                     [          Hb  u  p#[        X#S9nUR                  [        R	                  U 5      [
        R	                  U 5      5        UR                  R                  U:X  a  Mb   e   g )Nr$   )r6   r	   r7   r8   astyper9   r   r   )	data_typeexpected_typer%   r&   rG   s        rM   test_lda_dtype_matchr     sQ     .(L#QXXi%89yy-/// .rw   c                     [          H  u  p[        XS9nUR                  [        R	                  [
        R                  5      [        R	                  [
        R                  5      5        [        XS9nUR                  [        R	                  [
        R                  5      [        R	                  [
        R                  5      5        Sn[        UR                  UR                  US9  M     g )Nr$   r(   )r)   )r6   r	   r7   r8   r   r>   float32r9   float64r   r   )r%   r&   clf_32clf_64r)   s        rM   ,test_lda_numeric_consistency_float32_float64r    s    -+6O

188BJJ'"**)=>+6O

188BJJ'"**)=> fll> .rw   r   r    c                    [        U S9nUR                  [        [        5      R	                  [        5      n[        U[        5        UR                  [        [        5      R	                  [        5      n[        U[        5        UR                  [        5      n[        US S 2S4   S:  S-   [        5        UR                  [        5      n[        [        R                  " U5      US5        UR                  [        [        5      R	                  [        5      n[        R                  " U[        :g  5      (       d   e[        R                  " [         5         UR                  [        ["        5        S S S 5        g ! , (       d  f       g = f)Nr   r   r'      )r
   r7   r   r   r:   r   X7r<   r=   r   r>   r?   y7rA   rB   rC   rE   y4)r%   rG   rH   rI   rJ   rK   rL   s          rM   test_qdar     s   
 (v
6CWWR_$$R(Fvr" ggb"o%%b)Gw# %%b)Mad+c1Q6;--b1bff%67Jggb"o%%b)G66'R-     
z	"B 
#	"	"s   E;;
F	c                     [        SSS9n [        R                  " [        5         U R	                  [
        [        5        S S S 5        [        SS[        5       S9n [        R                  " [        SS9   U R	                  [
        [        5        S S S 5        [        S[        5       S	9n [        R                  " [        S
S9   U R	                  [
        [        5        S S S 5        [        S[        SSS9S	9n [        R                  " [        5         U R	                  [
        [        5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r!   r$   r    r,   r-   r/   r0   r2   z7covariance_estimator is not supported with solver='svd'r   r3   )r
   rB   rC   rD   r7   r8   r9   r   rE   r   r   rG   s    rM   test_qda_covariance_estimatorr    s	    (u
GC	*	+1 
, (#<L<NC 
.
 	1
 (u:<
XC	S
 	1
 (Vq-PC 
z	"1 
#	"5 
,	+
 

 
 
#	"s/   D54EEE(5
E
E
E%(
E6c                     " S S5      n[         R                  R                  U 5      nUR                  SS5      nUR	                  SSS9n[        SS	S
S9n[        SU" 5       S
S9nUR                  X45        UR                  X45        [        UR                  UR                  5        [        UR                  UR                  5        g )Nc                       \ rS rSrS rSrg)3test_qda_ledoitwolf.<locals>.StandardizedLedoitWolfiB  c                     [        5       nUR                  U5      n[        U5      S   nUR                  S S 2[        R
                  4   U-  UR                  [        R
                  S S 24   -  nX@l        g r   r   r   s        rM   r7   7test_qda_ledoitwolf.<locals>.StandardizedLedoitWolf.fitC  r   rw   r   Nr   r   rw   rM   r   r  B  r   rw   r   ri   rh   r   r   rS   Tr!   r    r   r   )
r>   r   r   r   r   r
   r7   r   rz   r{   )global_random_seedr   r_   r8   r9   r   r   s          rM   test_qda_ledoitwolfr  >  s    ! ! ))

 2
3CbAAF#A	&
B 
'35
B
 FF1LFF1LBIIryy)BNNBNN3rw   c                    SnSnSn[        UUUSS/U S9u  pE[        SS9n[        SS9nUR                  XE5        UR                  XE5        [        U5       H}  n[	        [
        R                  " UR                  U   5      [
        R                  " UR                  U   5      S	S
U 3S9  [	        UR                  U   UR                  U   S	SU 3S9  M     g )Nr   i  r         @)r[   r   r\   cluster_stdr^   r   r   r    gMbP?z)SVD and Eigen rotations differ for class )r)   r+   z(SVD and Eigen scalings differ for class )	r   r
   r7   rZ   r   r>   r   
rotations_	scalings_)	r  r   rO   r[   r8   r9   clf_svd	clf_eigen	class_idxs	            rM   test_qda_coefsr  \  s    JII#J'DA ,59G-W=IKKMM!9%	FF7%%i01FF9''	23?	{K		
 	i(	*>ykJ		
 &rw   c                     [        5       n U R                  [        [        5      R	                  [        5      n[
        R                  " US:H  5      nSn[        [
        R                  " USU-
  /5      S9n U R                  [        [        5      R	                  [        5      n[
        R                  " US:H  5      nXB:  d   eg )Nr   g|=r   r   )r
   r7   r   r   r:   r>   r   ry   )rG   rH   n_posnegn_pos2s        rM   test_qda_priorsr#  ~  s    
'
)CWWR_$$R(FFF6Q;E
C
'rxxa#g/G
HCWWR_$$R(FVVFaK F>>rw   priors_type)listtuplery   c                     SS/n[        [        SS/U 5      S9R                  [        [        5      n[        UR                  [        R                  5      (       d   e[        UR                  U5        g)z$Check that priors accept array-like.r'   r   N)
r
   r   r7   r   r   
isinstancer   r>   ndarrayr   )r$  r   rG   s      rM   test_qda_prior_typer*    s^     3ZF
'!3*k:	c"bk  ckk2::....s{{F+rw   c                     [         R                  " SS/5      n [        U S9R                  [        [
        5      n[        UR                  UR                  5        SU S'   UR                  S   UR                  S   :w  d   eg)zCCheck that altering `priors` without `fit` doesn't change `priors_`r'   r   皙?r   N)	r>   ry   r
   r7   r8   r9   r   r   r   )r   qdas     rM   test_qda_prior_copyr.    sh    XXsCj!F
'v
6
:
:1a
@C s{{CJJ/ F1I;;q>SZZ]***rw   c                     [        5       R                  [        [        5      n [	        U S5      (       a   e[        SS9R                  [        [        5      n [	        U S5      (       d   e[        U R                  S   [        R                  " SS/SS//5      5        [        U R                  S   [        R                  " SS	/S	S
//5      5        g )Nr{   T)rk   r   gffffff?r   r   gQUU?gQUUտgvWUU?)	r
   r7   r   r   r   r   r{   r>   ry   r  s    rM   test_qda_store_covariancer0    s    
'
)
-
-b"
5CsM**** (
>
B
B2r
JC3&&&&cooa0"((S$K$PS;U2VW
:{+k:-FGHrw   c                    [         R                  R                  U 5      nSn[        US9n[        R
                  " [        R                  US9   UR                  [        [        5        S S S 5        [        R
                  " [        5         UR                  [        5      nS S S 5        US:X  a  [        USS9nOUS:X  a
  [        USS9n[        R                  " 5          [        R                  " S	5        S S S 5        UR                  [        [        5        UR                  [        5      n[!        U[        5        UR#                  S
S9n[         R$                  " / SQ5      n[        US9nUS:X  a  US-   nOUS:X  a  Un[        R
                  " [        R                  WS9   UR                  Xg5        S S S 5        US:X  aH  [        USS9n[        R
                  " [        R                  US9   UR                  Xg5        S S S 5        g US:X  a  [        USS9nUR                  Xg5        g g ! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNd= f! , (       d  f       N= f! , (       d  f       g = f)Nz3The covariance matrix of class .+ is not full rank.r   r0   r   rx   )r%   	reg_paramr    r$   error)	      rS   )	r   r   r   r   r   r   r   r   r   z When using `solver='svd'`g333333?)r>   r   default_rngr
   rB   rC   r   LinAlgErrorr7   X2r   AttributeErrorr:   warningscatch_warningssimplefilterr   r   ry   )	r  r%   r_   r   rG   rH   r8   r9   msg2s	            rM   test_qda_regularizationr>    s    ))

 2
3C AC
'v
6C	v))	5B 
6 
~	&R 
' +6TJ	7	+6TJ		 	 	"g& 
#GGBO[[_Fvr" 	


A
,-A
'v
6C11	7		v))	6 
7
 +6SI]]6--T:GGAM ;: 
7	+6SI 
O 
6	5 
'	& 
#	"" 
7	6 ;:s<   H/II$I%1I6/
H>
I
I"%
I36
Jc                  n   [        SSSSS9u  p[        R                  " U [        R                  " U R                  S   S-  5      R                  U R                  S   U R                  S   5      5      n [        U S5      n[        X"R                  5        [        U S5      n[        X3R                  5        g )	Nri   r   r   rj   r   r   	empiricalr!   )	r   r>   rp   r   r   r   r   r   r   )r   r9   c_ec_ss       rM   test_covariancerC    s    12NDA 	q"))AGGAJ!O,44QWWQZLMA
q+
CUU#
q&/CUU#rw   c                    [         R                  " SS/SS//5      n[         R                  " SS/5      n[        U S9n[        R                  " [
        SS9   UR                  X5        SSS5        g! , (       d  f       g= f)	z[
Tests that if the number of samples equals the number
of classes, a ValueError is raised.
r'   r   abr   z"The number of samples must be morer0   N)r>   ry   r	   rB   rC   rE   r7   r%   r8   r9   rG   s       rM   =test_raises_value_error_on_same_number_of_classes_and_samplesrH    sb     	3*sCj)*A
#sA
$F
3C	z)M	N 
O	N	Ns   A22
B c                    [         R                  " SS/SS/SS/SS//5      n[         R                  " / SQ5      n[        U S9n[        R                  " [
        SS9   UR                  X5        SSS5        g! , (       d  f       g= f)	z?
Tests that if a class has one sample, a ValueError is raised.
r'   r   g?)rE  rE  rE  rF  r   zy has only 1 sample in classr0   N)r>   ry   r
   rB   rC   rE   r7   rG  s       rM   /test_raises_value_error_on_one_sample_per_classrJ    sk    
 	3*sCj3*sCjABA
%&A
'v
6C	z)G	H 
I	H	Hs   A88
Bc                  D   [        5       R                  [        [        5      n U R	                  5       nSR                  5       n[        R                  " [        U R                  R                  S   5       Vs/ s H	  nU U 3PM     sn[        S9n[        X5        gs  snf )z6Check get_feature_names_out uses class name as prefix.r	   r   r   N)r	   r7   r8   r9   get_feature_names_outlowerr>   ry   rZ   r   r   objectr   )est	names_outclass_name_loweriexpected_names_outs        rM   test_get_feature_names_outrT    s     %
&
*
*1a
0C))+I399; 388>>qAB	
B   $B	
  y5	
s   7B   
train_sizeri   solver_no_shrinkagec                    SnUn[         R                  R                  U 5      nUR                  SSUS9nUR                  SSUS9n[         R                  " [         R                  R                  US-  U5      [         R                  " U5      -  [         R                  R                  US-  U5      [         R                  " U5      -  /SS	9n[         R                  " S/US-  -  S
/US-  -  -   5      n	[        SUSS9n
[        SSS9n[        US S9n[        XXSS9n[        XXSS9nUR                  5       S:  d   eUR                  5       S:  d   eg )Nr   g       @r  rS   r,  r   r   r   )axisr   r   )n_splitsrV  r^   r    r!   r$   d2_brier_score)cvscoringg?r   )r>   r   r6  r   concatenater   r   ry   r   r
   r   r`   )r  r   rV  rW  r[   r_   vars1vars2r8   r9   r\  qda_shrinkageqda_no_shrinkagescores_no_shrinkagescores_shrinkages                  rM   test_qda_shrinkage_performancere  !  s\    IJ
))

 2
3C KKSzK2EKKSzK2E
IIOOINJ7"''%.HIIOOINJ7"''%.H	
 	A 	!	Q'1#a*@@AA 
qZa	HB1FSM4"d *Q/? '!,<   "S(((##%+++rw   )Nr:  numpyr>   rB   scipyr   sklearn.clusterr   sklearn.covariancer   r   r   sklearn.datasetsr   sklearn.discriminant_analysisr	   r
   r   sklearn.model_selectionr   r   sklearn.preprocessingr   sklearn.utilsr   sklearn.utils._testingr   r   r   r   r   ry   r8   r9   r@   r;   r   r   r	  r  r8  r
  r6   rN   markparametrizer   r   r   r   r   r   r   r   rZ   r   r   r   r  r  int32int64r   r  r  r  r  r  r#  r*  r.  r0  r>  rC  rH  rJ  rT  re  r   rw   rM   <module>rt     sr       " H H ' 
 B 0 ,  HHr2hR2r(QFQFQFC3OHH XX ! XXTB4"sQC!%
 XXVb"XBx"bB8aVaVaVaQRVT XX)*XX)* XXtbTB4"sQC!qcA3?@ XX!Wr1gAwQ!Q!Q!Q!Q!QP
 XX)*
 <~ q!f-#;<[ = .[|:2J,":&=RQ"< r+4 ,4$4< 1v.q!f- . /2 	RZZ 	RZZ 	2::	2::	00	? E7#34 56D4<
D
 (BC, D,
+" E7#342 52j
$ #;<	 =	 E7#34 56" t,u-.0@A(, B . -(,rw   