§
    Øjôv  ã                   óª  — 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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„ Z0d„ Z1d „ Z2d!„ Z3d"„ Z4ej-         .                    dd#d$g¦  «        d%„ ¦   «         Z5d&„ Z6d'„ Z7ej-         .                    d( e8d)¦  «        ¦  «        d*„ ¦   «         Z9d+„ Z:ej-         .                    d,dd-g¦  «        ej-         .                    dd-dg¦  «        d.„ ¦   «         ¦   «         Z;ej-         .                    d/ej<        ej<        fej=        ej=        fej>        ej=        fej?        ej=        fg¦  «        d0„ ¦   «         Z@d1„ ZAej-         .                    dd#d$g¦  «        d2„ ¦   «         ZBd3„ ZCd4„ ZDd5„ ZEej-         .                    dd#d$g¦  «        d6„ ¦   «         ZFej-         .                    d7g d8¢¦  «        d9„ ¦   «         ZGd:„ ZHej-         .                    dd#d$g¦  «        d;„ ¦   «         ZIej-         .                    dd#d$g¦  «        d<„ ¦   «         ZJd=„ ZKej-         .                    dg d¢¦  «        d>„ ¦   «         ZLej-         .                    dd#d$g¦  «        d?„ ¦   «         ZMd@„ ZNej-         .                    d,dAg¦  «        ej-         .                    dBdCg¦  «        ej-         .                    dDd#d$g¦  «        dE„ ¦   «         ¦   «         ¦   «         ZOdF„ ZPdS )Gé    N)Úlinalg)ÚKMeans)ÚEmpiricalCovarianceÚ
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	            ú�/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/sklearn/tests/test_discriminant_analysis.pyÚtest_lda_predictrO   I   s÷  € õ &ð ;ñ ;ˆ	Ø%Ñˆ�	Ý(°À)ÐLÑLÔLˆØ—’��A‘”×&Ò&¥qÑ)Ô)ˆÝ˜6¥1 k°FÑ&:Ñ;Ô;Ð;ð —'’'�"�a‘.”.×(Ò(­Ñ,Ô,ˆÝ˜7¥A {°VÑ';Ñ<Ô<Ð<ð ×)Ò)­"Ñ-Ô-ˆÝ˜M¨!¨!¨!¨Q¨$Ô/°#Ò5¸Ñ:½A¸{ÈVÑ?SÑTÔTÐTØ×1Ò1µ"Ñ5Ô5ÐÝÝŒFÐ$Ñ%Ô%ØØØØ &Ñ(ð	
ñ 	
ô 	
ð 	
ð —'’'�!�R‘.”.×(Ò(­Ñ+Ô+ˆåŒv�g¥’mÑ$Ô$Ð:Ð: k°FÑ&:Ñ:Ô:Ð$Ñ:å
$¨E¸VÐ
DÑ
DÔ
D€CÝ	ŒÕ*Ñ	+Ô	+ð ð Ø�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ %Ø Õ;KÑ;MÔ;Mðñ ô €Cõ 
ŒÝð.ð
ñ 
ô 
ð ð ð 	�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ %¨EÍ
ÉÌÐ
UÑ
UÔ
U€CÝ	ŒÝÐJð
ñ 
ô 
ð ð ð 	�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ %Ø­F¸aÈÐ,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      €€€rN   ú
<listcomp>zDtest_lda_predict_proba.<locals>.generate_dataset.<locals>.<listcomp>�   sM   ø€ ð ð ð á�D˜#ð ×'Ò'¨¨c¸	ÅSÈÁ\Ä\Ñ8QÐ'ÑRÔRðð ð ó    c                 ó<   •— g | ]}|g‰t          ‰¦  «        z  z  ‘ŒS © )rX   )rY   Úclazzr\   r]   s     €€rN   r_   zDtest_lda_predict_proba.<locals>.generate_dataset.<locals>.<listcomp>–   s+   ø€ ÐTÐTÐT°uˆeˆW˜	¥S¨¡\¤\Ñ1Ñ2ÐTÐTÐTr`   )r   r?   ÚvstackÚzipÚhstackÚrangerX   )r]   r\   ÚcovariancesÚrandom_stater9   r:   r^   s   ``    @rN   Úgenerate_datasetz0test_lda_predict_proba.<locals>.generate_dataset‹   s¥   øøø€ õ ! Ñ.Ô.ˆÝŒIðð ð ð ð ð å!$ W¨kÑ!:Ô!:ðñ ô ñ
ô 
ˆõ ŒIØTÐTÐTÐTÐTÅÅcÈ'ÁlÄlÑ@SÔ@SÐTÑTÔTñ
ô 
ˆð �!ˆtˆr`   r   éöÿÿÿé(   iâÿÿÿé   é
   éd   i�_ é*   )r]   r\   rh   ri   T)r&   Ústore_covariancer'   r-   )r+   r   r   ç      à¿iêÿÿÿé   c                 ó’   — t          j        ||         t          j        | ||         ¦  «        z   ¦  «                             ¦   «         S ©N)r?   r@   ÚdotÚitem)ÚsampleÚcoefÚ	interceptrc   s       rN   Údiscriminant_funcz1test_lda_predict_proba.<locals>.discriminant_funcº   s8   € ÝŒv�i Ô&­¬°¸¸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 rb   rb   ©rY   rc   Úalpha_kÚ	alpha_k_0r{   rx   s     €€€€rN   r_   z5test_lda_predict_proba.<locals>.<listcomp>.<listcomp>Ä   s:   ø€ ð ð ð à %ð .Ð-¨f°g¸yÈ%ÑPÔPðð ð r`   )ÚfloatÚsumrg   )rY   rc   r   r€   r{   rP   rx   s     €€€€€rN   r_   z*test_lda_predict_proba.<locals>.<listcomp>¾   s¤   ø€ ð 	
ð 	
ð 	
ð õ Ø!Ð! &¨'°9¸eÑDÔDàÝðð ð ð ð ð ð å).¨y¸1©}Ñ)=Ô)=ðñ ô ñô ññ	ñô ð	
ð 	
ð 	
r`   c                 ó,   •— g | ]} ‰‰‰‰|¦  «        ‘ŒS rb   rb   r~   s     €€€€rN   r_   z*test_lda_predict_proba.<locals>.<listcomp>Ø   s:   ø€ ð ð ð àð &Ð% f¨g°yÀ%ÑHÔHðð ð r`   ç{®Gáz„?ru   )r?   ÚarrayrX   r
   r8   r   Úmeans_Úcovariance_r   Úinvrg   Úappendrv   Únewaxisr‚   r�   rC   Úapproxr=   rf   )r&   rP   rj   Úblob_centersÚ	blob_stdsr9   r:   ÚldaÚ	precisionrc   ÚprobÚprob_refÚ
