
    /iiq                        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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  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)g dZ*d Z+ej,        -                    dddg          ej,        -                    dg d          d                         Z.d Z/d Z0d  Z1d! Z2d" Z3d# Z4d$ Z5ej,        -                    d% e6d&                    d'             Z7d( Z8ej,        -                    d)dd*g          ej,        -                    dd*dg          d+                         Z9ej,        -                    d,ej:        ej:        fej;        ej;        fej<        ej;        fej=        ej;        fg          d-             Z>d. Z?ej,        -                    dd/d0g          d1             Z@d2 ZAd3 ZBd4 ZCd5 ZDej,        -                    d6g d7          d8             ZEd9 ZFd: ZGej,        -                    dd/d0g          d;             ZHd< ZIej,        -                    dg d          d=             ZJej,        -                    dd/d0g          d>             ZKd? ZLej,        -                    d)d@g          ej,        -                    dAdBg          ej,        -                    dCd/d0g          dD                                     ZMdS )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            	         t           D ]} | \  }}t          ||          }|                    t          t                                        t                    }t          |t          d|z             |                    t          t                                        t                    }t          |t          d|z             |                    t                    }t          |d d df         dk    dz   t          d|z             |	                    t                    }t          t          j        |          |ddd|z             |                    t          t                                        t                    }t          j        |t          k              sJ d|z              t          dd          }t          j        t"                    5  |                    t          t                     d d d            n# 1 swxY w Y   t          d	d
t%                                }t          j        t&          d          5  |                    t          t                     d d d            n# 1 swxY w Y   t          dt)                                }t          j        t&          d          5  |                    t          t                     d d d            n# 1 swxY w Y   t          d	t+          dd                    }t          j        t&                    5  |                    t          t                     d d d            d S # 1 swxY w Y   d S )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	            n/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/tests/test_discriminant_analysis.pytest_lda_predictrN   D   s    & ; ;	%	()LLLA&&q))61kF&:;;; ''"a..((,,7A{V';<<< ))"--M!!!Q$/#5:A{V?STTT11"55F$%%&(	
 	
 	
 	
 ''!R..((++vgm$$::kF&:::::
$EV
D
D
DC	*	+	+  1               %;K;M;M  C 
.
 
 
   	1               %E

U
U
UC	J
 
 
   	1               %Fa,O,O,O  C 
z	"	"  1                 sH   !HH	H		!I66I:=I:9!K&&K*-K**!MMM	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                               ||          }t          |j        |d           t          |j        |d         d           t          j	        |d                   }g g t          t          |          dz
            D ]}	                    t          j        |||	         |d         z
  d d t           j        f                                                  t          j        d||	         |d         z   t           j        d d f         z  d                              t          j        ddgg          d t          j        fdt          dz
            D                       }
dt          j        |
          z
  }t          ddt          fdt          dz
            D                       z   z            }|t!          j        |          k    sJ t          |                              t          j        |
|g          t           j                 d           d S )Nc                     t          |          t          j         fdt          |          D                       }t          j         fdt          t                              D                       }||fS )zNGenerate a multivariate normal data given some centers and
        covariancesc           
      f    g | ]-\  }}                     ||t                    z             .S )size)multivariate_normallen).0meancovcenters	n_samplesrngs      rM   
<listcomp>zDtest_lda_predict_proba.<locals>.generate_dataset.<locals>.<listcomp>   sM       D# ''c	S\\8Q'RR      c                 <    g | ]}|gt                    z  z  S  )rW   )rX   clazzr[   r\   s     rM   r^   zDtest_lda_predict_proba.<locals>.generate_dataset.<locals>.<listcomp>   s+    TTTueW	S\\12TTTr_   )r   r>   vstackziphstackrangerW   )r\   r[   covariancesrandom_stater8   r9   r]   s   ``    @rM   generate_datasetz0test_lda_predict_proba.<locals>.generate_dataset   s     !..I     !$Wk!:!:  
 
 ITTTTTc'll@S@STTT
 
 !tr_   r   (   i   
   d   i_ *   )r\   r[   rg   rh   T)r%   store_covariancer&   r,   )r*   r   r         i   c                     t          j        ||         t          j        | ||                   z                                             S N)r>   r?   dotitem)samplecoef	interceptrb   s       rM   discriminant_funcz1test_lda_predict_proba.<locals>.discriminant_func   s8    vi&U)D)DDEEJJLLLr_   c                     g | ]O}t           |          d t          fdt          d z
            D                       z   z            PS )r   c                 ,    g | ]} |          S ra   ra   rX   rb   alpha_k	alpha_k_0rz   rw   s     rM   r^   z5test_lda_predict_proba.<locals>.<listcomp>.<listcomp>   s:        % .-fgy%PP  r_   )floatsumrf   )rX   rb   r~   r   rz   rO   rw   s     rM   r^   z*test_lda_predict_proba.<locals>.<listcomp>   s     	
 	
 	
  !!&'9eDD      ).y1})=)=   	 	
 	
 	
