
    >[gwY                         d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	m
Z
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 d d	lmZmZmZmZmZ d d
lmZ  ej<                  ddgddgddgddgddgddggd      Z ej<                  g d      Z  ej<                  g d      Z! ej<                  dgdgdgdgdgdggd      Z" ej<                  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# ej<                  g d      Z$ ej<                  g d      Z% ej<                  dgdgdgdgd gdgdgdgdgg	      Z& ej<                  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' ej<                  g d      Z(ejR                   ejT                  d       ejV                  d      f   Z, ej<                  g d      Z-g dZ.d Z/ej`                  jc                  dddg      ej`                  jc                  dg d      d                Z2d! Z3d" Z4d# Z5d$ Z6d% Z7d& Z8d' Z9ej`                  jc                  d( e:d)            d*        Z;d+ Z<ej`                  jc                  d,dd-g      ej`                  jc                  dd-dg      d.               Z=ej`                  jc                  d/ej|                  ej|                  fej~                  ej~                  fej                  ej~                  fej                  ej~                  fg      d0        ZBd1 ZCd2 ZDd3 ZEej`                  jc                  d4g d5      d6        ZFd7 ZGd8 ZHej`                  j                  ed9:      d;        ZJd< ZKej`                  jc                  dg d      d=        ZLd> ZMy)?    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)_IS_WASM      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            	         t         D ][  } | \  }}t        ||      }|j                  t        t              j                  t              }t        |t        d|z         |j                  t        t              j                  t              }t        |t        d|z         |j                  t              }t        |d d df   dkD  dz   t        d|z         |j                  t              }t        t        j                  |      |ddd|z         |j                  t        t              j                  t              }t        j                  |t        k7        rTJ d|z          t        dd      }t        j                   t"              5  |j                  t        t               d d d        t        d	d
t%                     }t        j                   t&        d      5  |j                  t        t               d d d        t        dt)                     }t        j                   t&        d      5  |j                  t        t               d d d        t        d	t+        dd            }t        j                   t&              5  |j                  t        t               d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   y xY w)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	            c/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/tests/test_discriminant_analysis.pytest_lda_predictrJ   H   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+ J83KK+J58KKK	n_classesr%   r   r   r    c                    dd}t        j                  ddgddgddgg      d | }t        j                  ddgddgggt        |      z        } |d	||d
      \  }}t        | dd       j	                  ||      }t        |j                  |d       t        |j                  |d   d       t        j                  |d         }g }	g }
t        t        |      dz
        D ]  }|	j                  t        j                  |||   |d   z
  d d t         j                  f                |
j                  t        j                  d||   |d   z   t         j                  d d f   z  |	d                 t        j                  ddgg      }d }t        j                  t        |dz
        D cg c]H  }t         |||	|
|      dt        t        |dz
        D cg c]  } |||	|
|       c}      z   z        J c}      }dt        j                  |      z
  }t        ddt        t        |dz
        D cg c]  } |||	|
|       c}      z   z        }|t!        j"                  |      k(  sJ t        |j%                  |      t        j&                  ||g      t         j                     d       y c c}w c c}w c c}w )Nc                 `   t        |      }t        j                  t        ||      D cg c]%  \  }}|j	                  ||| t        |      z        ' c}}      }t        j                  t        t        |            D cg c]  }|g| t        |      z  z   c}      }	||	fS c c}}w c c}w )zNGenerate 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covr4   clazzr5   s
             rI   generate_datasetz0test_lda_predict_proba.<locals>.generate_dataset   s     !.II "%Wk!:!:ID# ''c	S\8Q'R!:
 II@Ec'l@ST@SueW	S\12@ST
 !t Us   *B%