prob_ref_2r   r€   r{   rx   s    `           @@@@rN   Útest_lda_predict_probar“   ˆ   sN  øøøøø€ ðð ð ð õ ”8˜a ˜V c¨2 Y°°b°	Ð:Ñ;Ô;¸J¸Y¸JÔG€LÝ”˜B ˜8 b¨# YÐ/Ð0µ3°|Ñ3DÔ3DÑDÑEÔE€IØÐØ ¸9ÐSUðñ ô �D€A€qõ %Ø¨¸ðñ ô ç	‚cˆ!ˆQ�i„ið õ
 �C”J °4Ð8Ñ8Ô8Ð8Ý�C”O Y¨q¤\¸Ð:Ñ:Ô:Ð:õ
 ”
˜9 Qœ<Ñ(Ô(€IØ€GØ€IÝ•s˜<Ñ(Ô(¨1Ñ,Ñ-Ô-ð 	
ð 	
ˆØ�ŠÝŒF�9˜|¨EÔ2°\À"Ô5EÑEÀqÀqÀqÍ"Ì*À}ÔUÑVÔVñ	
ô 	
ð 	
ð 	×ÒÝŒFØ˜ UÔ+¨l¸2Ô.>Ñ>ÅÄ
ÈAÈAÈAÀÔNÑNØ˜”ñô ñ	
ô 	
ð 	
ð 	
õ ŒX˜˜R�y�kÑ"Ô"€FðMð Mð Mõ Œ8ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
õ ˜y¨1™}Ñ-Ô-ð	
ñ 	
ô 	
ñô €Dð$ •2”6˜$‘<”<Ñ€Hõ Ø	àÝðð ð ð ð ð ð å!& y°1¡}Ñ!5Ô!5ðñ ô ñô ññ		
ñô €Jð •v”} ZÑ0Ô0Ò0Ð0Ð0Ð0õ Ø×Ò˜&Ñ!Ô!¥2¤9¨d°HÐ-=Ñ#>Ô#>½r¼zÔ#JÐQUðñ ô ð ð ð 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(   rr   ©Úpriorszpriors must be non-negativer1   ç333333ã?gÍÌÌÌÌÌÜ?gš™™™™™á?r   )r?   r…   r
   rC   rD   rF   r8   r9   r:   ÚwarnsÚUserWarningr   Úpriors_)r–   rH   ÚmsgÚ
prior_norms       rN   Útest_lda_priorsr�   è   s–  € åŒX�s˜D�kÑ"Ô"€FÝ
$¨FÐ
3Ñ
3Ô
3€CØ
'€Cå	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ
 %¨S°#¨JÐ
7Ñ
7Ô
7€CØ‡G‚G�A�q�M„M€Mõ ŒX�s˜C�jÑ!Ô!€FÝ”˜4 ˜,Ñ'Ô'€JÝ
$¨FÐ
3Ñ
3Ô
3€Cå	Œ•kÑ	"Ô	"ð ð Ø�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ ˜cœk¨:°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        ¦  «         t          |j        |j        ¦  «         t          |j        |j        ¦  «         d S )	Nr   éè  é   ©r]   Ú
n_featuresr\   ri   r   ©r&   r    r!   )r	   r
   r8   r   Úcoef_)r¢   rP   r]   r9   r:   Úclf_lda_svdÚclf_lda_lsqrÚclf_lda_eigens           rN   Útest_lda_coefsr¨     sí   € à€JØ€IØ€IÝØ¨
¸IÐTVðñ ô �D€A€qõ -°EÐ:Ñ:Ô:€KÝ-°VÐ<Ñ<Ô<€LÝ.°gÐ>Ñ>Ô>€Mà‡O‚O�A�qÑÔÐØ×Ò�Q˜ÑÔÐØ×Ò�a˜ÑÔÐå˜kÔ/°Ô1CÑDÔDÐDÝ˜kÔ/°Ô1DÑEÔEÐEÝ˜mÔ1°<Ô3EÑFÔFÐFÐFÐFr`   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'r1   )	r
   r8   r9   r:   Ú	transformÚshaperC   rD   rE   )rH   ÚX_transformed_svdÚX_transformed_eigenr›   s       rN   Útest_lda_transformr°     sL  € å