r_   c                 ,    g | ]} |          S ra   ra   r}   s     rM   r^   z*test_lda_predict_proba.<locals>.<listcomp>   s:        &%fgy%HH  r_   {Gz?rt   )r>   arrayrW   r	   r7   r   means_covariance_r   invrf   appendru   newaxisr   r   rB   approxr<   re   )r%   rO   ri   blob_centers	blob_stdsr8   r9   lda	precisionrb   probprob_ref
prob_ref_2r~   r   rz   rw   s    `           @@@@rM   test_lda_predict_probar      sN       8aVc2Yb	:;;JYJGLB8b#Y/03|3D3DDEEI9SU  DAq %  	c!Qii 
 CJ48888COYq\::::
 
9Q<((IGIs<((1,-- 	
 	
F9|E2\"5EEqqq"*}UVV	
 	
 	
 	FU+l2.>>
AAANN 	
 	
 	
 	
 XRyk""FM M M 8	
 	
 	
 	
 	
 	
 	
 	
 y1}--	
 	
 	
 D$ 26$<<H 	      !&y1}!5!5   		
 J v}Z000000 &!!29dH-=#>#>rz#JQU     r_   c                     t          j        ddg          } t          |           }d}t          j        t
          |          5  |                    t          t                     d d d            n# 1 swxY w Y   t          ddg          }|                    t          t                     t          j        ddg          } t          j        ddg          }t          |           }t          j	        t                    5  |                    t          t                     d d d            n# 1 swxY w Y   t          |j        |d	           d S )
Nr'   rq   priorszpriors must be non-negativer0   333333??g?r   )r>   r   r	   rB   rC   rE   r7   r8   r9   warnsUserWarningr   priors_)r   rG   msg
prior_norms       rM   test_lda_priorsr      s   XsDk""F
$F
3
3
3C
'C	z	-	-	-  1              
 %S#J
7
7
7CGGAqMMM XsCj!!F4,''J
$F
3
3
3C	k	"	"  1               ck:q99999s$   !A11A58A5!D00D47D4c                     d} d}d}t          || |d          \  }}t          d          }t          d          }t          d          }|                    ||           |                    ||           |                    ||           t          |j        |j        d	           t          |j        |j        d	           t          |j        |j        d	           d S )
Nr        r\   
n_featuresr[   rh   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  DAq -E:::K-V<<<L.g>>>MOOAqQak/1CQGGGk/1DaHHHm1<3EqIIIIIr_   c                  x   t          dd          } |                     t          t                                        t                    }|j        d         dk    sJ t          dd          } |                     t          t                                        t                    }|j        d         dk    sJ t          dd          } |                     t          t                     d}t          j        t          |          5  |                     t                     d d d            d S # 1 swxY w Y   d S )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     sJ   
$E
B
B
BCGGAqMM++A..Mq!Q&&&&
$G!
D
D
DCGGAqMM++A..Mq!Q&&&&
$F
C
C
CCGGAqMMM
0C	*#	6	6	6  a                 s   D//D36D3c                  x   t           j                            d          } |                     ddd          }|                     ddd          }t          d	          }|                    ||           t          |j        	                                d
d           |j        j
        dk    s
J d            t          d	          }|                    ||           t          |j        	                                d
d           |j        j
        dk    s
J d            t          |j        |j                   d S )Nr   rn   )rk      )locscalerU   r   )rk   rT   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   #  sC    I!!!$$E#H55Aa''A.g>>>Ma?CCEEsANNN28D@@@9 A@@ -E:::KOOAq=AACCS!LLL06$>>>9 ?>> -}/V    r_   c            	         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                       d          }t          j        t          j        | j        d                   |j        d                   }t          d                              ||          }|	                    |           }|d         |d         z
  }|d         |d         z
  }|t          j
        t          j        |dz                      z  }|t          j
        t          j        |dz                      z  }t          t          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           d S )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>   r   r   reshaperepeataranger   r	   r7   r   sqrtr   r   rZ   Teyeabsru   )meansscatterr8   r9   rG   means_transformedd1d2s           rM   test_lda_orthogonalityr   @  s    Hjjj)))ZZZCDDE hKKLLKKLLKKLL	
	 	G 
qqq"*aaa	 72:qqq!!!+;#<	<EEgNNA
	")EKN++W]1-=>>A %E
2
2
2
6
6q!
<
<Ce,,	1	 1! 4	4B	1	 1! 4	4B"'"&Q--
 
  B"'"&Q--
 
  B s}}W55788"&))DDD rvb!fq!f5566<<< rvb!fq!f5566<<<<<r_   c                     d} t           j                            d          }|                    dd| df          g dz   }|                    dd| df          g dz   }t          j        ||f          g dz  }dg| z  dg| z  z   }d	D ]M}t          |
          }|                    ||                              ||          dk    sJ d|z              Nd S )Nrn   i  r   r   r   )rj   r   r   )rm   r   r   )r   rn   i'  rP   r   r   zusing covariance: %s)r>   r   r   uniformrc   r	   r7   score)nr]   x1x2xr9   r%   rG   s           rM   test_lda_scalingr   i  s    A
)


%
%C 
RQF	#	#kkk	1B	RQF	#	#jjj	0B
	2r(ooo-A	qA37A* Q Q(777wwq!}}""1a((C///1G&1P////Q Qr_   c            	         dD ]} t          |                               t          t                    }t	          |d          sJ t          | d                              t          t                    }t	          |d          sJ t          |j        t          j        ddgddgg                     t          d	                              t          t                    }t	          |d          rJ t          | d                              t          t                    }t	          |d          sJ t          |j        t          j        ddgddgg                     d S )
N)r   r    r   r   T)r%   rp   gil?gam?g	^?r   )	r	   r7   X6y6hasattrr   r   r>   r   )r%   rG   s     rM   test_lda_store_covariancer   z  sp    $ 
 
(777;;BCCsM***** )NNNRR
 
 sM*****!ORX(';h=Q&RSS	
 	
 	
 	

 %E
2
2
2
6
6r2
>
>CsM***** %FT
J
J
J
N
NrSU
V
VC3&&&&&Hh#7(H9M"NOO    r_   seedrm   c                    t           j                            |           }|                    dd          }|                    dd          }t          ddd          }t          dt          d	          d
          }|                    ||           |                    ||           t          |j	        |j	                   t          |j
        |j
                   d S )Nrn   rm   r   rT   Tr'   r   rp   r&   r%   )r&   rp   r.   r%   )r>   r   r   randr   r	   r   r7   r   r   r   )r   r]   r8   r9   c1c2s         rM   test_lda_shrinkager     s     )


%
%CbAAS""A	#TSQW	X	X	XB	#-<<<
 
 
B
 FF1aLLLFF1aLLLBIry)))BNBN33333r_   c                      G d d          } t           j                            d          }|                    dd          }|                    dd          }t          d	d
d          }t          d	 |             d          }|                    ||           |                    ||           t          |j        |j                   t          |j	        |j	                   d S )Nc                       e Zd Zd ZdS )3test_lda_ledoitwolf.<locals>.StandardizedLedoitWolfc                     t                      }|                    |          }t          |          d         }|j        d d t          j        f         |z  |j        t          j        d d f         z  }|| _        d S Nr   r   fit_transformr   scale_r>   r   r   selfr8   scX_scss        rM   r7   z7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fit  q    !!B##A&&DD!!!$A	!!!RZ-(1,ryQQQ/GGA Dr_   N__name__
__module____qualname__r7   ra   r_   rM   StandardizedLedoitWolfr     #        	! 	! 	! 	! 	!r_   r   r   rn   rm   r   rn   rT   Tr!   r   r   r   )
r>   r   r   r   r   r	   r7   r   r   r   )r   r]   r8   r9   r   r   s         rM   test_lda_ledoitwolfr     s    ! ! ! ! ! ! ! ! )


"
"CbAAF##A	#
 
 
B 
$3355
 
 
B
 FF1aLLLFF1aLLLBIry)))BNBN33333r_   r   r   c                 .   t          d          }d}|                    ||          }t          j        t	          |           || z  dz             d |         }t          || dz
            }|dz
  d |fD ](}t          |          }|                    ||           )|dz   t          || dz
            dz   fD ]]}t          |          }d}	t          j
        t          |	          5  |                    ||           d d d            n# 1 swxY w Y   ^d S )Nr   rm   r   )r   z#n_components cannot be larger than r0   )r   randnr>   tilerf   minr	   r7   maxrB   rC   rE   )
rO   r   r]   r\   r8   r9   max_componentsr   r   r   s
             rM   test_lda_dimension_warningr     sq    Q

CI		)Z((A 	i  )y"81"<==jyjIAY]33N'!+T>B  (lCCC1'!+SY]-K-Ka-OP  
 )lCCC3]:S111 	 	GGAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   &D		D	D	zdata_type, expected_typec                     t           D ]n\  }}t          ||          }|                    t                              |           t
                              |                      |j        j        |k    sJ od S )Nr$   )r6   r	   r7   r8   astyper9   r   r   )	data_typeexpected_typer%   r&   rG   s        rM   test_lda_dtype_matchr    sx     . 0 0	()LLL##QXXi%8%8999y-/////0 0r_   c                     t           D ]\  } }t          | |          }|                    t                              t
          j                  t                              t
          j                             t          | |          }|                    t                              t
          j                  t                              t
          j                             d}t          |j
        |j
        |           d S )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    - ? ?	+6YOOO

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

188BJ''"*)=)=>>> fl>>>>>? ?r_   r   r    c                    t          |           }|                    t          t                                        t                    }t          |t                     |                    t          t                                        t                    }t          |t                     |                    t                    }t          |d d df         dk    dz   t                     |                    t                    }t          t          j        |          |d           |                    t          t                                        t                    }t          j        |t          k              sJ t          j        t                     5  |                    t          t"                     d d d            d S # 1 swxY w Y   d S )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
6
6
6CWWR__$$R((Fvr""" ggb"oo%%b))Gw### %%b))Maaad+c1Q6;;;--b11bf%677JJJggb"oo%%b))G6'R-      
z	"	"  B                 s   !GG
G
c                  p   t          dd          } t          j        t                    5  |                     t
          t                     d d d            n# 1 swxY w Y   t          ddt                                } t          j        t          d          5  |                     t
          t                     d d d            n# 1 swxY w Y   t          dt                      	          } t          j        t          d
          5  |                     t
          t                     d d d            n# 1 swxY w Y   t          dt          dd          	          } t          j        t                    5  |                     t
          t                     d d d            d S # 1 swxY w Y   d S )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
G
G
GC	*	+	+  1               (#<L<N<N  C 
.
 
 
   	1               (u:<<
X
X
XC	S
 
 
   	1               (Vq-P-P-P  C 
z	"	"  1                 sG   !AAA!C		CC!D99D= D==!F++F/2F/c                     G d d          }t           j                            |           }|                    dd          }|                    dd          }t          dd	d
          }t          d |            d
          }|                    ||           |                    ||           t          |j        |j                   t          |j	        |j	                   d S )Nc                       e Zd Zd ZdS )3test_qda_ledoitwolf.<locals>.StandardizedLedoitWolfc                     t                      }|                    |          }t          |          d         }|j        d d t          j        f         |z  |j        t          j        d d f         z  }|| _        d S r   r   r   s        rM   r7   z7test_qda_ledoitwolf.<locals>.StandardizedLedoitWolf.fitC  r   r_   Nr   ra   r_   rM   r   r  B  r   r_   r   rn   rm   r   r   rT   Tr!   r    r   r   )
r>   r   r   r   r   r
   r7   r   r   r   )global_random_seedr   r]   r8   r9   r   r   s          rM   test_qda_ledoitwolfr  >  s    ! ! ! ! ! ! ! ! )

 2
3
3CbAAF##A	&
 
 
B 
'3355
 
 
B
 FF1aLLLFF1aLLLBIry)))BNBN33333r_   c                    d}d}d}t          |||ddg|           \  }}t          d          }t          d          }|                    ||           |                    ||           t          |          D ]~}t	          t          j        |j        |                   t          j        |j        |                   d	d
|            t	          |j        |         |j        |         d	d|            d S )Nr   i  r         @)r\   r   r[   cluster_stdrh   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   rf   r   r>   r   
rotations_	scalings_)	r  r   rO   r\   r8   r9   clf_svd	clf_eigen	class_idxs	            rM   test_qda_coefsr  \  s8   JII#J'  DAq ,5999G-W===IKK1MM!Q9%% 
 
	F7%i011F9'	233K	KK		
 	
 	
 	
 	i(	*JyJJ		
 	
 	
 	
 	

 
r_   c                     t                      } |                     t          t                                        t                    }t          j        |dk              }d}t          t          j        |d|z
  g                    } |                     t          t                                        t                    }t          j        |dk              }||k    sJ d S )Nr   g|=r   r   )r
   r7   r   r   r:   r>   r   r   )rG   rH   n_posnegn_pos2s        rM   test_qda_priorsr$  ~  s    
'
)
)CWWR__$$R((FF6Q;E
C
'rxa#g/G/G
H
H
HCWWR__$$R((FVFaK  FE>>>>>>r_   priors_type)listtupler   c                     ddg}t          t          ddg|                                         t          t                    }t          |j        t          j                  sJ t          |j        |           dS )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+    sv     3ZF
'!3*k::  	c"bkk  ck2:.....s{F+++++r_   c                     t          j        ddg          } t          |                               t          t
                    }t          |j        |j                   d| d<   |j        d         |j        d         k    sJ dS )zCCheck that altering `priors` without `fit` doesn't change `priors_`r'   r   皙?r   N)	r>   r   r
   r7   r8   r9   r   r   r   )r   qdas     rM   test_qda_prior_copyr/    sy    XsCj!!F
'v
6
6
6
:
:1a
@
@C s{CJ/// F1I;q>SZ]******r_   c                     t                                          t          t                    } t	          | d          rJ t          d                              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                     d S )Nr   T)rp   r   gffffff?r   r   gQUU?gQUUտgvWUU?)	r
   r7   r   r   r   r   r   r>   r   r  s    rM   test_qda_store_covariancer1    s    
'
)
)
-
-b"
5
5CsM***** (
>
>
>
B
B2r
J
JC3&&&&&coa0"(S$K$PS;U2V2VWWW
:{+k:-FGHH    r_   c                    t           j                            |           }d}t          |          }t	          j        t          j        |          5  |                    t          t                     d d d            n# 1 swxY w Y   t	          j        t                    5  |                    t                    }d d d            n# 1 swxY w Y   |dk    rt          |d          }n|dk    rt          |d          }t          j                    5  t          j        d	           d d d            n# 1 swxY w Y   |                    t          t                     |                    t                    }t!          |t                     |                    d
          }t          j        g d          }t          |          }|dk    r|dz   }n|dk    r|}t	          j        t          j        |          5  |                    ||           d d d            n# 1 swxY w Y   |dk    rbt          |d          }t	          j        t          j        |          5  |                    ||           d d d            d S # 1 swxY w Y   d S |dk    r)t          |d          }|                    ||           d S d S )Nz3The covariance matrix of class .+ is not full rank.r   r0   r   r   )r%   	reg_paramr    r$   error)	      rT   )	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   r   )	r  r%   r]   r   rG   rH   r8   r9   msg2s	            rM   test_qda_regularizationr?    s    )

 2
3
3C AC
'v
6
6
6C	v)	5	5	5  B               
~	&	& ! !R! ! ! ! ! ! ! ! ! ! ! ! ! ! ! +6TJJJ	7		+6TJJJ		 	"	" ' 'g&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' 'GGBOOO[[__Fvr""" 	


A
,,,--A
'v
6
6
6C11	7			v)	6	6	6  1              
 +6SIII]6-T::: 	 	GGAqMMM	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 
7		+6SIII1 
	sZ   !A??BB#C

CCD88D<?D<H%%H),H)'JJJc                     t          dddd          \  } }t          j        | t          j        | j        d         dz                                | j        d         | j        d                             } t          | d          }t          ||j                   t          | d          }t          ||j                   d S )	Nrn   r   r   ro   r   r   	empiricalr!   )	r   r>   ru   r   r   r   r   r   r   )r   r9   c_ec_ss       rM   test_covariancerD    s    12NNNDAq 	q")AGAJ!O,,44QWQZLLMMA
q+

CSU###
q&//CSU#####r_   c                    t          j        ddgddgg          }t          j        ddg          }t          |           }t          j        t
          d          5  |                    ||           ddd           dS # 1 swxY w Y   dS )	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 morer0   N)r>   r   r	   rB   rC   rE   r7   r%   r8   r9   rG   s       rM   =test_raises_value_error_on_same_number_of_classes_and_samplesrI    s     	3*sCj)**A
#sA
$F
3
3
3C	z)M	N	N	N  1                 s   B  BBc                 &   t          j        ddgddgddgddgg          }t          j        g d          }t          |           }t          j        t
          d          5  |                    ||           ddd           dS # 1 swxY w Y   dS )	zG
    Tests that if a class has one sample, a ValueError is raised.
    r'   r   g?)rF  rF  rF  rG  r   zy has only 1 sample in classr0   N)r>   r   r
   rB   rC   rE   r7   rH  s       rM   /test_raises_value_error_on_one_sample_per_classrK    s    
 	3*sCj3*sCjABBA
%%%&&A
'v
6
6
6C	z)G	H	H	H  1                 s   "BB
B
c                  X   t                                          t          t                    } |                                 }d                                t          j        fdt          | j	        j
        d                   D             t                    }t          ||           dS )z6Check get_feature_names_out uses class name as prefix.r	   c                     g | ]} | 	S ra   ra   )rX   iclass_name_lowers     rM   r^   z.test_get_feature_names_out.<locals>.<listcomp>  s4     	
 	
 	
  $$$	
 	
 	
r_   r   r   N)r	   r7   r8   r9   get_feature_names_outlowerr>   r   rf   r   r   objectr   )est	names_outexpected_names_outrO  s      @rM   test_get_feature_names_outrV    s     %
&
&
*
*1a
0
0C))++I399;;	
 	
 	
 	
38>qABB	
 	
 	
    y"455555r_      
train_sizern   solver_no_shrinkagec                    d}|}t           j                            |           }|                    dd|          }|                    dd|          }t          j        t           j                            |dz  |          t          j        |          z  t           j                            |dz  |          t          j        |          z  gd	          }t          j        dg|dz  z  d
g|dz  z  z             }	t          d|d          }
t          dd          }t          |d           }t          |||	|
d          }t          |||	|
d          }|                                dk    sJ |                                dk     sJ d S )Nr   g       @r  rT   r-  r   r   r   )axisr   r   )n_splitsrX  rh   r    r!   r$   d2_brier_score)cvscoringg?r   )r>   r   r7  r   concatenater   r   r   r   r
   r   rY   )r  r   rX  rY  r\   r]   vars1vars2r8   r9   r^  qda_shrinkageqda_no_shrinkagescores_no_shrinkagescores_shrinkages                  rM   test_qda_shrinkage_performancerg  !  s    IJ
)

 2
3
3C KKSzK22EKKSzK22E
IOOINJ77"'%..HIOOINJ77"'%..H	
 	 	 	A 	!	Q'1#a*@@AAA 
qZa	H	H	HB1FSSSM4"d   *!Q2/?   'q!,<     ""S((((##%%++++++r_   )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   r   r8   r9   r@   r;   r   r   r  r
  r9  r  r6   rN   markparametrizer   r   r   r   r   r   r   r   rf   r   r   r   r  r  int32int64r  r  r  r  r  r  r$  r+  r/  r1  r?  rD  rI  rK  rV  rg  ra   r_   rM   <module>rv     s               " " " " " " H H H H H H H H H H ' ' ' ' ' '         
 B A A A A A A A 0 0 0 0 0 0 , , , , , ,              BHr2hR2r(QFQFQFC3OOOBH  RX   !! RXTB4"sQC!%
   RXVb"XBx"bB8aVaVaVaQRVT  RX)))**RX)))** RXtbTB4"sQC!qcA3?@@ RX!Wr1gAwQ!Q!Q!Q!Q!QP 
 RX)))**
 
 
 < < <~ q!f--#;#;#;<<[ [ =< .-[|: : :2J J J,  "  :&= &= &=RQ Q Q"  < r++4 4 ,+4$4 4 4< 1v..q!f--  .- /.2 	RZ 	RZ 	2:	2:	 0 0 0	? 	? 	? E7#344  546  D4 4 4<
 
 
D
 
 
 (B(B(BCC, , DC,
+ 
+ 
+  " E7#3442 2 542j
$ 
$ 
$ #;#;#;<<	 	 =<	 E7#344  546 6 6" t,,u--.0@AA(, (, BA .- -,(, (, (,r_   