B+r   (   i   
   d   i_ *   )rW   rX   rY   rZ   T)r%   store_covariancer&   r,   )r*   r   r         i   c                     t        j                  ||   t        j                  | ||         z         j                         S N)r:   r;   dotitem)samplecoef	interceptr^   s       rI   discriminant_funcz1test_lda_predict_proba.<locals>.discriminant_func   s3    vvi&U)DDEJJLL    {Gz?rj   )r:   arrayrT   r	   r3   r   means_covariance_r   invrV   appendrk   newaxisfloatsumr>   approxr8   rU   )r%   rK   r_   blob_centers	blob_stdsr4   r5   lda	precisionalpha_k	alpha_k_0r^   rm   rp   probprob_ref
prob_ref_2s                    rI   test_lda_predict_probar      s    88aVc2Yb	:;JYGLB8b#Y/03|3DDEI9SUDAq %	c!Qi 
 CJJ48COOYq\:
 

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

ANN	
	 . XXRyk"FM 88 y1}-	
 . !&'9eD */y1})=)= .fgy%P)=	 .	
D$ 266$<H 	 "'y1}!5!5 &fgy%H!5		
J v}}Z0000 &!299dH-=#>rzz#JQU?	
4s   ,*J8J3(J84J=3J8c                  d   t        j                  ddg      } t        |       }d}t        j                  t
        |      5  |j                  t        t               d d d        t        ddg      }|j                  t        t               t        j                  ddg      } t        j                  ddg      }t        |       }t        j                  t              5  |j                  t        t               d d d        t        |j                  |d	       y # 1 sw Y   xY w# 1 sw Y   -xY w)
Nr'   rg   priorszpriors must be non-negativer.   333333??g?r   )r:   rs   r	   r>   r?   rA   r3   r4   r5   warnsUserWarningr   priors_)r   rC   msg
prior_norms       rI   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#&D/c                     d} d}d}t        || |d      \  }}t        d      }t        d      }t        d      }|j                  ||       |j                  ||       |j                  ||       t        |j                  |j                  d	       t        |j                  |j                  d	       t        |j                  |j                  d	       y )
Nr   i     rW   
n_featuresrX   rZ   r   r%   r   r    r   )r   r	   r3   r   coef_)r   rK   rW   r4   r5   clf_lda_svdclf_lda_lsqrclf_lda_eigens           rI   test_lda_coefsr      s    JII
ITVDAq -E:K-V<L.g>MOOAqQak//1C1CQGk//1D1DaHm11<3E3EqIrq   c                     t        dd      } | j                  t        t              j	                  t              }|j
                  d   dk(  sJ t        dd      } | j                  t        t              j	                  t              }|j
                  d   dk(  sJ t        dd      } | j                  t        t               d}t        j                  t        |      5  | j	                  t               d d d        y # 1 sw Y   y xY w)Nr   r   )r%   n_componentsr    r   z$transform not implemented for 'lsqr'r.   )	r	   r3   r4   r5   	transformshaper>   r?   r@   )rC   X_transformedr   s      rI   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   !D  D	c                  ^   t         j                  j                  d      } | j                  ddd      }| j	                  ddd      }t        d	      }|j                  ||       t        |j                  j                         d