$¨EÀÐ
BÑ
BÔ
B€CØŸš¥¥1™œ×/Ò/µÑ2Ô2ÐØÔ" 1Ô%¨Ò*Ð*Ð*Ð*Ý
$¨GÀ!Ð
DÑ
DÔ
D€CØŸ'š'¥!¥Q™-œ-×1Ò1µ!Ñ4Ô4ÐØÔ$ QÔ'¨1Ò,Ð,Ð,Ð,å
$¨FÀÐ
CÑ
CÔ
C€CØ‡G‚G�A�q�M„M€MØ
0€Cå	ŒÕ*°#Ð	6Ñ	6Ô	6ð ð Ø�Š•aÑÔÐðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÄD/Ä/D3Ä6D3c                  óÐ  — t          dd¬¦  «        } |                      t          t          ¦  «                             t          ¦  «        }|                      t          ¦  «        }t          dd¬¦  «        } |                      t          t          ¦  «                             t          ¦  «        }|                      t          ¦  «        }t          dd¬¦  «        } |                      t          t          ¦  «         |                      t          ¦  «        }t          t          j        |¦  «        t          j        |¦  «        ¦  «         t          ||¦  «         t          ||¦  «         d S )Nr   r   rª   r!   r    )	r
   r8   r9   r:   r¬   Údecision_functionr   r?   Úabs)rH   r®   Údecision_svdr¯   Údecision_eigenÚdecision_lsqrs         rN   Útest_lda_solver_agreementr·   (  s  € å
$¨EÀÐ
BÑ
BÔ
B€CØŸš¥¥1™œ×/Ò/µÑ2Ô2ÐØ×(Ò(­Ñ+Ô+€Lå
$¨GÀ!Ð
DÑ
DÔ
D€CØŸ'š'¥!¥Q™-œ-×1Ò1µ!Ñ4Ô4ÐØ×*Ò*­1Ñ-Ô-€Nå
$¨FÀÐ
CÑ
CÔ
C€CØ‡G‚G�A�q�M„M€MØ×)Ò)­!Ñ,Ô,€Mõ •B”FÐ,Ñ-Ô-­r¬vÐ6IÑ/JÔ/JÑKÔKÐKå�L .Ñ1Ô1Ð1Ý�L -Ñ0Ô0Ð0Ð0Ð0r`   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   ro   )rl   é   )ÚlocÚscalerV   r   )rl   rU   r!   r£   ç      ð?)r   z/Unexpected length for explained_variance_ratio_r   )r?   ÚrandomÚRandomStateÚnormalÚrandintr
   r8   r   Úexplained_variance_ratio_r‚   r­   r   )Ústater9   r:   r§   r¥   s        rN   Ú!test_lda_explained_variance_ratiorÃ   =  sC  € õ ŒI×!Ò! !Ñ$Ô$€EØ�Š˜ #¨HˆÑ5Ô5€AØ�Š�a˜ ˆÑ'Ô'€Aå.°gÐ>Ñ>Ô>€MØ×Ò�a˜ÑÔÐÝ˜Ô?×CÒCÑEÔEÀsÈAÑNÔNÐNØÔ2Ô8¸DÒ@Ð@Ð@Ø9ñ AÔ@Ð@õ -°EÐ:Ñ:Ô:€KØ‡O‚O�A�qÑÔÐÝ˜Ô=×AÒAÑCÔCÀSÈ!ÑLÔLÐLØÔ0Ô6¸$Ò>Ð>Ð>Ø9ñ ?Ô>Ð>õ ØÔ-¨}Ô/Vñô ð ð ð r`   r   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         z
  }|d         |d         z
  }|t          j
        t          j        |dz  ¦  «        ¦  «        z  }|t          j
        t          j        |dz  ¦  «        ¦  «        z  }| 	                    |¦  «        }	|	j        \  }
}t          t          j        |	j        d¬¦  «        t          j        |¦  «        ¦  «         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   T)Úbiasr¼   )r?   r…   rŠ   ÚreshapeÚrepeatÚaranger­   r
   r8   r¬   Úsqrtr‚   r   r[   ÚTÚeyer³   rv   )r&   ÚmeansÚscatterr9   r:   rH   Úmeans_transformedÚd1Úd2ÚtransformedÚ_Úout_dims               rN   Útest_lda_orthogonalityrÖ   Z  s0  € õ
 ŒH�j�j�j ) ) )¨Z¨Z¨Z¸¸¸ÐCÑDÔD€Eõ ŒhàˆKˆKØˆLˆLØˆKˆKØˆLˆLØˆKˆKØˆLˆLð	
