
    -iX                        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  S SKJr  S S	KJrJrJrJrJr  \R8                  " S
S/SS/SS
/SS/SS/SS//SS9r\R8                  " / SQ5      r\R8                  " / SQ5      r\R8                  " S
/S/S/S/S/S//SS9r \R8                  " S S /S
S
/S
S/SS/SS
/SS/SS/SS/SS//	5      r!\R8                  " / SQ5      r"\R8                  " / SQ5      r#\R8                  " S/S
/S/S/S /S/S/S/S//	5      r$\R8                  " SS /S
S /SS /SS /S S /SS /SS /SS /SS //	5      r%\R8                  " / SQ5      r&\RN                  \RP                  " S5      \RR                  " S5      4   r*\R8                  " / SQ5      r+/ SQr,S r-\R\                  R_                  SSS/5      \R\                  R_                  S/ SQ5      S 5       5       r0S  r1S! r2S" r3S# r4S$ r5S% r6S& r7\R\                  R_                  S'\8" S(5      5      S) 5       r9S* r:\R\                  R_                  S+SS,/5      \R\                  R_                  SS,S/5      S- 5       5       r;\R\                  R_                  S.\Rx                  \Rx                  4\Rz                  \Rz                  4\R|                  \Rz                  4\R~                  \Rz                  4/5      S/ 5       r@S0 rAS1 rBS2 rC\R\                  R_                  S3/ S4Q5      S5 5       rDS6 rES7 rFS8 rGS9 rH\R\                  R_                  S/ SQ5      S: 5       rIS; rJg)<    N)linalg)KMeans)
LedoitWolfShrunkCovarianceledoit_wolf)
make_blobs)LinearDiscriminantAnalysisQuadraticDiscriminantAnalysis_cov)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      )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_estimatorz[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	            [/var/www/html/venv/lib/python3.13/site-packages/sklearn/tests/test_discriminant_analysis.pytest_lda_predictrI   G   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   r9   vstackzipmultivariate_normallenhstackrange)
	n_samplescenterscovariancesrandom_staterngmeancovr3   clazzr4   s
             rH   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_ *   )rV   rW   rX   rY   T)r$   store_covariancer%   r+   )r)   r   r         i   c                     [         R                  " X#   [         R                  " XU   5      -   5      R                  5       $ N)r9   r:   dotitem)samplecoef	interceptr]   s       rH   discriminant_func1test_lda_predict_proba.<locals>.discriminant_func   s/    vvi&U)DDEJJLL    {Gz?rj   )r9   arrayrS   r	   r2   r   means_covariance_r   invrU   appendrk   newaxisfloatsumr=   approxr7   rT   )r$   rJ   r^   blob_centers	blob_stdsr3   r4   lda	precisionalpha_k	alpha_k_0r]   rm   rp   probprob_ref
prob_ref_2s                    rH   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&   rg   priorszpriors must be non-negativer-   333333??g?r   )r9   rt   r	   r=   r>   r@   r2   r3   r4   warnsUserWarningr   priors_)r   rB   msg
prior_norms       rH   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   i     rV   
n_featuresrW   rY   r   r$   r   r   r   )r   r	   r2   r   coef_)r   rJ   rV   r3   r4   clf_lda_svdclf_lda_lsqrclf_lda_eigens           rH   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Irr   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'r-   )	r	   r2   r3   r4   	transformshaper=   r>   r?   )rB   X_transformedr   s      rH   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   rd   )ra      )locscalerO   r   )ra   rN   r   r         ?)r   z/Unexpected length for explained_variance_ratio_r   )r9   randomRandomStatenormalrandintr	   r2   r   explained_variance_ratio_r{   r   r   )stater3   r4   r   r   s        rH   !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rr   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   )r9   rt   ry   reshaperepeataranger   r	   r2   r   sqrtr{   r   r\   Teyeabsrk   )meansscatterr3   r4   rB   means_transformedd1d2s           rH   test_lda_orthogonalityr   C  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<rr   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 )Nrd   i  r   r   r   )r`   r   r   )rc   r   r   )r   rd   i'  rK   r   r   zusing covariance: %s)r9   r   r   uniformrP   r	   r2   score)nrZ   x1x2xr4   r$   rB   s           rH   test_lda_scalingr   l  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/ +rr   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   rv   T)r$   rf   gil?gam?g	^?r   )	r	   r2   X6y6hasattrr   rv   r9   rt   )r$   rB   s     rH   test_lda_store_covariancer   }  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rr   seedrc   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 )Nrd   rc   r   rN   Tr&   r   rf   r%   r$   )r%   rf   r,   r$   )r9   r   r   randr   r	   r   r2   r   ru   rv   )r   rZ   r3   r4   c1c2s         rH   test_lda_shrinkager     s     ))