d       |j                  j                  dk(  sJ d       t        d	      }|j                  ||       t        |j                  j                         d
d       |j                  j                  dk(  sJ d       t        |j                  |j                         y )Nr   rd   )ra      )locscalerP   r   )ra   rO   r    r         ?)r   z/Unexpected length for explained_variance_ratio_r   )r:   randomRandomStatenormalrandintr	   r3   r   explained_variance_ratio_rz   r   r   )stater4   r5   r   r   s        rI   !test_lda_explained_variance_ratior   '  s    II!!!$E#H5Aa'A.g>Ma??CCEsAN2288 =  989  -E:KOOAq==AACS!L0066 ;  989  --}/V/Vrq   c            	      V   t        j                  g dg dg dg dg      } t        j                  g dg dg dg dg d	g d
g      }| d d t         j                  d d f   |t         j                  d d d d f   z   j                  d      }t        j                  t        j
                  | j                  d         |j                  d         }t        d      j                  ||      }|j                  |       }|d   |d   z
  }|d   |d   z
  }|t        j                  t        j                  |dz              z  }|t        j                  t        j                  |dz              z  }t        t        j                  |j                  |      j                        t        j                  d             t        t        j                   t        j"                  |d d ddg            d       t        t        j                   t        j"                  |d d ddg            d       y )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:   rs   rx   reshaperepeataranger   r	   r3   r   sqrtrz   r   r]   Teyeabsrk   )meansscatterr4   r5   rC   means_transformedd1d2s           rI   test_lda_orthogonalityr   D  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<rq   c                     d} t         j                  j                  d      }|j                  dd| df      g dz   }|j                  dd| df      g dz   }t        j                  ||f      g dz  }dg| z  dg| z  z   }d	D ]=  }t        |
      }|j                  ||      j                  ||      dk(  r5J d|z          y )Nrd   i  r   r   r   )r`   r   r   )rc   r   r   )r   rd   i'  rL   r   r   zusing covariance: %s)r:   r   r   uniformrQ   r	   r3   score)nr[   x1x2xr5   r%   rC   s           rI   test_lda_scalingr   m  s    A
))


%C 
RQF	#k	1B	RQF	#j	0B
		2r(o-A	qA37A*(7wwq!}""1a(C/P1G&1PP/ +rq   c            	      b   dD ]  } t        |       j                  t        t              }t	        |d      sJ t        | d      j                  t        t              }t	        |d      sJ t        |j                  t        j                  ddgddgg              t        d	      j                  t        t              }t	        |d      rJ t         d      j                  t        t              }t	        |d      sJ t        |j                  t        j                  ddgddgg             y )
N)r   r    r   ru   T)r%   rf   gil?gam?g	^?r   )	r	   r3   X6y6hasattrr   ru   r:   rs   )r%   rC   s     rI   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rq   seedrc   c                    t         j                  j                  |       }|j                  dd      }|j	                  dd      }t        ddd      }t        dt        d	      d
      }|j                  ||       |j                  ||       t        |j                  |j                         t        |j                  |j                         y )Nrd   rc   r   rO   Tr'   r   rf   r&   r%   )r&   rf   r-   r%   )r:   r   r   randr   r	   r   r3   r   rt   ru   )r   r[   r4   r5   c1c2s         rI   test_lda_shrinkager     s     ))


%CbAAS"A	#TSQW	XB	#-<
B
 FF1aLFF1aLBIIryy)BNNBNN3rq   c                      G d d      } t         j                  j                  d      }|j                  dd      }|j	                  dd      }t        d	d
d      }t        d	 |        d      }|j                  ||       |j                  ||       t        |j                  |j                         t        |j                  |j                         y )Nc                       e Zd Zd Zy)3test_lda_ledoitwolf.<locals>.StandardizedLedoitWolfc                     t               }|j                  |      }t        |      d   }|j                  d d t        j
                  f   |z  |j                  t        j
                  d d f   z  }|| _        y )Nr   )r   fit_transformr   scale_r:   rx   ru   )selfr4   scX_scss        rI   r3   z7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fit  sb    !B##A&DD!!$A		!RZZ-(1,ryyQ/GGA Drq   N)__name__
__module____qualname__r3    rq   rI   StandardizedLedoitWolfr     s    	!rq   r   r   rd   rc   r   )rd   rO   Tr!   r   r   r   )
r:   r   r   r   r   r	   r3   r   rt   ru   )r   r[   r4   r5   r   r   s         rI   test_lda_ledoitwolfr     s    ! ! ))


"CbAAF#A	#
B 
$35
B
 FF1aLFF1aLBIIryy)BNNBNN3rq   r   r   c                    t        d      }d}|j                  ||      }t        j                  t	        |       || z  dz         d | }t        || dz
        }|dz
  d |fD ]   }t        |      }|j                  ||       " |dz   t        || dz
        dz   fD ]F  }t        |      }d}	t        j                  t        |	      5  |j                  ||       d d d        H y # 1 sw Y   SxY w)Nr   rc   r   )r   z#n_components cannot be larger than r.   )r   randnr:   tilerV   minr	   r3   maxr>   r?   rA   )
rK   r   r[   rW   r4   r5   max_componentsr   r~   r   s
             rI   test_lda_dimension_warningr     s     Q
CI		)Z(A 	i )y"81"<=jyIAY]3N'!+T>B(lC1 C
 (!+SY]-Ka-OP
 )lC3]]:S1GGAqM 21 Q 21s   C##C,	zdata_type, expected_typec                     t         D ]e  \  }}t        ||      }|j                  t        j	                  |       t
        j	                  |              |j                  j                  |k(  reJ  y )Nr$   )r2   r	   r3   r4   astyper5   r   r   )	data_typeexpected_typer%   r&   rC   s        rI   test_lda_dtype_matchr     sU     .	()L#QXXi%89yy-/// .rq   c                     t         D ]  \  } }t        | |      }|j                  t        j	                  t
        j                        t        j	                  t
        j                               t        | |      }|j                  t        j	                  t
        j                        t        j	                  t
        j                               d}t        |j                  |j                  |        y )Nr$   r(   )r)   )r2   r	   r3   r4   r   r:   float32r5   float64r   r   )r%   r&   clf_32clf_64r)   s        rI   ,test_lda_numeric_consistency_float32_float64r     s    -	+6YO

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

188BJJ'"**)=> fll> .rq   c                      t               } | j                  t        t              j	                  t              }t        |t               | j                  t        t              j	                  t              }t        |t               | j                  t              }t        |d d df   dkD  dz   t               | j                  t              }t        t        j                  |      |d       | j                  t        t              j	                  t              }t        j                  |t        k7        sJ t        j                  t               5  | j                  t        t"               d d d        y # 1 sw Y   y xY w)Nr   r'   r   )r
   r3   r   r   r6   r   X7r8   r9   r   r:   r;   y7r=   r>   r?   rA   y4)rC   rD   rE   rF   rG   rH   s         rI   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   E44E=c                     t               } | j                  t        t              j	                  t              }t        j                  |dk(        }d}t        t        j                  |d|z
  g            } | j                  t        t              j	                  t              }t        j                  |dk(        }||kD  sJ y )Nr   g|=r   r   )r
   r3   r   r   r6   r:   rz   rs   )rC   rD   n_posnegn_pos2s        rI   test_qda_priorsr     s    
'
)CWWR_$$R(FFF6Q;E
C
'rxxa#g/G
HCWWR_$$R(FVVFaK FE>>rq   priors_type)listtuplers   c                     ddg}t        t        ddg|             j                  t        t              }t        |j                  t        j                        sJ t        |j                  |       y)z$Check that priors accept array-like.r'   r   N)
r
   r   r3   r   r   
isinstancer   r:   ndarrayr   )r   r   rC   s      rI   test_qda_prior_typer  ,  s[     3ZF
'!3*k:	c"bk  ckk2::...s{{F+rq   c                     t        j                  ddg      } t        |       j                  t        t
              }t        |j                  |j                         d| d<   |j                  d   |j                  d   k7  sJ y)zCCheck that altering `priors` without `fit` doesn't change `priors_`r'   r   g?r   N)	r:   rs   r
   r3   r4   r5   r   r   r   )r   qdas     rI   test_qda_prior_copyr  7  sh    XXsCj!F
'v
6
:
:1a
@C s{{CJJ/ F1I;;q>SZZ]***rq   c                     t               j                  t        t              } t	        | d      rJ t        d      j                  t        t              } t	        | d      sJ t        | j                  d   t        j                  ddgddgg             t        | j                  d   t        j                  dd	gd	d
gg             y )Nru   T)rf   r   gffffff?r   r   gQUU?gQUUտgvWUU?)	r
   r3   r   r   r   r   ru   r:   rs   )rC   s    rI   test_qda_store_covariancer	  D  s    
'
)
-
-b"
5CsM*** (
>
B
B2r
JC3&&&cooa0"((S$K$PS;U2VW
:{+k:-FGHrq   zcno floating point exceptions, see https://github.com/numpy/numpy/pull/21895#issuecomment-1311525881)reasonc                     d} t               }t        j                  t        j                  |       5  |j                  t        t              }d d d        |j                  t              }t        j                  |t        k7        sJ t        d      }t        j                         5  t        j                  d       d d d        |j                  t        t               |j                  t              }t        |t               t               }t        j                  t        j                  |       5  |j                  t        t                d d d        t        d      }t        j                  t        j                  |       5  |j                  t        t                d d d        y # 1 sw Y   axY w# 1 sw Y   xY w# 1 sw Y   wxY w# 1 sw Y   y xY w)Nz2The covariance matrix of class .+ is not full rankr.   rr   )	reg_paramerrorg333333?)r
   r>   r   r   LinAlgWarningr3   X2r   r6   r:   r=   warningscatch_warningssimplefilterr   X5y5)r   rC   rD   s      rI   test_qda_regularizationr  U  s7    @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,(F94GG,F69GGGc                  v   t        dddd      \  } }t        j                  | t        j                  | j                  d   dz        j                  | j                  d   | j                  d               } t        | d      }t        ||j                         t        | d      }t        ||j                         y )	Nrd   r   r   re   r   r   	empiricalr!   )	r   r:   rk   r   r   r   r   r   r   )r   r5   c_ec_ss       rI   test_covariancer  ~  s    12NDAq 	q"))AGGAJ!O,44QWWQZLMA
q+
CSUU#
q&/CSUU#rq   c                    t        j                  ddgddgg      }t        j                  ddg      }t        |       }t        j                  t
        d      5  |j                  ||       ddd       y# 1 sw Y   yxY w)	zg
    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)r:   rs   r	   r>   r?   rA   r3   )r%   r4   r5   rC   s       rI   =test_raises_value_error_on_same_number_of_classes_and_samplesr    sd     	3*sCj)*A
#sA
$F
3C	z)M	N1 
O	N	Ns   A66A?c                  D   t               j                  t        t              } | j	                         }dj                         }t        j                  t        | j                  j                  d         D cg c]  }| | 
 c}t              }t        ||       yc c}w )z6Check get_feature_names_out uses class name as prefix.r	   r   r   N)r	   r3   r4   r5   get_feature_names_outlowerr:   rs   rV   r   r   objectr   )est	names_outclass_name_loweriexpected_names_outs        rI   test_get_feature_names_outr(    s     %
&
*
*1a
0C))+I399; 388>>qAB	
B   $B	
  y"45	
s   6B)Nr  numpyr:   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   sklearn.utils.fixesr   rs   r4   r5   r<   r7   r   r   r   r   r  r   c_r   zerosr  r  r2   rJ   markparametrizer   r   r   r   r   r   r   r   rV   r   r   r   r   r   int32int64r   r   r   r   r  r  r	  xfailr  r  r  r(  r   rq   rI   <module>r:     s       " H H ' 
 1 ,  ) BHHr2hR2r(QFQFQFC3OBHH RXX ! RXXTB4"sQC!%
 RXXVb"XBx"bB8aVaVaVaQRVT RXX)*RXX)* RXXtbTB4"sQC!qcA3?@ RXX!Wr1gAwQ!Q!Q!Q!Q!QP
 RXX)* UU9299Q<&))*RXX&'
 <~ q!f-#;<[ = .[|:2J,":&=RQ"< r+4 ,4$4< 1v.q!f- . /2 	RZZ 	RZZ 	2::	2::	00	?6
 (BC, D,
+" 	M  D
$ #;<	 =	6rq   