ñ	ô 	€Gð 
ˆqˆqˆq•"”*˜a˜a˜aÐÔ	  7­2¬:°q°q°q¸!¸!¸!Ð+;Ô#<Ñ	<×EÒEÀgÑNÔN€AÝ
Œ	•"”)˜EœK¨œNÑ+Ô+¨W¬]¸1Ô-=Ñ>Ô>€Aõ %¨FÐ
3Ñ
3Ô
3×
7Ò
7¸¸1Ñ
=Ô
=€CØŸš eÑ,Ô,Ðà	˜1Ô	Ð 1°!Ô 4Ñ	4€BØ	˜1Ô	Ð 1°!Ô 4Ñ	4€BØ�"Œ'•"”&˜˜Q™‘-”-Ñ
 Ô
 Ñ €BØ�"Œ'•"”&˜˜Q™‘-”-Ñ
 Ô
 Ñ €Bð —-’- Ñ(Ô(€KØÔ"�J€A€wÝ�œ˜{œ}°4Ð8Ñ8Ô8½"¼&À¹/¼/ÑJÔJÐJõ �œ�rœv b¨¨!¨¤f¨q°!¨fÑ5Ô5Ñ6Ô6¸Ñ<Ô<Ð<õ �œ�rœv b¨¨!¨¤f¨q°!¨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 )Nro   iÒ  r   r   r   )rk   r   r   )rn   r   r   )r   ro   i'  rQ   r£   r¼   zusing covariance: %s)r?   r½   r¾   Úuniformrd   r
   r8   Úscore)Únr^   Úx1Úx2Úxr:   r&   rH   s           rN   Útest_lda_scalingrÞ   †  sÿ   € à€AÝ
Œ)×
Ò
 Ñ
%Ô
%€Cð 
�Š�R˜˜Q ˜FÑ	#Ô	# k k kÑ	1€BØ	�Š�R˜˜Q ˜FÑ	#Ô	# j j jÑ	0€BÝ
Œ	�2�r�(ÑÔ˜o˜o˜oÑ-€AØ	ˆˆq‰�A�3˜‘7Ñ€Aà*ð Qð QˆÝ(°Ð7Ñ7Ô7ˆà�wŠw�q˜!‰}Œ}×"Ò" 1 aÑ(Ô(¨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&   rq   g¦µil¯Û?g€aùómÁ¶?g	^á?r   )	r
   r8   ÚX6Úy6Úhasattrr   r‡   r?   r…   )r&   rH   s     rN   Útest_lda_store_covariancerã   —  sp  € ð $ð 
ð 
ˆÝ(°Ð7Ñ7Ô7×;Ò;½BÅÑCÔCˆÝ�s˜MÑ*Ô*Ð*Ð*Ð*õ )°ÈÐNÑNÔN×RÒRÝ•ñ
ô 
ˆõ �s˜MÑ*Ô*Ð*Ð*Ð*å!ØŒO�RœX¨°(Ð';¸hÈÐ=QÐ&RÑSÔSñ	
ô 	
ð 	
ð 	
õ
 %¨EÐ
2Ñ
2Ô
2×
6Ò
6µr½2Ñ
>Ô
>€CÝ�s˜MÑ*Ô*Ð*Ð*Ð*õ %¨FÀTÐ
JÑ
JÔ
J×
NÒ
NÍrÕSUÑ
VÔ
V€CÝ�3˜Ñ&Ô&Ð&Ð&Ð&åØŒ�œ H¨hÐ#7¸(ÀHÐ9MÐ"NÑOÔOñô ð ð ð r`   Úseedrn   c                 óÂ  — t           j                             | ¦  «        }|                     dd¦  «        }|                     dd¬¦  «        }t          ddd¬¦  «        }t          dt          d¬	¦  «        d¬
¦  «        }|                     ||¦  «         |                     ||¦  «         t          |j	        |j	        ¦  «         t          |j
        |j
        ¦  «         d S )Nro   rn   r   rU   Tr(   r    ©rq   r'   r&   )r'   ©rq   r/   r&   )r?   r½   r¾   ÚrandrÀ   r
   r   r8   r   r†   r‡   )rä   r^   r9   r:   Úc1Úc2s         rN   Útest_lda_shrinkagerë   µ  sÐ   € õ Œ)×
Ò
 Ñ
%Ô
%€CØ�Š��bÑÔ€AØ�Š�A˜SˆÑ"Ô"€AÝ	#°TÀSÐQWÐ	XÑ	XÔ	X€BÝ	#ØÝ-¸Ð<Ñ<Ô<Øð
ñ 
ô 
€Bð
 ‡F‚Fˆ1ˆa�L„L€LØ‡F‚Fˆ1ˆa�L„L€LÝ�B”I˜rœyÑ)Ô)Ð)Ý�B”N B¤NÑ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‡   ©Úselfr9   ÚscÚX_scÚss        rN   r8   z7test_lda_ledoitwolf.<locals>.StandardizedLedoitWolf.fitÍ  óq   € ÝÑ!Ô!ˆBØ×#Ò# AÑ&Ô&ˆDÝ˜DÑ!Ô! !Ô$ˆAà”	˜!˜!˜!�RœZ˜-Ô(¨1Ñ,¨r¬y½¼ÀQÀQÀQ¸Ô/GÑGˆAØ ˆDÔÐÐr`   N©Ú__name__Ú
__module__Ú__qualname__r8   rb   r`   rN   ÚStandardizedLedoitWolfrî   Ì  ó#   € € € € € ð	!ð 	!ð 	!ð 	!ð 	!r`   rþ   r   ro   rn   r   ©ro   rU   Tr"   r    ræ   rç   )
r?   r½   r¾   rè   rÀ   r
   r8   r   r†   r‡   )rþ   r^   r9   r:   ré   rê   s         rN   Útest_lda_ledoitwolfr  È  sþ   € ð!ð !ð !ð !ð !ñ !ô !ð !õ Œ)×
Ò
 Ñ