%CbAAS"A	#TSQW	XB	#-<
B
 FF1LFF1LBIIryy)BNNBNN3rr   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_r9   ry   rv   )selfr3   scX_scss        rH   r2   7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fit  s`    !B##A&DD!!$A		!RZZ-(1,ryyQ/GGA rr   )rv   N)__name__
__module____qualname____firstlineno__r2   __static_attributes__ rr   rH   StandardizedLedoitWolfr     s    	!rr   r   r   rd   rc   r   )rd   rN   Tr    r   r   r   )
r9   r   r   r   r   r	   r2   r   ru   rv   )r   rZ   r3   r4   r   r   s         rH   test_lda_ledoitwolfr     s    ! ! ))


"CbAAF#A	#
B 
$35
B
 FF1LFF1LBIIryy)BNNBNN3rr   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   rc   r   )r   z#n_components cannot be larger than r-   )r   randnr9   tilerU   minr	   r2   maxr=   r>   r@   )
rJ   r   rZ   rV   r3   r4   max_componentsr   r   r   s
             rH   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#   )r1   r	   r2   r3   astyper4   r   r   )	data_typeexpected_typer$   r%   rB   s        rH   test_lda_dtype_matchr     sQ     .(L#QXXi%89yy-/// .rr   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(   )r1   r	   r2   r3   r   r9   float32r4   float64r   r   )r$   r%   clf_32clf_64r(   s        rH   ,test_lda_numeric_consistency_float32_float64r     s    -+6O

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

188BJJ'"**)=> fll> .rr   c                     [        5       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
   r2   r   r   r5   r   X7r7   r8   r   r9   r:   y7r<   r=   r>   r@   y4)rB   rC   rD   rE   rF   rG   s         rH   test_qdar     s    (
)C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                     [        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
   r2   r   r   r5   r9   r{   rt   )rB   rC   n_posnegn_pos2s        rH   test_qda_priorsr    s    
'
)CWWR_$$R(FFF6Q;E
C
'rxxa#g/G
HCWWR_$$R(FVVFaK F>>rr   priors_type)listtuplert   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   r2   r   r   
isinstancer   r9   ndarrayr   )r  r   rB   s      rH   test_qda_prior_typer  +  s^     3ZF
'!3*k:	c"bk  ckk2::....s{{F+rr   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   g?r   N)	r9   rt   r
   r2   r3   r4   r   r   r   )r   qdas     rH   test_qda_prior_copyr  6  sh    XXsCj!F
'v
6
:
:1a
@C s{{CJJ/ F1I;;q>SZZ]***rr   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 )Nrv   T)rf   r   gffffff?r   r   gQUU?gQUUտgvWUU?)	r
   r2   r   r   r   r   rv   r9   rt   )rB   s    rH   test_qda_store_covariancer  C  s    
'
)
-
-b"
5CsM**** (
>
B
B2r
JC3&&&&cooa0"((S$K$PS;U2VW
:{+k:-FGHrr   c                     Sn [        5       n[        R                  " [        R                  U S9   UR                  [        [        5      nS S S 5        UR                  [        5      n[        R                  " U[        :g  5      (       d   e[        SS9n[        R                  " 5          [        R                  " S5        S S S 5        UR                  [        [        5        UR                  [        5      n[        U[        5        [        5       n[        R                  " [        R                  U S9   UR                  [        [         5        S S S 5        [        SS9n[        R                  " [        R                  U S9   UR                  [        [         5        S S S 5        g ! , (       d  f       GNd= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nz2The covariance matrix of class .+ is not full rankr-   rs   )	reg_paramerrorg333333?)r
   r=   r   r   LinAlgWarningr2   X2r   r5   r9   r<   warningscatch_warningssimplefilterr   X5y5)r   rB   rC   s      rH   test_qda_regularizationr  T  s:    @C
'
)C	f**#	6R 
7 [[_F66&B, ($
7C		 	 	"g& 
#GGBO[[_Fvr" (
)C	f**#	6B 
7 (#
6C	f**#	6B 
7	6- 
7	6 
#	" 
7	6
 
7	6s/   F(*F:5GG(
F7:
G
G
G*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 )	Nrd   r   r   re   r   r   	empiricalr    )	r   r9   rk   r   r   r   r   r   r   )r   r4   c_ec_ss       rH   test_covariancer  v  s    12NDA 	q"))AGGAJ!O,44QWWQZLMA
q+
CUU#
q&/CUU#rr   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 morer-   N)r9   rt   r	   r=   r>   r@   r2   )r$   r3   r4   rB   s       rH   =test_raises_value_error_on_same_number_of_classes_and_samplesr!    sb     	3*sCj)*A
#sA
$F
3C	z)M	N 
O	N	Ns   A22
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	   r2   r3   r4   get_feature_names_outlowerr9   rt   rU   r   r   objectr   )est	names_outclass_name_loweriexpected_names_outs        rH   test_get_feature_names_outr+    s     %
&
*
*1a
0C))+I399; 388>>qAB	
B   $B	
  y5	
s   7B)Kr  numpyr9   r=   scipyr   sklearn.clusterr   sklearn.covariancer   r   r   sklearn.datasetsr   sklearn.discriminant_analysisr	   r
   r   sklearn.preprocessingr   sklearn.utilsr   sklearn.utils._testingr   r   r   r   r   rt   r3   r4   r;   r6   r   r   r   r   r  r   c_r   zerosr  r  r1   rI   markparametrizer   r   r   r   r   r   r   r   rU   r   r   r   r   r   int32int64r   r   r   r  r  r  r  r  r  r!  r+  r   rr   rH   <module>r;     s       " H H ' 
 1 ,  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)* UU299Q<&))*XX&'
 <~ q!f-#;<[ = .[|:2J,":&=RQ"< r+4 ,4$4< 1v.q!f- . /2 	RZZ 	RZZ 	2::	2::	00	?6
 (BC, D,
+"D
$ #;<	 =	6rr   