"Ô
"€CØ�Š��bÑÔ€AØ�Š�A˜FˆÑ#Ô#€AÝ	#Ø¨¸ð
ñ 
ô 
€Bõ 
$ØØ3Ð3Ñ5Ô5Øð
ñ 
ô 
€Bð
 ‡F‚Fˆ1ˆa�L„L€LØ‡F‚Fˆ1ˆa�L„L€LÝ�B”I˜rœyÑ)Ô)Ð)Ý�B”N B¤NÑ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   rn   r   )r«   z#n_components cannot be larger than r1   )r   Úrandnr?   Útilerg   Úminr
   r8   ÚmaxrC   rD   rF   )
rP   r¢   r^   r]   r9   r:   Úmax_componentsr«   rŽ   r›   s
             rN   Útest_lda_dimension_warningr  æ  sq  € õ ˜QÑ
Ô
€CØ€IØ�	Š	�)˜ZÑ(Ô(€Aõ 	Œ•�iÑ Ô  )¨yÑ"8¸1Ñ"<Ñ=Ô=¸j¸y¸jÔI€AÝ˜ Y°¡]Ñ3Ô3€Nà'¨!Ñ+¨T°>ÐBð ð ˆå(°lÐCÑCÔCˆØ�Š��1‰Œˆˆà'¨!Ñ+­S°¸YÈ¹]Ñ-KÔ-KÈaÑ-OÐPð ð ˆõ
 )°lÐCÑCÔCˆØ3ˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	ð 	Ø�GŠG�A�q‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øðð s   Ã&D	Ä	D	ÄD	zdata_type, expected_typec                 óò   — t           D ]n\  }}t          ||¬¦  «        }|                     t                               | ¦  «        t
                               | ¦  «        ¦  «         |j        j        |k    sJ ‚Œod S )Nr%   )r7   r
   r8   r9   Úastyper:   r¤   r   )Ú	data_typeÚexpected_typer&   r'   rH   s        rN   Útest_lda_dtype_matchr    sx   € õ .ð 0ð 0Ñˆ�	Ý(°À)ÐLÑLÔLˆØ�Š•—’˜Ñ#Ô#¥Q§X¢X¨iÑ%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*   )r7   r
   r8   r9   r
  r?   Úfloat32r:   Úfloat64r   r¤   )r&   r'   Úclf_32Úclf_64r*   s        rN   Ú,test_lda_numeric_consistency_float32_float64r    sÇ   € Ý-ð ?ð ?Ñˆ�	Ý+°6ÀYÐOÑOÔOˆØ�
Š
•1—8’8�BœJÑ'Ô'­¯ªµ"´*Ñ)=Ô)=Ñ>Ô>Ð>Ý+°6ÀYÐOÑOÔOˆØ�
Š
•1—8’8�BœJÑ'Ô'­¯ªµ"´*Ñ)=Ô)=Ñ>Ô>Ð>ð ˆÝ˜œ f¤l¸Ð>Ñ>Ô>Ð>Ð>ð?ð ?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   r8   rà   rá   r;   r   ÚX7r=   r>   r   r?   r@   Úy7rB   rC   rD   rF   Úy4)r&   rH   rI   rJ   rK   rL   rM   s          rN   Útest_qdar    s¡  € õ
 (¨vÐ
6Ñ
6Ô
6€CØ�WŠW•R�‰_Œ_×$Ò$¥RÑ(Ô(€FÝ�v�rÑ"Ô"Ð"ð �gŠg•b�"‰oŒo×%Ò%¥bÑ)Ô)€GÝ�w¥Ñ#Ô#Ð#ð ×%Ò%¥bÑ)Ô)€MÝ˜ a a a¨ dÔ+¨cÒ1°QÑ6½Ñ;Ô;Ð;Ø×-Ò-­bÑ1Ô1ÐÝ�bœfÐ%6Ñ7Ô7¸ÈÑJÔJÐJà�gŠg•b�"‰oŒo×%Ò%¥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.   r0   r1   r3   z7covariance_estimator is not supported with solver='svd'r   r4   )r   rC   rD   rE   r8   r9   r:   r   rF   r   r   )rH   s    rN   Útest_qda_covariance_estimatorr  9  s†  € õ (¨uÀÐ
GÑ
GÔ
G€CÝ	ŒÕ*Ñ	+Ô	+ð ð Ø�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ (Ø #Õ<LÑ<NÔ<Nðñ ô €Cõ 
ŒÝð.ð
ñ 
ô 
ð ð ð 	�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ (¨uÍ:É<Ì<Ð
XÑ
XÔ
X€CÝ	ŒÝÐSð
ñ 
ô 
ð ð ð 	�Š••1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ (Ø­V¸qÈÐ-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        rN   r8   z7test_qda_ledoitwolf.<locals>.StandardizedLedoitWolf.fit`  rù   r`   Nrú   rb   r`   rN   rþ   r  _  rÿ   r`   rþ   ro   rn   r   r   rU   Tr"   r!   ræ   rç   )
r?   r½   r¾   rè   rÀ   r   r8   r   r†   r‡   )Úglobal_random_seedrþ   r^   r9   r:   ré   rê   s          rN   Útest_qda_ledoitwolfr!  [  sÿ   € ð!ð !ð !ð !ð !ñ !ô !ð !õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�Š��bÑÔ€AØ�Š�A˜FˆÑ#Ô#€AÝ	&Ø¨¸ð
ñ 
ô 
€Bõ 
'ØØ3Ð3Ñ5Ô5Øð
ñ 
ô 
€Bð
 ‡F‚Fˆ1ˆa�L„L€LØ‡F‚Fˆ1ˆa�L„L€LÝ�B”I˜rœyÑ)Ô)Ð)Ý�B”N B¤NÑ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	|› �¬
¦  «         t	          |j        |         |j        |         d|› �¬
¦  «         Œ}d S )Nr   ro   r¼   ç      @)r]   r¢   r\   Úcluster_stdri   r   r£   r!   z)SVD and Eigen rotations differ for class )r,   z(SVD and Eigen scalings differ for class )	r	   r   r8   rg   r   r?   r³   Ú
rotations_Ú	scalings_)	r   r¢   rP   r]   r9   r:   Úclf_svdÚ	clf_eigenÚ	class_idxs	            rN   Útest_qda_coefsr*  y  s2  € à€JØ€IØ€IÝØØØØ˜#�JØ'ðñ ô �D€A€qõ ,°5Ð9Ñ9Ô9€GÝ-°WÐ=Ñ=Ô=€Ià‡K‚K��1ÑÔÐØ‡M‚M�!�QÑÔÐå˜9Ñ%Ô%ð 

ð 

ˆ	ÝÝŒF�7Ô% iÔ0Ñ1Ô1ÝŒF�9Ô'¨	Ô2Ñ3Ô3ØKÀ	ÐKÐKð	
ñ 	
ô 	
ð 	
õ
 	ØÔ˜iÔ(ØÔ 	Ô*ØJ¸yÐ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£   r   g ÂëþKH´9r   )r&   r–   )r   r8   r9   r:   r;   r?   r‚   r…   )r&   rH   rI   Ún_posÚnegÚn_pos2s         rN   Útest_qda_priorsr/  ™  s±   € å
'¨vÐ
6Ñ
6Ô
6€CØ�WŠW•Q�‰]Œ]×"Ò"¥1Ñ%Ô%€FÝŒF�6˜Q’;ÑÔ€Eà
€CÝ
'¨v½b¼hÈÈQÐQTÉWÀ~Ñ>VÔ>VÐ
WÑ
WÔ
W€CØ�WŠW•Q�‰]Œ]×"Ò"¥1Ñ%Ô%€FÝŒV�F˜a’KÑ Ô €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   r8   rà   rá   Ú
isinstancerš   r?   Úndarrayr   )r0  r–   rH   s      rN   Útest_qda_prior_typer6  §  sv   € ð �3ˆZ€FÝ
'Ý! 3¨ *¨kÑ:Ô:ðñ ô ç	‚c�"�b�k„kð õ �c”k¥2¤:Ñ.Ô.Ð.Ð.Ð.Ý�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   r8   r9   r:   r   rš   r–   )r–   Úqdas     rN   Útest_qda_prior_copyr:  ²  sy   € åŒX�s˜C�jÑ!Ô!€FÝ
'¨vÐ
6Ñ
6Ô
6×
:Ò
:½1½aÑ
@Ô
@€Cõ �s”{ C¤JÑ/Ô/Ð/ð €Fˆ1�IØŒ;�qŒ>˜SœZ¨œ]Ò*Ð*Ð*Ð*Ð*Ð*r`   c                 ó`  — t          | ¬¦  «                             t          t          ¦  «        }t	          |d¦  «        rJ ‚t          d| ¬¦  «                             t          t          ¦  «        }t	          |d¦  «        sJ ‚t          ¦   «                              t          t          dk    f         ¦  «        j        }t          |j        d         |¦  «         t          ¦   «                              t          t          dk    f         ¦  «        j        }t          |j        d         |¦  «         d S )Nr£   r‡   T)rq   r&   r   r   r   )r   r8   rà   rá   râ   r   r‡   r   )r&   rH   Ú
class1_covÚ
class2_covs       rN   Útest_qda_store_covariancer>  ¿  sû   € õ (¨vÐ
6Ñ
6Ô
6×
:Ò
:½2½rÑ
BÔ
B€CÝ�s˜MÑ*Ô*Ð*Ð*Ð*õ (¸ÀfÐ
MÑ
MÔ
M×
QÒ
QÝ
�Bñô €Cõ �3˜Ñ&Ô&Ð&Ð&Ð&å$Ñ&Ô&×*Ò*­2­b°Aªg¨h¬<Ñ8Ô8ÔD€JÝ˜cœo¨aÔ0°*Ñ=Ô=Ð=å$Ñ&Ô&×*Ò*­2­b°Aªg¨h¬<Ñ8Ô8ÔD€JÝ˜cœo¨aÔ0°*Ñ=Ô=Ð=Ð=Ð=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£   r1   r   r„   )r&   Ú	reg_paramr!   r%   Úerror)é	   é   rU   )	r   r   r   r   r   r   r   r   r   z When using `solver='svd'`g333333Ó?)r?   r½   Údefault_rngr   rC   rD   r   ÚLinAlgErrorr8   ÚX2rá   ÚAttributeErrorr;   ÚwarningsÚcatch_warningsÚsimplefilterr   r¿   r…   )	r   r&   r^   r›   rH   rI   r9   r:   Úmsg2s	            rN   Útest_qda_regularizationrL  Ò  sÌ  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€Cð A€CÝ
'¨vÐ
6Ñ
6Ô
6€CÝ	Œ•vÔ)°Ð	5Ñ	5Ô	5ð ð Ø�Š••B‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð õ 
Œ•~Ñ	&Ô	&ð !ð !Ø—’�R‘”ˆð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð �‚€Ý+°6ÀTÐJÑJÔJˆˆØ	�7Ò	Ð	Ý+°6ÀTÐJÑJÔJˆÝ	Ô	 Ñ	"Ô	"ð 'ð 'ÝÔ˜gÑ&Ô&Ð&ð'ð 'ð 'ñ 'ô 'ð 'ð 'ð 'ð 'ð 'ð 'øøøð 'ð 'ð 'ð 'à‡G‚G�B•�O„O€OØ�[Š[�‰_Œ_€FÝ�v�rÑ"Ô"Ð"ð 	�
Š
˜ˆ
ÑÔ€AÝ
ŒÐ,Ð,Ð,Ñ-Ô-€Aå
'¨vÐ
6Ñ
6Ô
6€CØ�‚€ØÐ1Ñ1ˆˆØ	�7Ò	Ð	Øˆå	Œ•vÔ)°Ð	6Ñ	6Ô	6ð ð Ø�Š��1‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð
 �‚€Ý+°6ÀSÐIÑIÔIˆÝŒ]�6Ô-°TÐ:Ñ:Ô:ð 	ð 	Ø�GŠG�A�q‰MŒMˆMð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	ð 
�7Ò	Ð	Ý+°6ÀSÐ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 )	Nro   rÅ   r   rp   r¡   r   Ú	empiricalr"   )	r	   r?   rv   rÊ   r­   rÈ   r   r   rÌ   )rÝ   r:   Úc_eÚc_ss       rN   Útest_covariancerQ    s¥   € Ý °¸1È2ÐNÑNÔN�D€A€qõ 	Œˆq•"”)˜AœG AœJ¨!™OÑ,Ô,×4Ò4°Q´W¸Q´ZÀÄÈÄÑLÔLÑMÔM€Aå
ˆq�+Ñ
Ô
€CÝ˜˜SœUÑ#Ô#Ð#å
ˆq�&‰/Œ/€CÝ˜˜SœUÑ#Ô#Ð#Ð#Ð#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 morer1   N)r?   r…   r
   rC   rD   rF   r8   ©r&   r9   r:   rH   s       rN   Ú=test_raises_value_error_on_same_number_of_classes_and_samplesrV    sÎ   € õ 	Œ�3˜�*˜s C˜jÐ)Ñ*Ô*€AÝ
Œ�#�s�ÑÔ€AÝ
$¨FÐ
3Ñ
3Ô
3€CÝ	Œ•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š™™™™™Ù?)rS  rS  rS  rT  r£   zy has only 1 sample in classr1   N)r?   r…   r   rC   rD   rF   r8   rU  s       rN   Ú/test_raises_value_error_on_one_sample_per_classrX  "  sÝ   € õ
 	Œ�3˜�*˜s C˜j¨3°¨*°s¸C°jÐAÑBÔB€AÝ
ŒÐ%Ð%Ð%Ñ&Ô&€AÝ
'¨vÐ
6Ñ
6Ô
6€CÝ	Œ•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 rb   rb   )rY   ÚiÚclass_name_lowers     €rN   r_   z.test_get_feature_names_out.<locals>.<listcomp>6  s4   ø€ ð 	
ð 	
ð 	
àð  Ð$ Ð$Ð$ð	
ð 	
ð 	
r`   r   r   N)r
   r8   r9   r:   Úget_feature_names_outÚlowerr?   r…   rg   rÁ   r­   Úobjectr   )ÚestÚ	names_outÚexpected_names_outr\  s      @rN   Útest_get_feature_names_outrc  .  s±   ø€ õ %Ñ
&Ô
&×
*Ò
*­1­aÑ
0Ô
0€CØ×)Ò)Ñ+Ô+€Ià3×9Ò9Ñ;Ô;ÐÝœð	
ð 	
ð 	
ð 	
å˜3Ô8Ô>¸qÔAÑBÔBð	
ñ 	
ô 	
õ ðñ ô Ðõ �yÐ"4Ñ5Ô5Ð5Ð5Ð5r`   é   Ú
train_sizero   Ú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#  rU   r8  r¼   r   r   )Úaxisr   rÅ   )Ún_splitsre  ri   r!   r"   r%   Úd2_brier_score)ÚcvÚscoringgÍÌÌÌÌÌì?r—   )r?   r½   rD  rØ   Úconcatenater  rË   r…   r   r   r   rZ   )r   r¢   re  rf  r]   r^   Úvars1Úvars2r9   r:   rk  Úqda_shrinkageÚqda_no_shrinkageÚscores_no_shrinkageÚscores_shrinkages                  rN   Útest_qda_shrinkage_performancert  ?  s²  € ð €IØ€Jå
Œ)×
Ò
Ð 2Ñ
3Ô
3€Cð �KŠK˜˜S zˆKÑ2Ô2€EØ�KŠK˜˜S zˆKÑ2Ô2€Eå
ŒåŒI�OŠO˜I¨™N¨JÑ7Ô7½"¼'À%¹.¼.ÑHÝŒI�OŠO˜I¨™N¨JÑ7Ô7½"¼'À%¹.¼.ÑHð	
ð ð	ñ 	ô 	€Aõ 	Œ�!�˜	 Q™Ñ'¨1¨#°¸a±Ñ*@Ñ@ÑAÔA€Aõ 
˜q¨ZÀaÐ	HÑ	HÔ	H€BÝ1¸ÈFÐSÑSÔS€MÝ4Ø"¨dðñ ô Ðõ *Ø˜!˜Q 2Ð/?ðñ ô Ðõ 'Ø�q˜! Ð,<ðñ ô Ðð × Ò Ñ"Ô" SÒ(Ð(Ð(Ð(Ø×#Ò#Ñ%Ô%¨Ò+Ð+Ð+Ð+Ð+Ð+r`   c                  óN  — t          d¬¦  «        } t          d¬¦  «        }|                      t          t          ¦  «         |                     t          t          ¦  «         |                      t          ¦  «        }|                     t          ¦  «        }t          ||¦  «         d S )Nr   r£   r!   )r   r8   rà   rá   r²   r   )Úqda_svdÚ	qda_eigenr´   rµ   s       rN   Útest_qda_solver_agreementrx  m  s†   € Ý+°5Ð9Ñ9Ô9€GÝ-°WÐ=Ñ=Ô=€Ià‡K‚K••BÑÔÐØ‡M‚M•"•bÑÔÐà×,Ò,­RÑ0Ô0€LØ×0Ò0µÑ4Ô4€Nå�L .Ñ1Ô1Ð1Ð1Ð1r`   )QrH  Únumpyr?   rC   Úscipyr   Úsklearn.clusterr   Úsklearn.covariancer   r   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…   r9   r:   rA   r<   rà   rá   r  r  rF  r  r7   rO   ÚmarkÚparametrizer“   r�   r¨   r°   r·   rÃ   rÖ   rÞ   rã   rg   rë   r  r  r  r  Úint32Úint64r  r  r  r  r!  r*  r/  r6  r:  r>  rL  rQ  rV  rX  rc  rt  rx  rb   r`   rN   ú<module>r‡     s™  ðØ €€€à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "ðð ð ð ð ð ð ð ð ð ð ð ð (Ð 'Ð 'Ð 'Ð 'Ð 'ðð ð ð ð ð ð ð ð ð ð
 BÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ð ð €B„Hˆr�2ˆh˜˜R˜ 2 r (¨Q°¨F°Q¸°F¸QÀ¸FÐCÈ3ÐOÑOÔO€Ø€B„HÐÐÐÑ Ô €Ø€R„XÐ Ð Ð Ñ!Ô!€ð €R„XØ€TˆBˆ4�"�˜�s˜Q˜C ! Ð%Ø
ðñ ô €ð €R„XØˆ€Vˆb�"ˆX˜˜B�x " b ¨B°¨8°a¸°V¸aÀ¸VÀaÈÀVÈaÐQRÈVÐTñô €ð €R„XÐ)Ð)Ð)Ñ*Ô*€Ø€R„XÐ)Ð)Ð)Ñ*Ô*€ð €R„X�ˆt�b�T˜B˜4 " ¨ s¨Q¨C°!°°q°c¸A¸3Ð?Ñ@Ô@€ð €R„XØˆ!€Wˆr�1ˆg˜˜A�w  Q ¨!¨Q¨°!°Q°¸!¸Q¸À!ÀQÀÈ!ÈQÈÐPñô €ð
 €R„XÐ)Ð)Ð)Ñ*Ô*€ð
ð 
ð 
Ð ð<ð <ð <ð~ „×Ò˜ q¨! fÑ-Ô-Ø„×Ò˜Ð#;Ð#;Ð#;Ñ<Ô<ð[ð [ñ =Ô<ñ .Ô-ð[ð|:ð :ð :ð2Gð Gð Gð,ð ð ð"1ð 1ð 1ð*ð ð ð: „×Ò˜ E¨7Ð#3Ñ4Ô4ð(=ð (=ñ 5Ô4ð(=ðVQð Qð Qð"ð ð ð< „×Ò˜   r¡¤Ñ+Ô+ð4ð 4ñ ,Ô+ð4ð$4ð 4ð 4ð< „×Ò˜¨¨1 vÑ.Ô.Ø„×Ò˜ q¨! fÑ-Ô-ðð ñ .Ô-ñ /Ô.ðð2 „×ÒØà	Œ�R”ZÐ Ø	Œ�R”ZÐ Ø	Œ�2”:ÐØ	Œ�2”:Ðð	ñô ð0ð 0ñô ð0ð	?ð 	?ð 	?ð „×Ò˜ E¨7Ð#3Ñ4Ô4ðð ñ 5Ô4ðð6ð ð ðD4ð 4ð 4ð<
ð 
ð 
ð@ „×Ò˜ E¨7Ð#3Ñ4Ô4ð
ð 
ñ 5Ô4ð
ð „×Ò˜Ð(BÐ(BÐ(BÑCÔCð,ð ,ñ DÔCð,ð
+ð 
+ð 
+ð „×Ò˜ E¨7Ð#3Ñ4Ô4ð>ð >ñ 5Ô4ð>ð$ „×Ò˜ E¨7Ð#3Ñ4Ô4ð2ð 2ñ 5Ô4ð2ðj
$ð 
$ð 
$ð „×Ò˜Ð#;Ð#;Ð#;Ñ<Ô<ð	ð 	ñ =Ô<ð	ð „×Ò˜ E¨7Ð#3Ñ4Ô4ðð ñ 5Ô4ðð6ð 6ð 6ð" „×Ò˜¨ tÑ,Ô,Ø„×Ò˜¨ uÑ-Ô-Ø„×ÒÐ.°¸Ð0@ÑAÔAð(,ð (,ñ BÔAñ .Ô-ñ -Ô,ð(,ðV
2ð 
2ð 
2ð 
2ð 
2r`   