§
    qŠtj9¢  ã                   óà  — d dl Z d dlZd dlZd dlZd dlZd dlmZ d dl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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  d dl!m"Z" d dl#m$Z$m%Z%m&Z&  e
j        ¦   «         Z'g d¢Z(d\  Z)Z* e+e)e*¦  «        Z,dd„Z-ej.         /                    de(¦  «        ej.         /                    d e0de'j1        j2        d         ¦  «        ¦  «        d„ ¦   «         ¦   «         Z3ej.         /                    dg d¢¦  «        ej.         /                    dg d¢¦  «        ej.         /                    de%e$z   ¦  «        ej.         /                    dddg¦  «        ej.         /                    dg d¢¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z4ej.         /                    de%e$z   ¦  «        d „ ¦   «         Z5ej.         /                    dd!d"g¦  «        ej.         /                    de%e$z   ¦  «        d#„ ¦   «         ¦   «         Z6ej.         /                    de%e$z   ¦  «        d$„ ¦   «         Z7d%„ Z8ej.         /                    d&d'd(g¦  «        ej.         /                    d)e(¦  «        d*„ ¦   «         ¦   «         Z9ej.         /                    d+ e: e; e<e(¦  «        d"d,hz
  ¦  «        ¦  «        ¦  «        ej.         /                    d-d.d/g¦  «        ej.         /                    d0d(d'g¦  «        ej.         /                    d1d(d'g¦  «        d2„ ¦   «         ¦   «         ¦   «         ¦   «         Z=ej.         /                    d3ej>         ?                    d ¦  «         @                    d4d5¦  «         e
j        d4d5d6d ¬7¦  «        d          ej>         ?                    d ¦  «         @                    d8d4¦  «        gg d9¢¬:¦  «        ej.         /                    de(¦  «        d;„ ¦   «         ¦   «         ZAej.         /                    ddd!g¦  «        d<„ ¦   «         ZBej.         /                    de(¦  «        d=„ ¦   «         ZCej.         /                    de(¦  «        d>„ ¦   «         ZDej.         /                    de(¦  «        d?„ ¦   «         ZEej.         /                    dg d@¢¦  «        ej.         /                    d1d(d'g¦  «        dA„ ¦   «         ¦   «         ZFej.         /                    dB ejG        g dC¢g dD¢g¦  «         ejG        g dC¢g dD¢g¦  «        jH        g¦  «        ej.         /                    dEg dF¢¦  «        dG„ ¦   «         ¦   «         ZIej.         /                    dHd" e+e'j1        j2        ¦  «        fd e+e'j1        j2        ¦  «        dz
  fd! e+e'j1        j2        ¦  «        fg¦  «        ej.         /                    dBe'j1        e'j1        jH        g¦  «        dI„ ¦   «         ¦   «         ZJej.         /                    dd,d"g¦  «        dJ„ ¦   «         ZKej.         /                    ddd!g¦  «        dK„ ¦   «         ZLdL„ ZMdM„ ZNdN„ ZOdO„ ZPej.         /                    dPe'j1        dQdRfe'j1        dSdfej>         ?                    d ¦  «         Q                    dTdU¦  «        dVdRfg¦  «        dW„ ¦   «         ZRej.         /                    de(¦  «        dX„ ¦   «         ZSdY„ ZTej.         /                    de(¦  «        dZ„ ¦   «         ZUej.         /                    ddd!g¦  «        d[„ ¦   «         ZVej.         /                    dd"d!g¦  «        d\„ ¦   «         ZWej.         /                    d]g d^¢¦  «        d_„ ¦   «         ZXej.         /                    de(¦  «        d`„ ¦   «         ZYej.         /                    de(¦  «        da„ ¦   «         ZZdb„ Z[dc„ Z\dd„ Z]de„ Z^df„ Z_dg„ Z`dh„ Zadi„ Zbdj„ Zcdk„ Zddl„ Zeej.         /                    d&d'd(g¦  «        dm„ ¦   «         Zfdn„ Zgej.         /                    do e¦   «         ¦  «        ej.         /                    dpe"egge¬:¦  «        ej.         /                    dq edRd"¬r¦  «         edRd"d'¬s¦  «         edtd"d'¬s¦  «         edRd¬r¦  «         edRdd'¬s¦  «         edRd!dud ¬v¦  «        ge¬:¦  «        dw„ ¦   «         ¦   «         ¦   «         Zhej.         /                    do e¦   «         ¦  «        ej.         /                    dpegge¬:¦  «        ej.         /                    dq edxd"¬r¦  «        ge¬:¦  «        dy„ ¦   «         ¦   «         ¦   «         Ziej.         j                    e jk         l                    dz¦  «        d{k    d|¬}¦  «        d~„ ¦   «         ZmdS )€é    N)Úassert_array_equal)Úconfig_contextÚdatasets)Úclone)Ú	load_irisÚmake_classificationÚmake_low_rank_matrix)ÚPCA)Ú_assess_dimensionÚ_infer_dimension)Ú_atol_for_typeÚmove_toÚ)yield_namespace_device_dtype_combinations©Údevice)Ú_get_check_estimator_ids)Ú_array_api_for_testsÚassert_allclose)Ú check_array_api_input_and_values)ÚCSC_CONTAINERSÚCSR_CONTAINERSÚ_sparse_random_array)ÚfullÚcovariance_eighÚarpackÚ
randomizedÚauto)éè  i,  çH¯¼šò×z>çê-�™—q=c                 ó”  — t          | j        |j        ||¬¦  «         t          | j        |j        ||¬¦  «         t          | j        |j        ||¬¦  «         t          | j        |j        ||¬¦  «         t          | j        |j        ||¬¦  «         | j        |j        k    sJ ‚| j        |j        k    sJ ‚| j        |j        k    sJ ‚d S )N©ÚrtolÚatol)	r   Úcomponents_Úexplained_variance_Úsingular_values_Úmean_Únoise_variance_Ún_components_Ú
n_samples_Ún_features_in_)Úpca1Úpca2r#   r$   s       úb/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/decomposition/tests/test_pca.pyÚ_check_fitted_pca_closer0   %   sç   € Ý�DÔ$ dÔ&6¸TÈÐMÑMÔMÐMÝØÔ  $Ô":ÀÈDðñ ô ð õ �DÔ)¨4Ô+@ÀtÐRVÐWÑWÔWÐWÝ�D”J ¤
°¸DÐAÑAÔAÐAÝ�DÔ(¨$Ô*>ÀTÐPTÐUÑUÔUÐUàÔ Ô!3Ò3Ð3Ð3Ð3ØŒ?˜dœoÒ-Ð-Ð-Ð-ØÔ $Ô"5Ò5Ð5Ð5Ð5Ð5Ð5ó    Ú
svd_solverÚn_componentsé   c                 ó  — t           j        }t          || ¬¦  «        }|                     |¦  «                             |¦  «        }|j        d         |k    sJ ‚|                     |¦  «        }t          ||¦  «         |                     |¦  «        }t          ||¦  «         |                     ¦   «         }| 	                    ¦   «         }t          t          j        ||¦  «        t          j        |j        d         ¦  «        d¬¦  «         d S )N©r3   r2   r4   r    ©r$   )ÚirisÚdatar
   ÚfitÚ	transformÚshapeÚfit_transformr   Úget_covarianceÚget_precisionÚnpÚdotÚeye)r2   r3   ÚXÚpcaÚX_rÚX_r2ÚcovÚ	precisions           r/   Útest_pcarI   3   sô   € õ 	Œ	€AÝ
˜<°JÐ
?Ñ
?Ô
?€Cð �'Š'�!‰*Œ*×
Ò
˜qÑ
!Ô
!€CØŒ9�QŒ<˜<Ò'Ð'Ð'Ð'ð ×Ò˜QÑÔ€DÝ�C˜ÑÔÐØ
�-Š-˜Ñ
Ô
€CÝ�C˜ÑÔÐð ×
Ò
Ñ
Ô
€CØ×!Ò!Ñ#Ô#€IÝ•B”F˜3 	Ñ*Ô*­B¬F°1´7¸1´:Ñ,>Ô,>ÀUÐKÑKÔKÐKÐKÐKr1   Údensity)ç{®Gáz„?çš™™™™™¹?g333333Ó?)r4   é   é
   Úsparse_containerr   r   Úscale)r4   rN   éd   c                 óH  — d}d}t           j                             | ¦  «        } |t          t          t
          f||¬¦  «        ¦  «        }	|                     |	j        d         ¦  «        |z  }
|	                     |
¦  «        }	t          ||| ¬¦  «        }| 	                    |	¦  «         |	 
                    ¦   «         }t          ||| ¬¦  «        }| 	                    |¦  «         t          |||¬¦  «          |t          t          t
          f||¬¦  «        ¦  «        }| 
                    ¦   «         }t          |                     |¦  «        |                     |¦  «        |¬¦  «         t          |                     |¦  «        |                     |¦  «        |¬¦  «         dS )z?Check that the results are the same for sparse and dense input.r    ç»½×Ùß|Û=©ÚrngrJ   r4   ©r3   r2   Úrandom_stater7   N)r@   ÚrandomÚdefault_rngr   ÚSPARSE_MÚSPARSE_Nr<   Úmultiplyr
   r:   Útoarrayr0   r   r;   )Úglobal_random_seedr2   rO   r3   rJ   rP   r$   Útransform_atolrU   rC   Úscale_vectorrD   ÚXdÚpcadÚX2ÚX2ds                   r/   Útest_pca_sparsere   I   s–  € ð €DØ€Nå
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØÐÝ�h­Ð1°sÀGÐLÑLÔLñ	ô 	€Að —:’:˜aœg aœjÑ)Ô)¨EÑ1€LØ	�
Š
�<Ñ Ô €Aå
Ø!ØØ'ðñ ô €Cð
 ‡G‚GˆA�J„J€Jà	
�Š‰Œ€BÝØ!ØØ'ðñ ô €Dð
 	‡H‚HˆR�L„L€Lõ ˜C ¨DÐ1Ñ1Ô1Ð1ð 
Ð	Ý�h­Ð1°sÀGÐLÑLÔLñ
ô 
€Bð �*Š*‰,Œ,€Cå�C—M’M "Ñ%Ô% s§}¢}°SÑ'9Ô'9ÀÐOÑOÔOÐOÝ�C—M’M "Ñ%Ô% t§~¢~°cÑ':Ô':ÀÐPÑPÔPÐPÐPÐPr1   c                 ó€  — t           j                             | ¦  «        }t          t          f} |t          ||d¬¦  «        ¦  «        } |t          ||d¬¦  «        ¦  «        }t          dd| ¬¦  «        }t          dd| ¬¦  «        }|                     |¦  «         |                     |¦  «        }t          ||¦  «         t          ||                     |¦  «        ¦  «         t          ||                     |¦  «        ¦  «         t          |                     |¦  «        |                     |¦  «        ¦  «         d S )NrK   rT   rN   r   rV   )r@   rX   rY   rZ   r[   r   r
   r:   r=   r0   r   r;   )	r^   rO   rU   ÚshprC   rc   Úpca_fitÚpca_fit_transformÚtransformed_Xs	            r/   Útest_pca_sparse_fit_transformrk   |   s9  € å
Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝ•XÐ
€CØÐÕ-¨c°sÀDÐIÑIÔIÑJÔJ€AØ	Ð	Õ.¨s¸ÀTÐJÑJÔJÑ	KÔ	K€Bå˜r¨hÐEWÐXÑXÔX€GÝØ HÐ;Mðñ ô Ðð ‡K‚K��N„N€NØ%×3Ò3°AÑ6Ô6€Må˜GÐ%6Ñ7Ô7Ð7Ý�MÐ#4×#>Ò#>¸qÑ#AÔ#AÑBÔBÐBÝ�M 7×#4Ò#4°QÑ#7Ô#7Ñ8Ô8Ð8Ý�G×%Ò% bÑ)Ô)Ð+<×+FÒ+FÀrÑ+JÔ+JÑKÔKÐKÐKÐKr1   r   r   c                 óP  — t           j                             | ¦  «        } |t          t          t
          f|¬¦  «        ¦  «        }t          d|¬¦  «        }d|› d�}t          j        t          |¬¦  «        5  | 
                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N©rU   é   r6   zWPCA only support sparse inputs with the "arpack" and "covariance_eigh" solvers, while "z" was passed©Úmatch)r@   rX   ÚRandomStater   rZ   r[   r
   ÚpytestÚraisesÚ	TypeErrorr:   )r^   r2   rO   rU   rC   rD   Úerror_msg_patterns          r/   Útest_sparse_pca_solver_errorrv   ‘   sö   € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØÐÕ-­x½Ð.BÈÐLÑLÔLÑMÔM€AÝ
˜2¨*Ð
5Ñ
5Ô
5€Cð	5Ø&ð	5ð 	5ð 	5ð õ 
Œ•yÐ(9Ð	:Ñ	:Ô	:ð ð Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á8BÂBÂ"Bc                 óX  — t           j                             | ¦  «        } |t          t          t
          f|¬¦  «        ¦  «        }t          dd¬¦  «                             |¦  «        }t          dd¬¦  «                             |¦  «        }t          |j	        |j	        d¬¦  «         dS )	zHCheck that "auto" and "arpack" solvers are equivalent for sparse inputs.rm   rN   r   r6   r   ç{®Gázt?©r#   N)
r@   rX   rq   r   rZ   r[   r
   r:   r   r'   )r^   rO   rU   rC   Ú
pca_arpackÚpca_autos         r/   Ú7test_sparse_pca_auto_arpack_singular_values_consistencyr|   Ÿ   sŸ   € õ
 Œ)×
Ò
Ð 2Ñ
3Ô
3€CØÐÕ-­x½Ð.BÈÐLÑLÔLÑMÔM€AÝ "°Ð:Ñ:Ô:×>Ò>¸qÑAÔA€JÝ ¨vÐ6Ñ6Ô6×:Ò:¸1Ñ=Ô=€HÝ�JÔ/°Ô1JÐQUÐVÑVÔVÐVÐVÐVr1   c                  ó2  — d} | dz   }t           j                             dd| |f¬¦  «        }t          | ¬¦  «        }t	          j        ¦   «         5  t	          j        dt          ¦  «         |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrN   rM   éÿÿÿÿr4   ©Úsize©r3   Úerror)	r@   rX   Úuniformr
   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr:   )r3   Ú
n_featuresrC   rD   s       r/   Útest_no_empty_slice_warningr‰   «   s×   € à€LØ Ñ!€JÝ
Œ	×Ò˜"˜a |°ZÐ&@ÐÑAÔA€AÝ
˜<Ð
(Ñ
(Ô
(€CÝ	Ô	 Ñ	"Ô	"ð ð ÝÔ˜g¥~Ñ6Ô6Ð6Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á0BÂBÂBÚcopyTFÚsolverc                 ó4  — t           j                             d¦  «        }d}d}d}d}t          j        |                     ||¦  «        t          j        t          j        t          j        dd|¦  «        ¦  «        |                     ||¦  «        ¦  «        ¦  «        }|d d …d d…fxx         dz  cc<   |j        ||fk    sJ ‚|                     d¬	¦  «                             ¦   «         d
k    sJ ‚| 	                    ¦   «         }t          |d|| dd¬¦  «        }	|	                     | 	                    ¦   «         ¦  «        }
|
j        ||fk    sJ ‚|	                     |¦  «        }t          |
|d¬¦  «         t          |
                     dd¬¦  «        t          j        |¦  «        ¦  «         t          |
                     d¬	¦  «        t          j        |¦  «        d¬¦  «         | 	                    ¦   «         }t          |d|| ¬¦  «                             | 	                    ¦   «         ¦  «        }	|	                     |¦  «        }|j        ||fk    sJ ‚|                     d¬	¦  «                             ¦   «         t%          j        dd¬¦  «        k    sJ ‚d S )Nr   rQ   éP   rn   é2   g      $@ç      ð?é   ©ÚaxisgfffffæE@Té   )r3   ÚwhitenrŠ   r2   rW   Úiterated_powergü©ñÒMb@?ry   r4   ©Úddofr’   r    r7   F)r3   r”   rŠ   r2   gfffff†R@rL   )Úrel)r@   rX   rq   rA   ÚrandnÚdiagÚlinspacer<   ÚstdrŠ   r
   r=   r;   r   ÚonesÚmeanÚzerosr:   rr   Úapprox)r‹   rŠ   rU   Ú	n_samplesrˆ   r3   ÚrankrC   ÚX_rD   Ú
X_whitenedÚX_whitened2ÚX_unwhiteneds                r/   Útest_whiteningr§   ¶   s…  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ€IØ€JØ€LØ€Dõ 	ŒØ�	Š	�)˜TÑ"Ô"Ý
Œ�rŒw•r”{ 4¨¨dÑ3Ô3Ñ4Ô4°c·i²iÀÀjÑ6QÔ6QÑRÔRñ	ô 	€Að €a€a€aˆˆ"ˆ€f€I€I„I��N€I€I�IàŒ7�y *Ð-Ò-Ð-Ð-Ð-ð �5Š5�aˆ5‰=Œ=×ÒÑÔ Ò%Ð%Ð%Ð%ð 
�Š‰Œ€BÝ
Ø!ØØØØØðñ ô €Cð ×"Ò" 2§7¢7¡9¤9Ñ-Ô-€JØÔ 	¨<Ð8Ò8Ð8Ð8Ð8Ø—-’- Ñ#Ô#€KÝ�J °$Ð7Ñ7Ô7Ð7å�J—N’N¨°�NÑ2Ô2µB´G¸LÑ4IÔ4IÑJÔJÐJÝ�J—O’O¨�OÑ+Ô+­R¬X°lÑ-CÔ-CÈ%ÐPÑPÔPÐPà	
�Š‰Œ€BÝ
Ø!¨%°dÀvðñ ô ç	‚cˆ"�'Š'‰)Œ)�n„nð ð —=’= Ñ$Ô$€LØÔ )¨\Ð!:Ò:Ð:Ð:Ð:ð ×Ò ÐÑ#Ô#×'Ò'Ñ)Ô)­V¬]¸4ÀTÐ-JÑ-JÔ-JÒJÐJÐJÐJÐJÐJr1   Úother_svd_solverr   Ú
data_shapeÚtallÚwideÚrank_deficientr”   c                 ó.
  — |dk    rd\  }}nd\  }}d}|rgt           j                             |¦  «        }	t          ||¦  «        dz  }
|	                     ||z   |
f¬¦  «        |	                     |
|f¬¦  «        z  }n&t          ||z   |d|¬¦  «        }t          ||¦  «        }
|                     |d	¬
¦  «        }|d |…         ||d …         }}|t           j        k    rt          dd¬¦  «        }d}nt          dd¬¦  «        }d}i }| dk    rd}ddi}n!| dk    rt          j	        ||¦  «        dz
  }nd }t          |d|¬¦  «        }t          d|| ||dœ|¤Ž}|                     |¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        |k    sJ ‚|                     |¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        |k    sJ ‚|j        dk                         ¦   «         sJ ‚t!          |j        |j        fi |¤Ž t!          |j        |j        fi |¤Ž |j        }t          j        |¦  «                             ¦   «         sJ ‚|j        }t          j        |¦  «                             ¦   «         sJ ‚|j        |k    }|                     ¦   «         dk    sJ ‚t!          ||         ||         fi |¤Ž t!          |d d …|f         |d d …|f         fi |¤Ž |                     |¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        |k    sJ ‚|                     |¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        |k    sJ ‚t!          |d d …|f         |d d …|f         fi |¤Ž |                     |¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        |k    sJ ‚|                     |¦  «        }t          j        |¦  «                             ¦   «         sJ ‚|j        |k    sJ ‚|j        j        d         |j        j        d         k    rt!          ||fi |¤Ž t!          ||fi |¤Ž d S |j        j        d         |
k     r/|j                             ¦   «         |k    sJ ‚t!          ||fi |¤Ž d S t!          |                     |¦  «        d d …|f         |                     |¦  «        d d …|f         fi |¤Ž d S )Nrª   )rQ   rn   )rn   rQ   rN   rM   r   ç      à?)r¡   rˆ   Útail_strengthrW   F©rŠ   g¸…ëQ¸ž?çñhãˆµøä>)r$   r#   rS   r    r   r•   rŽ   r   r4   r   ©r3   r2   r”   )r3   r2   r”   rW   r   © )r@   rX   rY   ÚminÚstandard_normalr	   ÚastypeÚfloat32ÚdictÚminimumr
   r=   ÚisfiniteÚallÚdtyper&   r   Úexplained_variance_ratio_r%   Úsumr;   Úinverse_transformr<   )r¨   r©   r¬   r”   r^   Úglobal_dtyper¡   rˆ   Ún_samples_testrU   r¢   rC   ÚX_trainÚX_testÚtolsÚvariance_thresholdÚextra_other_kwargsr3   Úpca_fullÚ	pca_otherÚX_trans_full_trainÚX_trans_other_trainÚreference_componentsÚother_componentsÚstableÚX_trans_full_testÚX_trans_other_testÚX_recons_full_testÚX_recons_other_tests                                r/   Útest_pca_solver_equivalencerÒ   í   sP  € ð �VÒÐØ 'Ñˆ	�:�:à 'Ñˆ	�:Ø€Nàð *ÝŒi×#Ò#Ð$6Ñ7Ô7ˆÝ�9˜jÑ)Ô)¨QÑ.ˆØ×ÒØ˜nÑ,¨dÐ3ð  ñ 
ô 
à×Ò d¨JÐ%7ÐÑ8Ô8ñ9ˆˆõ !Ø .Ñ0Ø!ØØ+ð	
ñ 
ô 
ˆõ �9˜jÑ)Ô)ˆà	�Š� EˆÑ*Ô*€AØ˜
˜˜
”m Q y z z¤]ˆV€Gà•r”zÒ!Ð!Ý˜ DÐ)Ñ)Ô)ˆØ!ÐÐå˜ UÐ+Ñ+Ô+ˆØ"ÐàÐØ˜<Ò'Ð'ð ˆØ.°Ð3ÐÐØ	˜XÒ	%Ð	%õ ”z )¨ZÑ8Ô8¸1Ñ<ˆˆð ˆå ¸ÈÐOÑOÔO€HÝð Ø!Ø#ØØ'ð	ð ð
 ðð €Ið "×/Ò/°Ñ8Ô8ÐÝŒ;Ð)Ñ*Ô*×.Ò.Ñ0Ô0Ð0Ð0Ð0ØÔ# |Ò3Ð3Ð3Ð3Ø#×1Ò1°'Ñ:Ô:ÐÝŒ;Ð*Ñ+Ô+×/Ò/Ñ1Ô1Ð1Ð1Ð1ØÔ$¨Ò4Ð4Ð4Ð4àÔ(¨AÒ-×2Ò2Ñ4Ô4Ð4Ð4Ð4Ý�HÔ0°)Ô2OÐXÐXÐSWÐXÐXÐXÝØÔ*ØÔ+ðð ð ðð ð ð
 $Ô/ÐÝŒ;Ð+Ñ,Ô,×0Ò0Ñ2Ô2Ð2Ð2Ð2Ø Ô,ÐÝŒ;Ð'Ñ(Ô(×,Ò,Ñ.Ô.Ð.Ð.Ð.ð Ô)Ð,>Ò>€FØ�:Š:‰<Œ<˜!ÒÐÐÐÝÐ(¨Ô0Ð2BÀ6Ô2JÐSÐSÈdÐSÐSÐSõ Ø˜A˜A˜A˜v˜IÔ&Ð(:¸1¸1¸1¸f¸9Ô(Eðð ØIMðð ð ð !×*Ò*¨6Ñ2Ô2ÐÝŒ;Ð(Ñ)Ô)×-Ò-Ñ/Ô/Ð/Ð/Ð/ØÔ" lÒ2Ð2Ð2Ð2Ø"×,Ò,¨VÑ4Ô4ÐÝŒ;Ð)Ñ*Ô*×.Ò.Ñ0Ô0Ð0Ð0Ð0ØÔ# |Ò3Ð3Ð3Ð3ÝÐ& q q q¨& yÔ1Ð3DÀQÀQÀQÈÀYÔ3OÐXÐXÐSWÐXÐXÐXð "×3Ò3Ð4EÑFÔFÐÝŒ;Ð)Ñ*Ô*×.Ò.Ñ0Ô0Ð0Ð0Ð0ØÔ# |Ò3Ð3Ð3Ð3Ø#×5Ò5Ð6HÑIÔIÐÝŒ;Ð*Ñ+Ô+×/Ò/Ñ1Ô1Ð1Ð1Ð1ØÔ$¨Ò4Ð4Ð4Ð4àÔÔ! !Ô$¨Ô(<Ô(BÀ1Ô(EÒEÐEõ 	Ð*¨FÐ;Ð;°dÐ;Ð;Ð;ÝÐ+¨VÐ<Ð<°tÐ<Ð<Ð<Ð<Ð<Ø	Ô	Ô	# AÔ	&¨Ò	-Ð	-ð Ô+×/Ò/Ñ1Ô1Ð4FÒFÐFÐFÐFÝÐ*Ð,?ÐHÐHÀ4ÐHÐHÐHÐHÐHõ 	Ø×ÒÐ1Ñ2Ô2°1°1°1°f°9Ô=Ø×ÒÐ 3Ñ4Ô4°Q°Q°Q¸°YÔ?ð	
ð 	
ð ð	
ð 	
ð 	
ð 	
ð 	
r1   rC   rQ   r�   éN   )Ún_informativerW   rN   )zrandom-tallzcorrelated-tallzrandom-wide)Úidsc                 óz  — t          d|d¬¦  «        }|                     | ¦  «        }t          |j        t	          j        |dd¬¦  «        ¦  «         t          j                             t	          j        | d¬¦  «        ¦  «        d         }t          |d¬	¦  «        d d…         }t          |j        |d
¬¦  «         d S )NrM   r   rV   r4   r–   F)ÚrowvarT)Úreverserx   ry   )
r
   r=   r   r&   r@   ÚvarÚlinalgÚeigrG   Úsorted)rC   r2   rD   ÚX_pcaÚexpected_results        r/   Ú%test_pca_explained_variance_empiricalrß   y  s¯   € õ ˜1¨À!Ð
DÑ
DÔ
D€CØ×Ò˜aÑ Ô €EÝ�CÔ+­R¬V°EÀÈÐ-JÑ-JÔ-JÑKÔKÐKå”i—m’m¥B¤F¨1°UÐ$;Ñ$;Ô$;Ñ<Ô<¸QÔ?€OÝ˜_°dÐ;Ñ;Ô;¸B¸Q¸BÔ?€OÝ�CÔ+¨_À4ÐHÑHÔHÐHÐHÐHr1   c                 óN  — t           j                             d¦  «        }d\  }}|                     ||¦  «        }t	          dd|¬¦  «        }t	          d| |¬¦  «        }|                     |¦  «         |                     |¦  «         t          |j        |j        d¬¦  «         d S )Nr   ©rQ   r�   rM   r   rV   rx   ry   )r@   rX   rq   r™   r
   r:   r   r'   )r2   rU   r¡   rˆ   rC   rÇ   rÈ   s          r/   Ú$test_pca_singular_values_consistencyrâ   �  sŸ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ#Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€Aå ¨fÀ3ÐGÑGÔG€HÝ ¨zÈÐLÑLÔL€Ià‡L‚L��O„O€OØ‡M‚M�!ÑÔÐå�HÔ-¨yÔ/IÐPTÐUÑUÔUÐUÐUÐUr1   c           	      ó–  — t           j                             d¦  «        }d\  }}|                     ||¦  «        }t	          d| |¬¦  «        }|                     |¦  «        }t          t          j        |j        dz  ¦  «        t           j	         
                    |d¦  «        dz  ¦  «         t          |j        t          j        t          j        |dz  d¬¦  «        ¦  «        ¦  «         d\  }}|                     ||¦  «        }t	          d| |¬¦  «        }|                     |¦  «        }|t          j        t          j        |dz  d¬¦  «        ¦  «        z  }|d d …dfxx         d	z  cc<   |d d …d
fxx         dz  cc<   t          j        ||j        ¦  «        }|                     |¦  «         t          |j        g d¢¦  «         d S )Nr   rá   rM   rV   Úfror‘   )rQ   én   r�   ç‰A`åÐ"	@r4   çX9´Èv¾@)ræ   rç   r�   )r@   rX   rq   r™   r
   r=   r   r¾   r'   rÚ   ÚnormÚsqrtrA   r%   r:   )r2   rU   r¡   rˆ   rC   rD   ÚX_transÚX_hats           r/   Útest_pca_singular_valuesrì   œ  s¸  € å
Œ)×
Ò
 Ñ
"Ô
"€CØ#Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€Aå
˜1¨À#Ð
FÑ
FÔ
F€CØ×Ò Ñ"Ô"€Gõ Ý
ŒˆsÔ# QÑ&Ñ'Ô'­¬¯ª¸ÀÑ)GÔ)GÈ1Ñ)Lñô ð õ �CÔ(­"¬'µ"´&¸À!¹È!Ð2LÑ2LÔ2LÑ*MÔ*MÑNÔNÐNð %Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€Aå
˜1¨À#Ð
FÑ
FÔ
F€CØ×Ò Ñ"Ô"€GØ�rŒw•r”v˜g q™j¨qÐ1Ñ1Ô1Ñ2Ô2Ñ2€GØˆAˆAˆAˆqˆD€M€M„M�UÑ€M€M�MØˆAˆAˆAˆqˆD€M€M„M�UÑ€M€M�MÝŒF�7˜CœOÑ,Ô,€EØ‡G‚GˆE�N„N€NÝ�CÔ(Ð*=Ð*=Ð*=Ñ>Ô>Ð>Ð>Ð>r1   c                 óR  — t           j                             d¦  «        }d\  }}|                     ||¦  «        dz  }|d d…xx         t          j        g d¢¦  «        z  cc<   d|                     d|¦  «        z  t          j        g d¢¦  «        z   }t          d| ¬¦  «                             |¦  «                             |¦  «        }|t          j        |dz   	                    ¦   «         ¦  «        z  }t          t          j        |d         d         ¦  «        d	d
¬¦  «         d S )Nr   ©rQ   r�   rL   rN   ©r�   é   é   r4   rM   r6   r�   rx   ry   )r@   rX   rq   r™   Úarrayr
   r:   r;   ré   r¾   r   Úabs)r2   rU   ÚnÚprC   ÚXtÚYts          r/   Útest_pca_check_projectionrø   º  s  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�D€A€qØ�	Š	�!�Q‰Œ˜#Ñ€AØ€c€r€c€F€F„F�bŒh�y�y�yÑ!Ô!Ñ!€F€F�FØ	ˆs�yŠy˜˜A‰ŒÑ	¥¤¨)¨)¨)Ñ!4Ô!4Ñ	4€Bå	˜!¨
Ð	3Ñ	3Ô	3×	7Ò	7¸Ñ	:Ô	:×	DÒ	DÀRÑ	HÔ	H€BØ�"Œ'�2�q‘5—+’+‘-”-Ñ
 Ô
 Ñ €Bå•B”F˜2˜aœ5 œ8Ñ$Ô$ c°Ð5Ñ5Ô5Ð5Ð5Ð5r1   c                 ó  — ddgddgg}t          d| d¬¦  «        }|                     |¦  «        }|j        s
J d¦   «         ‚t          |                     ¦   «         dd¬¦  «         t          |                     ¦   «         d	d
¬¦  «         d S )Nr�   g        r4   r   rV   )rM   r4   r    r7   g¸…ëQ¸æ?rx   ry   )r
   r=   r<   r   rž   rœ   )r2   rC   rD   rê   s       r/   Útest_pca_check_projection_listrú   É  s’   € ð ˆsˆ�c˜3�ZÐ €AÝ
˜1¨À!Ð
DÑ
DÔ
D€CØ×Ò Ñ"Ô"€GØŒ=Ð Ð ˜&Ñ Ô ˆ=Ý�G—L’L‘N”N D¨uÐ5Ñ5Ô5Ð5Ý�G—K’K‘M”M 4¨dÐ3Ñ3Ô3Ð3Ð3Ð3r1   )r   r   r   c                 ór  — t           j                             d¦  «        }d\  }}|                     ||¦  «        }|d d …dfxx         dz  cc<   |g d¢z  }t	          d| |¬¦  «                             |¦  «        }|                     |¦  «        }|                     |¦  «        }t          ||d¬	¦  «         d S )
Nr   )rŽ   r�   r4   r±   )rñ   rð   r�   rM   r²   çñhãˆµøÔ>ry   )	r@   rX   rq   r™   r
   r:   r;   r¿   r   )	r2   r”   rU   rô   rõ   rC   rD   ÚYÚ	Y_inverses	            r/   Útest_pca_inverserÿ   Ô  sÁ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�D€A€qØ�	Š	�!�Q‰Œ€AØ€a€a€aˆ€d€G€G„GˆwÑ€G€G�GØˆˆˆ�N€Aõ ˜1¨¸FÐ
CÑ
CÔ
C×
GÒ
GÈÑ
JÔ
J€CØ�Š�aÑÔ€AØ×%Ò% aÑ(Ô(€IÝ�A�y tÐ,Ñ,Ô,Ð,Ð,Ð,r1   r9   )r   r4   r   )r4   r   r   z!svd_solver, n_components, err_msg))r   r   ú2must be between 1 and min\(n_samples, n_features\))r   r   r   )r   rM   zmust be strictly less than min)r   r�   zZn_components=3 must be between 0 and min\(n_samples, n_features\)=2 with svd_solver='full'c                 ó¬  — d}t          || ¬¦  «        }t          j        t          |¬¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   | dk    rr|}d                     ||¦  «        }t          j        t          |¬¦  «        5  t          || ¬¦  «                             |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S d S )NrM   ©r2   ro   r   zgn_components={}L? must be strictly less than min\(n_samples, n_features\)={}L? with svd_solver='arpack')r
   rr   rs   Ú
ValueErrorr:   Úformat)r2   r9   r3   Úerr_msgÚ
smallest_dÚ
pca_fitteds         r/   Útest_pca_validationr  æ  sf  € ð, €JÝ�\¨jÐ9Ñ9Ô9€Jå	Œ•z¨Ð	1Ñ	1Ô	1ð ð Ø�Š�tÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð �XÒÐØ!ˆð"ç"(¢&¨°zÑ"BÔ"Bð 	õ
 Œ]�:¨WÐ5Ñ5Ô5ð 	?ð 	?Ý�¨Ð4Ñ4Ô4×8Ò8¸Ñ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð Ðs#   ¯AÁAÁAÂ%CÃCÃCzsolver, n_components_c                 ój   — t          |¬¦  «        }|                     | ¦  «         |j        |k    sJ ‚d S )Nr  )r
   r:   r*   )r9   r‹   r*   rD   s       r/   Útest_n_components_noner
    s=   € õ ˜Ð
 Ñ
 Ô
 €CØ‡G‚GˆD�M„M€MØÔ Ò-Ð-Ð-Ð-Ð-Ð-r1   c                 óà   — t           j                             d¦  «        }d\  }}|                     ||¦  «        }t	          d| ¬¦  «        }|                     |¦  «         |j        dk    sJ ‚d S )Nr   ©iX  rN   Úmler6   r4   )r@   rX   rq   r™   r
   r:   r*   )r2   rU   r¡   rˆ   rC   rD   s         r/   Útest_n_components_mler    sq   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ#Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€AÝ
˜5¨ZÐ
8Ñ
8Ô
8€CØ‡G‚GˆA�J„J€JØÔ Ò!Ð!Ð!Ð!Ð!Ð!r1   c                 óX  — t           j                             d¦  «        }d\  }}|                     ||¦  «        }t	          d| ¬¦  «        }d                     | ¦  «        }t          j        t          |¬¦  «        5  | 	                    |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r  r  r6   z:n_components='mle' cannot be a string with svd_solver='{}'ro   )
r@   rX   rq   r™   r
   r  rr   rs   r  r:   )r2   rU   r¡   rˆ   rC   rD   r  s          r/   Útest_n_components_mle_errorr  )  sê   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ#Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€AÝ
˜5¨ZÐ
8Ñ
8Ô
8€CØJ×QÒQØñô €Gõ 
Œ•z¨Ð	1Ñ	1Ô	1ð ð Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á<BÂB#Â&B#c                  óH  — t           j                             d¦  «        } d\  }}|                      ||¦  «        dz  }|d d…xx         t          j        g d¢¦  «        z  cc<   t          dd¬¦  «                             |¦  «        }|j        dk    sJ ‚|j        d	k    sJ ‚d S )
Nr   ©rQ   rñ   rL   rN   ©r�   rð   rñ   r4   rM   r  r   r6   r4   )	r@   rX   rq   r™   rò   r
   r:   r3   r*   )rU   rô   rõ   rC   rD   s        r/   Útest_pca_dimr  8  s¬   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�D€A€qØ�	Š	�!�Q‰Œ˜#Ñ€AØ€c€r€c€F€F„F�bŒh���Ñ'Ô'Ñ'€F€F�FÝ
˜5¨VÐ
4Ñ
4Ô
4×
8Ò
8¸Ñ
;Ô
;€CØÔ˜uÒ$Ð$Ð$Ð$ØÔ Ò!Ð!Ð!Ð!Ð!Ð!r1   c                  ó  ‡‡— d\  Š} t           j                             d¦  «        }|                     ‰| ¦  «        dz  |                     ‰d¦  «        t          j        g d¢¦  «        z  z   t          j        g d¢¦  «        z   }t          | d¬¦  «        }|                     |¦  «         |j        Št          j        ˆˆfd	„t          d| ¦  «        D ¦   «         ¦  «        }|d         | 	                    ¦   «         d
‰z  z
  k    sJ ‚d S )N©r   rñ   r   rL   r4   r  )r4   r   r“   rð   é   r   r6   c                 ó2   •— g | ]}t          ‰|‰¦  «        ‘ŒS r³   )r   )Ú.0Úkrô   Úspects     €€r/   ú
<listcomp>z$test_infer_dim_1.<locals>.<listcomp>P  s&   ø€ ÐGÐGÐG°aÕ$ U¨A¨qÑ1Ô1ÐGÐGÐGr1   rK   )
r@   rX   rq   r™   rò   r
   r:   r&   ÚrangeÚmax)rõ   rU   rC   rD   Úllrô   r  s        @@r/   Útest_infer_dim_1r   C  s   øø€ ð �D€A€qÝ
Œ)×
Ò
 Ñ
"Ô
"€Cà�	Š	�!�Q‰Œ˜#ÑØ
�)Š)�A�q‰/Œ/�BœH _ _ _Ñ5Ô5Ñ
5ñ	6å
Œ(�?�?�?Ñ
#Ô
#ñ	$ð õ
 ˜1¨Ð
0Ñ
0Ô
0€CØ‡G‚GˆA�J„J€JØÔ#€EÝ	ŒÐGÐGÐGÐGÐG½5ÀÀA¹;¼;ÐGÑGÔGÑ	HÔ	H€BØˆaŒ5�2—6’6‘8”8˜d Q™hÑ&Ò&Ð&Ð&Ð&Ð&Ð&r1   c                  óž  — d\  } }t           j                             d¦  «        }|                     | |¦  «        dz  }|d d…xx         t          j        g d¢¦  «        z  cc<   |dd…xx         t          j        g d¢¦  «        z  cc<   t          |d¬	¦  «        }|                     |¦  «         |j        }t          || ¦  «        d
k    sJ ‚d S )Nr  r   rL   rN   r  é   ©r  r   r“   rM   r~   r   r6   r4   ©	r@   rX   rq   r™   rò   r
   r:   r&   r   ©rô   rõ   rU   rC   rD   r  s         r/   Útest_infer_dim_2r&  T  sÕ   € ð �D€A€qÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ˜#Ñ€AØ€c€r€c€F€F„F�bŒh���Ñ'Ô'Ñ'€F€F�FØ€bˆ€e€H€H„H•”Ð)Ð)Ð)Ñ*Ô*Ñ*€H€H�HÝ
˜1¨Ð
0Ñ
0Ô
0€CØ‡G‚GˆA�J„J€JØÔ#€EÝ˜E 1Ñ%Ô%¨Ò)Ð)Ð)Ð)Ð)Ð)r1   c                  óð  — d\  } }t           j                             d¦  «        }|                     | |¦  «        dz  }|d d…xx         t          j        g d¢¦  «        z  cc<   |dd…xx         t          j        g d¢¦  «        z  cc<   |dd	…xx         d
t          j        g d¢¦  «        z  z  cc<   t          |d¬¦  «        }|                     |¦  «         |j        }t          || ¦  «        d
k    sJ ‚d S )Nr  r   rL   rN   r  r"  r#  rn   é(   rM   )r~   r4   r~   r4   r~   r   r6   r$  r%  s         r/   Útest_infer_dim_3r)  b  s  € Ø�D€A€qÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ˜#Ñ€AØ€c€r€c€F€F„F�bŒh���Ñ'Ô'Ñ'€F€F�FØ€bˆ€e€H€H„H•”Ð)Ð)Ð)Ñ*Ô*Ñ*€H€H�HØ€bˆ€e€H€H„H�•B”HÐ/Ð/Ð/Ñ0Ô0Ñ0Ñ0€H€H�HÝ
˜1¨Ð
0Ñ
0Ô
0€CØ‡G‚GˆA�J„J€JØÔ#€EÝ˜E 1Ñ%Ô%¨Ò)Ð)Ð)Ð)Ð)Ð)r1   z'X, n_components, n_components_validatedgffffffî?rM   rK   rñ   r"  r®   c                 óª   — t          |d¬¦  «        }|                     | ¦  «         |j        t          j        |¦  «        k    sJ ‚|j        |k    sJ ‚d S )Nr   r6   )r
   r:   r3   rr   r    r*   )rC   r3   Ún_components_validatedrD   s       r/   Ú$test_infer_dim_by_explained_variancer,  o  s^   € õ ˜<°FÐ
;Ñ
;Ô
;€CØ‡G‚GˆA�J„J€JØÔ�vœ}¨\Ñ:Ô:Ò:Ð:Ð:Ð:ØÔÐ 6Ò6Ð6Ð6Ð6Ð6Ð6r1   c                 óê  — d\  }}t           j                             d¦  «        }|                     ||¦  «        dz  t          j        g d¢¦  «        z   }t          d| ¬¦  «        }|                     |¦  «         |                     |¦  «        }dt          j        dt           j	        z  t          j
        d¦  «        z  d	z  ¦  «        z  |z  }t          ||z  dd
¬¦  «         |                     |                     ||¦  «        dz  t          j        g d¢¦  «        z   ¦  «        }||k    sJ ‚t          dd| ¬¦  «        }|                     |¦  «         |                     |¦  «        }||k    sJ ‚d S )N)r   r�   r   rL   rï   rM   r6   g      à¿r4   g|®Gáz„?gš™™™™™©?ry   gš™™™™™É?T)r3   r”   r2   )r@   rX   rq   r™   rò   r
   r:   ÚscoreÚlogÚpiÚexpr   )	r2   rô   rõ   rU   rC   rD   Úll1ÚhÚll2s	            r/   Útest_pca_scorer5  ~  sJ  € ð �D€A€qÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ˜#Ñ¥¤¨¨¨Ñ 3Ô 3Ñ3€AÝ
˜1¨Ð
4Ñ
4Ô
4€CØ‡G‚GˆA�J„J€Jà
�)Š)�A‰,Œ,€CØ�rŒv�a�"œ%‘i¥"¤&¨¡)¤)Ñ+¨fÑ4Ñ5Ô5Ñ5¸Ñ9€AÝ�C˜!‘G˜Q TÐ*Ñ*Ô*Ð*à
�)Š)�C—I’I˜a ‘O”O cÑ)­B¬H°Y°Y°YÑ,?Ô,?Ñ?Ñ
@Ô
@€CØ�Š9ˆ9ˆ9ˆ9å
˜1 T°jÐ
AÑ
AÔ
A€CØ‡G‚GˆA�J„J€JØ
�)Š)�A‰,Œ,€CØ�Š9ˆ9ˆ9ˆ9ˆ9ˆ9r1   c                  ó¶  — d\  } }t           j                             d¦  «        }|                     | |¦  «        |                     | d¦  «        t          j        g d¢¦  «        z  z   t          j        g d¢¦  «        z   }|                     | |¦  «        |                     | d¦  «        t          j        g d¢¦  «        z  z   t          j        g d¢¦  «        z   }t          j        |¦  «        }t          |¦  «        D ]@}t          |d¬¦  «        }|                     |¦  «         | 	                    |¦  «        ||<   ŒA| 
                    ¦   «         dk    sJ ‚d S )N)éÈ   r�   r   r4   rï   )r4   r   r“   r   r6   )r@   rX   rq   r™   rò   rŸ   r  r
   r:   r.  Úargmax)rô   rõ   rU   ÚXlrö   r  r  rD   s           r/   Útest_pca_score3r:  ”  s'  € à�D€A€qÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ	�Š�1�a‰Œ˜3Ÿ9š9 Q¨™?œ?­R¬X°i°i°iÑ-@Ô-@Ñ@Ñ	@Å2Ä8ÈIÈIÈIÑCVÔCVÑ	V€BØ	�Š�1�a‰Œ˜3Ÿ9š9 Q¨™?œ?­R¬X°i°i°iÑ-@Ô-@Ñ@Ñ	@Å2Ä8ÈIÈIÈIÑCVÔCVÑ	V€BÝ	Œ�!‰Œ€BÝ�1‰XŒXð ð ˆÝ˜q¨VÐ4Ñ4Ô4ˆØ�Š�‰ŒˆØ—	’	˜"‘”ˆˆ1‰ˆà�9Š9‰;Œ;˜!ÒÐÐÐÐÐr1   c                 óÒ   — t          j        d¬¦  «        \  }}t          d| d¬¦  «        }|                     |¦  «         t	          j        |j        |j        z
  dk    ¦  «        sJ ‚d S )NT©Ú
return_X_yrn   r   rV   )r   Úload_digitsr
   r:   r@   r»   r&   r)   )r2   rC   Ú_rD   s       r/   Útest_pca_sanity_noise_variancer@  £  sj   € õ Ô¨4Ð0Ñ0Ô0�D€A€qÝ
˜2¨*À1Ð
EÑ
EÔ
E€CØ‡G‚GˆA�J„J€JÝŒ6�3Ô*¨SÔ-@Ñ@ÀQÒFÑGÔGÐGÐGÐGÐGÐGr1   c                 óB  — t          j        d¬¦  «        \  }}t          ddd¬¦  «        }t          d| d¬¦  «        }|                     |¦  «         |                     |¦  «         t	          |                     |¦  «        |                     |¦  «        d¬¦  «         d S )	NTr<  rn   r   r   rV   rü   ry   )r   r>  r
   r:   r   r.  )r2   rC   r?  rÇ   rÈ   s        r/   Ú"test_pca_score_consistency_solversrB  ¯  s—   € õ Ô¨4Ð0Ñ0Ô0�D€A€qÝ ¨vÀAÐFÑFÔF€HÝ °
ÈÐKÑKÔK€IØ‡L‚L��O„O€OØ‡M‚M�!ÑÔÐÝ�H—N’N 1Ñ%Ô% y§¢°qÑ'9Ô'9ÀÐEÑEÔEÐEÐEÐEr1   c                 óÀ  — d\  }}t           j                             d¦  «        }|                     ||¦  «        dz  t          j        g d¢¦  «        z   }t          || ¬¦  «        }|                     |¦  «         |j        dk    sJ ‚|                     |¦  «         |                     |j	        ¦  «         |j        dk    sJ ‚|                     |j	        ¦  «         d S )Nrî   r   rL   rï   r6   )
r@   rX   rq   r™   rò   r
   r:   r)   r.  ÚT)r2   rô   rõ   rU   rC   rD   s         r/   Ú'test_pca_zero_noise_variance_edge_casesrE  »  sÍ   € ð �D€A€qÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�!�Q‰Œ˜#Ñ¥¤¨¨¨Ñ 3Ô 3Ñ3€Aå
˜1¨Ð
4Ñ
4Ô
4€CØ‡G‚GˆA�J„J€JØÔ !Ò#Ð#Ð#Ð#ð ‡I‚Iˆa�L„L€Là‡G‚GˆAŒC�L„L€LØÔ !Ò#Ð#Ð#Ð#ð ‡I‚IˆaŒc�N„N€N€N€Nr1   z4n_samples, n_features, n_components, expected_solver))rN   rŽ   rñ   r   )r   rŽ   rŽ   r   )r   éô  i�  r   )r   rF  rN   r   )r   rF  r®   r   c                 óX  — t           j                             d¦  «                             | |f¬¦  «        }t	          |d¬¦  «        }t	          ||d¬¦  «        }|                     |¦  «         |j        |k    sJ ‚|                     |¦  «         t          |j        |j        ¦  «         d S )Nr   r   )r3   rW   rV   )	r@   rX   rq   rƒ   r
   r:   Ú_fit_svd_solverr   r%   )r¡   rˆ   r3   Úexpected_solverr9   r{   Úpca_tests          r/   Útest_pca_svd_solver_autorK  Ñ  s²   € õ  Œ9× Ò  Ñ#Ô#×+Ò+°)¸ZÐ1HÐ+ÑIÔI€DÝ ¸1Ð=Ñ=Ô=€HÝØ!¨oÈAðñ ô €Hð ‡L‚L�ÑÔÐØÔ# Ò6Ð6Ð6Ð6Ø‡L‚L�ÑÔÐÝ�HÔ(¨(Ô*>Ñ?Ô?Ð?Ð?Ð?r1   c           	      ó¦  — t           j                             d¦  «        }|                     dd¦  «        }t          j        d¦  «        }t          d¦  «        D ]6}t          d| |¬¦  «        }|                     |¦  «        d         ||d d …f<   Œ7t          |t          j	        |dd d …f         d¦  «         
                    dd¦  «        ¦  «         d S )Nr   rN   )r"  rM   r"  rM   rV   )r@   rX   rq   ÚrandrŸ   r  r
   r=   r   ÚtileÚreshape)r2   rU   rC   rj   ÚirD   s         r/   Útest_pca_deterministic_outputrQ  ì  sÊ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ�Š��RÑÔ€Aå”H˜WÑ%Ô%€MÝ�2‰YŒYð 6ð 6ˆÝ˜q¨ZÀcÐJÑJÔJˆØ!×/Ò/°Ñ2Ô2°1Ô5ˆ�a˜˜˜�dÑÐÝ�M¥2¤7¨=¸¸A¸A¸A¸Ô+>ÀÑ#CÔ#C×#KÒ#KÈBÐPQÑ#RÔ#RÑSÔSÐSÐSÐSr1   c                 óD   — t          | |¦  «         t          | ¦  «         d S )N)Ú"check_pca_float_dtype_preservationÚ$check_pca_int_dtype_upcast_to_double)r2   r^   s     r/   Útest_pca_dtype_preservationrU  ø  s'   € å& zÐ3EÑFÔFÐFÝ(¨Ñ4Ô4Ð4Ð4Ð4r1   c                 óÒ  — t           j                             |¦  «                             dd¦  «        }|                     t           j        d¬¦  «        }|                     t           j        ¦  «        }t          d| |¬¦  «                             |¦  «        }t          d| |¬¦  «                             |¦  «        }|j	        j
        t           j        k    sJ ‚|j	        j
        t           j        k    sJ ‚|                     |¦  «        j
        t           j        k    sJ ‚|                     |¦  «        j
        t           j        k    sJ ‚t          |j	        |j	        dd¬¦  «         d S )	Nr   rð   Fr°   r�   rV   gü©ñÒMbP?r"   )r@   rX   rq   rM  r¶   Úfloat64r·   r
   r:   r%   r¼   r;   r   )r2   ÚseedrC   Ú	X_float64Ú	X_float32Úpca_64Úpca_32s          r/   rS  rS  þ  sB  € å
Œ	×Ò˜dÑ#Ô#×(Ò(¨¨qÑ1Ô1€AØ—’�œ¨%�Ñ0Ô0€IØ—’�œÑ$Ô$€Iå˜a¨JÀTÐJÑJÔJ×NÒNØñô €Fõ ˜a¨JÀTÐJÑJÔJ×NÒNØñô €Fð ÔÔ#¥r¤zÒ1Ð1Ð1Ð1ØÔÔ#¥r¤zÒ1Ð1Ð1Ð1Ø×Ò˜IÑ&Ô&Ô,µ´
Ò:Ð:Ð:Ð:Ø×Ò˜IÑ&Ô&Ô,µ´
Ò:Ð:Ð:Ð:õ
 �FÔ&¨Ô(:ÀÈDÐQÑQÔQÐQÐQÐQr1   c                 óÖ  — t           j                             d¦  «                             ddd¦  «        }|                     t           j        d¬¦  «        }|                     t           j        d¬¦  «        }t          d| d¬¦  «                             |¦  «        }t          d| d¬¦  «                             |¦  «        }|j	        j
        t           j        k    sJ ‚|j	        j
        t           j        k    sJ ‚|                     |¦  «        j
        t           j        k    sJ ‚|                     |¦  «        j
        t           j        k    sJ ‚t          |j	        |j	        d¬	¦  «         d S )
Nr   r   )r   rð   Fr°   r�   rV   g-Cëâ6?ry   )r@   rX   rq   Úrandintr¶   Úint64Úint32r
   r:   r%   r¼   rW  r;   r   )r2   ÚX_i64ÚX_i32r[  r\  s        r/   rT  rT    s6  € åŒI×!Ò! !Ñ$Ô$×,Ò,¨Q°°iÑ@Ô@€EØ�LŠL�œ¨ˆLÑ.Ô.€EØ�LŠL�œ¨ˆLÑ.Ô.€Eå˜a¨JÀQÐGÑGÔG×KÒKÈEÑRÔR€FÝ˜a¨JÀQÐGÑGÔG×KÒKÈEÑRÔR€FàÔÔ#¥r¤zÒ1Ð1Ð1Ð1ØÔÔ#¥r¤zÒ1Ð1Ð1Ð1Ø×Ò˜EÑ"Ô"Ô(­B¬JÒ6Ð6Ð6Ð6Ø×Ò˜EÑ"Ô"Ô(­B¬JÒ6Ð6Ð6Ð6å�FÔ&¨Ô(:ÀÐFÑFÔFÐFÐFÐFr1   c                  ó&  — t          d¬¦  «        \  } }t          ¦   «                              | |¦  «        }|j                             ¦   «         d         }t          |¬¦  «                             | |¦  «        }|j        | j        d         k    sJ ‚d S )NTr<  éþÿÿÿr�   r4   )r   r
   r:   r½   Úcumsumr*   r<   )rC   Úyr-   r3   r.   s        r/   Ú5test_pca_n_components_mostly_explained_variance_ratiorg  '  s†   € õ  Ð%Ñ%Ô%�D€A€qÝ‰5Œ5�9Š9�Q˜‰?Œ?€DàÔ1×8Ò8Ñ:Ô:¸2Ô>€LÝ˜LÐ)Ñ)Ô)×-Ò-¨a°Ñ3Ô3€DØÔ ¤¨¤Ò+Ð+Ð+Ð+Ð+Ð+r1   c                  óÈ   — t          j        g d¢¦  «        } d}dD ]F}t          j        t          d¬¦  «        5  t          | ||¦  «         d d d ¦  «         n# 1 swxY w Y   ŒGd S )N©r4   ç ÂëþKH´9rj  rj  rN   )r   rñ   z"should be in \[1, n_features - 1\]ro   )r@   rò   rr   rs   r  r   )Úspectrumr¡   r¢   s      r/   Útest_assess_dimension_bad_rankrl  3  s´   € åŒxÐ0Ð0Ð0Ñ1Ô1€HØ€IØð 9ð 9ˆÝŒ]�:Ð-RÐSÑSÔSð 	9ð 	9Ý˜h¨¨iÑ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9øð9ð 9s   ¸AÁA	ÁA	c                  óò   — t          j        g d¢¦  «        } t          | dd¬¦  «        t           j         k    sJ ‚dD ]$}t          | |d¦  «        t           j         k    sJ ‚Œ%t	          | d¦  «        dk    sJ ‚d S )Nri  r4   rN   ©r¢   r¡   )rM   r�   )r@   rò   r   Úinfr   )rk  r¢   s     r/   Útest_small_eigenvalues_mlerp  <  s”   € õ ŒxÐ0Ð0Ð0Ñ1Ô1€Hå˜X¨A¸Ð<Ñ<Ô<ÅÄ¸wÒFÐFÐFÐFàð @ð @ˆÝ  ¨4°Ñ4Ô4½¼¸Ò?Ð?Ð?Ð?Ð?å˜H bÑ)Ô)¨QÒ.Ð.Ð.Ð.Ð.Ð.r1   c                  ó    — t          j        dddddd¬¦  «        \  } }t          d¬¦  «                             | ¦  «        }|j        dk    sJ ‚d S )Nr"  r4   é   é*   )rˆ   rÔ   Ú
n_repeatedÚn_redundantÚn_clusters_per_classrW   r  r�   )r   r   r
   r:   r*   ©rC   r?  rD   s      r/   Útest_mle_redundant_datarx  I  sk   € õ Ô'ØØØØØØðñ ô �D€A€qõ ˜5Ð
!Ñ
!Ô
!×
%Ò
% aÑ
(Ô
(€CØÔ Ò!Ð!Ð!Ð!Ð!Ð!r1   c                  óî   — t          j        ddd¬¦  «        \  } }t          dd¬¦  «        }t          j        t
          d¬	¦  «        5  |                     | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr"  é   rs  )r¡   rˆ   rW   r  r   r6   z?n_components='mle' is only supported if n_samples >= n_featuresro   )r   r   r
   rr   rs   r  r:   rw  s      r/   Útest_fit_mle_too_few_samplesr{  X  sÄ   € õ Ô'°"ÀÐRTÐUÑUÔU�D€A€qå
˜5¨VÐ
4Ñ
4Ô
4€CÝ	ŒÝØOð
ñ 
ô 
ð ð ð 	�Š�‰
Œ
ˆ
ð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ÁA*Á*A.Á1A.c                  ó4  — d\  } }t           j                             d¦  «                             | |¦  «        }t          j        |d d …d d…f         d¬¦  «        |d d …df<   t          dd¬¦  «        }|                     |¦  «         |j        |dz
  k    sJ ‚d S )	N)r   rN   r   r~   r‘   r  r   r  r4   )r@   rX   rq   r™   rž   r
   r:   r*   )r¡   Ún_dimrC   Úpca_skls       r/   Útest_mle_simple_caser  e  s¢   € ð  Ñ€IˆuÝ
Œ	×Ò˜aÑ Ô ×&Ò& y°%Ñ8Ô8€AÝŒw�q˜˜˜˜C˜R˜C˜”y rÐ*Ñ*Ô*€A€a€a€aˆ€e�HÝ�% FÐ+Ñ+Ô+€GØ‡K‚K��N„N€NØÔ  E¨A¡IÒ-Ð-Ð-Ð-Ð-Ð-r1   c                  óš  — d\  } }t          j        | |f¦  «        }t           j                             |d¬¦  «        \  }}}t	          |dd …         t          j        |dz
  ¦  «        d¬¦  «         t          j        t          |d| ¬¦  «        ¦  «        sJ ‚t          d|¦  «        D ]$}t          ||| ¦  «        t           j	         k    sJ ‚Œ%d S )	N)é	   r  T)Úfull_matricesr4   r    r7   rn  rM   )
r@   r�   rÚ   Úsvdr   rŸ   rº   r   r  ro  )r¡   rˆ   rC   r?  Úsr¢   s         r/   Útest_assess_dimension_rank_oner…  p  sÙ   € à Ñ€IˆzÝ
Œ�˜JÐ'Ñ(Ô(€AÝŒi�mŠm˜A¨TˆmÑ2Ô2�G€A€qˆ!å�A�a�b�b”E�2œ8 J°¡NÑ3Ô3¸%Ð@Ñ@Ô@Ð@åŒ;Õ(¨°¸iÐHÑHÔHÑIÔIÐIÐIÐIÝ�a˜Ñ$Ô$ð @ð @ˆÝ   D¨)Ñ4Ô4½¼¸Ò?Ð?Ð?Ð?Ð?ð@ð @r1   c                  óJ  — t           j                             d¦  «        } d}|                      d|¦  «        }t	          dd|d¬¦  «                             |¦  «        }t	          dd¬¦  «                             |¦  «        }t	          dd	d¬
¦  «                             |¦  «        }t          t          j        |j        ¦  «        t          j        |j        ¦  «        ¦  «         t          t          j        |j        ¦  «        t          j        |j        ¦  «        ¦  «         dS )zßCheck that exposing and setting `n_oversamples` will provide accurate results
    even when `X` as a large number of features.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20589
    r   rQ   r   r4   r   )r3   r2   Ún_oversamplesrW   r   r6   r   rV   N)	r@   rX   rq   r™   r
   r:   r   ró   r%   )rU   rˆ   rC   Úpca_randomizedrÇ   rz   s         r/   Ú%test_pca_randomized_svd_n_oversamplesr‰  }  s  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ€JØ�	Š	�%˜Ñ$Ô$€Aõ ØØØ Øð	ñ ô ÷
 
‚cˆ!�f„fð õ  ¨fÐ5Ñ5Ô5×9Ò9¸!Ñ<Ô<€HÝ !°ÀqÐIÑIÔI×MÒMÈaÑPÔP€Jå•B”F˜8Ô/Ñ0Ô0µ"´&¸Ô9OÑ2PÔ2PÑQÔQÐQÝ•B”F˜>Ô5Ñ6Ô6½¼¸zÔ?UÑ8VÔ8VÑWÔWÐWÐWÐWr1   c                  óÖ   — t          d¬¦  «                             t          j        ¦  «        } |                      ¦   «         }t          d„ t          d¦  «        D ¦   «         |¦  «         dS )z Check feature names out for PCA.rM   r�   c                 ó   — g | ]}d |› �‘ŒS )rD   r³   )r  rP  s     r/   r  z*test_feature_names_out.<locals>.<listcomp>œ  s   € Ð4Ð4Ð4 a˜	˜a˜	˜	Ð4Ð4Ð4r1   N)r
   r:   r8   r9   Úget_feature_names_outr   r  )rD   Únamess     r/   Útest_feature_names_outrŽ  —  s^   € å
˜1Ð
Ñ
Ô
×
!Ò
!¥$¤)Ñ
,Ô
,€Cà×%Ò%Ñ'Ô'€EÝÐ4Ð4­5°©8¬8Ð4Ñ4Ô4°eÑ<Ô<Ð<Ð<Ð<r1   c                 ób  — t           j                             d¦  «        }|                     dd¦  «        }t	          ¦   «                              |¦  «        }|j        |j        z  }t          j        |dd¬¦  «         	                    ¦   «         }t           j
                             ||¦  «         dS )z9Check the accuracy of PCA's internal variance calculationr   r   r7  r4   r–   N)r@   rX   rq   r™   r
   r:   r&   r½   rÙ   r¾   Útestingr   )rŠ   rU   rC   rD   Úpca_varÚtrue_vars         r/   Útest_variance_correctnessr“  Ÿ  s�   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�$˜ÑÔ€AÝ
‰%Œ%�)Š)�A‰,Œ,€CØÔ%¨Ô(EÑE€GÝŒv�a˜a aÐ(Ñ(Ô(×,Ò,Ñ.Ô.€HÝ„J×Ò˜w¨Ñ1Ô1Ð1Ð1Ð1r1   c           	      óh  — t          |||¦  «        \  }}t          j                             |¦  «        }|                     ||¬¦  «        }|                     |¦  «         |                     ¦   «         }	|                     ¦   «         }
|j        dk    rdnd}t          d¬¦  «        5  t          |¦  «                             |¦  «        }|                     ¦   «         }|j        dk    sJ ‚|j        |j        k    sJ ‚t          t          |t          d¬	¦  «        |	|t          |¦  «        ¬
¦  «         |                     ¦   «         }|j        dk    sJ ‚|j        |j        k    sJ ‚t          t          |t          d¬	¦  «        |
|t          |¦  «        ¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r·   g-Cëâ6*?gH¯¼šò×Š>T©Úarray_api_dispatch)rð   rð   Úcpu©Úxpr   r"   )r   r8   r9   r¶   Úasarrayr:   r?   r>   r¼   r   r   r<   r   r   r@   r   )ÚnameÚ	estimatorÚarray_namespaceÚdevice_nameÚ
dtype_namer™  r   Úiris_npÚiris_xpÚprecision_npÚcovariance_npr#   Úestimator_xpÚprecision_xpÚcovariance_xps                  r/   Úcheck_array_api_get_precisionr§  ª  s  € õ & o°{ÀJÑOÔO�J€BˆÝŒi×Ò˜zÑ*Ô*€GØ�jŠj˜¨ˆjÑ0Ô0€Gà‡M‚M�'ÑÔÐØ×*Ò*Ñ,Ô,€LØ×,Ò,Ñ.Ô.€Mà”= IÒ-Ð-ˆ4ˆ4°4€DÝ	¨4Ð	0Ñ	0Ô	0ð 
ð 
Ý˜YÑ'Ô'×+Ò+¨GÑ4Ô4ˆØ#×1Ò1Ñ3Ô3ˆØÔ! VÒ+Ð+Ð+Ð+ØÔ! W¤]Ò2Ð2Ð2Ð2åÝ�L¥R°Ð6Ñ6Ô6ØØÝ 
Ñ+Ô+ð		
ñ 	
ô 	
ð 	
ð %×3Ò3Ñ5Ô5ˆØÔ" fÒ,Ð,Ð,Ð,ØÔ" g¤mÒ3Ð3Ð3Ð3åÝ�M¥b°Ð7Ñ7Ô7ØØÝ 
Ñ+Ô+ð		
ñ 	
ô 	
ð 	
ð!
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s   Â'C3F'Æ'F+Æ.F+z(array_namespace, device_name, dtype_nameÚcheckrœ  r6   r²   rL   ÚQR)r3   r2   Úpower_iteration_normalizerrW   c                 ó\   — | j         j        }t          | ¦  «        }  ||| |||¬¦  «         d S )N©rž  rŸ  )Ú	__class__Ú__name__r   )rœ  r¨  r�  rž  rŸ  r›  s         r/   Útest_pca_array_api_compliancer¯  Î  sN   € ð: ÔÔ'€DÝ�iÑ Ô €IØ	€EØØØØØðñ ô ð ð ð r1   r  c                 ón  — | j         j        } ||| |||¬¦  «         t          |||¦  «        \  }}t          d¬¦  «        \  }}	|                     |d¬¦  «        }t          |j        ¦  «        }
t          | ¦  «        }|                     ||¬¦  «        }|                     |	|¬¦  «        }| 	                    ||	¦  «         |j
        }|j        }t          |¦  «        }t          d¬¦  «        5  | 	                    ||¦  «         |j
        }t          |¦  «        t          |¦  «        k    sJ ‚t          |t          d	¬
¦  «        }|j        }t          |¦  «        t          |¦  «        k    sJ ‚t          |t          d	¬
¦  «        }d d d ¦  «         n# 1 swxY w Y   |j        |j        k    sJ ‚|j        d         |j        d         k    sJ ‚|j        |j        k    sJ ‚t#          |j        d         |j        d         ¦  «        }t%          |d |…         |d |…         |
¬¦  «         |j        d         |j        d         k    rp|d         }||d …         }||d …         }t'          t          j        ||z
  ¦  «        |
k     ¦  «        sJ ‚t'          t          j        ||z
  ¦  «        |
k     ¦  «        sJ ‚d S d S )Nr¬  rs  )rW   Fr°   r   Tr•  r—  r˜  r4   r   r7   r~   )r­  r®  r   r   r¶   r   r¼   r   rš  r:   r%   r&   r   Úarray_devicer   r@   r<   r´   r   r»   ró   )rœ  r¨  r�  rž  rŸ  r›  r™  r   rC   rf  r$   ÚestÚX_xpÚy_xpÚcomponents_npÚexplained_variance_npÚest_xpÚcomponents_xpÚcomponents_xp_npÚexplained_variance_xpÚexplained_variance_xp_npÚmin_componentsÚreference_varianceÚextra_variance_npÚextra_variance_xp_nps                            r/   Ú!test_pca_mle_array_api_compliancerÀ  ö  sE  € ð0 ÔÔ'€DØ	€EØØØØØðñ ô ð õ & o°{ÀJÑOÔO�J€Bˆå¨BÐ/Ñ/Ô/�D€A€qØ	�Š� %ˆÑ(Ô(€AÝ˜!œ'Ñ"Ô"€Då
�	Ñ
Ô
€Cà�:Š:�a ˆ:Ñ'Ô'€DØ�:Š:�a ˆ:Ñ'Ô'€Dà‡G‚GˆAˆq�M„M€Mà”O€MØÔ3Ðå�3‰ZŒZ€FÝ	¨4Ð	0Ñ	0Ô	0ð Wð WØ�
Š
�4˜ÑÔÐØÔ*ˆÝ˜MÑ*Ô*­l¸4Ñ.@Ô.@Ò@Ð@Ð@Ð@Ý" =µRÀÐFÑFÔFÐà &Ô :ÐÝÐ1Ñ2Ô2µlÀ4Ñ6HÔ6HÒHÐHÐHÐHÝ#*Ð+@ÅRÐPUÐ#VÑ#VÔ#VÐ ðWð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð Wð Ô! ]Ô%8Ò8Ð8Ð8Ð8ØÔ! !Ô$¨Ô(;¸AÔ(>Ò>Ð>Ð>Ð>Ø#Ô)Ð-BÔ-HÒHÐHÐHÐHõ Ð)Ô/°Ô2°MÔ4GÈÔ4JÑKÔK€NÝØ   . Ô1Ø˜o˜~˜oÔ.Øðñ ô ð ð Ô˜aÔ  MÔ$7¸Ô$:Ò:Ð:Ø2°2Ô6ÐØ1°.°/°/ÔBÐØ7¸¸¸ÔHÐÝ•2”6Ð+Ð.@Ñ@ÑAÔAÀDÒHÑIÔIÐIÐIÐIÝ•2”6Ð.Ð1CÑCÑDÔDÀtÒKÑLÔLÐLÐLÐLð ;Ð:ð
 	MÐLs   Ã/BFÆFÆFÚSCIPY_ARRAY_APIÚ1zSCIPY_ARRAY_API not set to 1.)Úreasonc                  ó  — t          j        d¦  «        } |                      t          j        ¦  «        }t          ddd¬¦  «        }t          j        d¦  «        }t          j        t          |¬¦  «        5  t          d¬	¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                     d
d¬¦  «         t          j        d¦  «        }t          j        t          |¬¦  «        5  t          d¬	¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   |                     d
d¬¦  «         t          j        d¦  «        }t          j        t          |¬¦  «        5  t          d¬	¦  «        5  |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   d d d ¦  «         d S # 1 swxY w Y   d S )NÚarray_api_strictrM   r   r   rV   zCPCA with svd_solver='arpack' is not supported for Array API inputs.ro   Tr•  r   ÚLU)r2   rª  z[Array API does not support LU factorization. Set `power_iteration_normalizer='QR'` instead.r   z’Array API does not support LU factorization, falling back to QR instead. Set `power_iteration_normalizer='QR'` explicitly to silence this warning.)rr   Úimportorskiprš  r8   r9   r
   ÚreÚescapers   r  r   r:   Ú
set_paramsÚwarnsÚUserWarning)r™  r¡  rD   Úexpected_msgs       r/   Ú7test_array_api_error_and_warnings_on_unsupported_paramsrÎ  K  sh  € õ 
Ô	Ð/Ñ	0Ô	0€BØ�jŠj�œÑ#Ô#€Gå
˜1¨ÀÐ
BÑ
BÔ
B€CÝ”9ØMñô €Lõ 
Œ•z¨Ð	6Ñ	6Ô	6ð ð Ý¨tÐ4Ñ4Ô4ð 	ð 	Ø�GŠG�GÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ‡N‚N˜lÀt€NÑLÔLÐLÝ”9ð	6ñô €Lõ 
Œ•z¨Ð	6Ñ	6Ô	6ð ð Ý¨tÐ4Ñ4Ô4ð 	ð 	Ø�GŠG�GÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ‡N‚N˜lÀv€NÑNÔNÐNÝ”9ð	Qñô €Lõ 
Œ•k¨Ð	6Ñ	6Ô	6ð ð Ý¨tÐ4Ñ4Ô4ð 	ð 	Ø�GŠG�GÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s¢   Á5B?ÂB(ÂB?Â(B,	Â,B?Â/B,	Â0B?Â?CÃCÄEÄ!EÄ7EÅE	ÅEÅ
E	ÅEÅEÅ!EÆ+G6Æ<GÇG6ÇG"	Ç"G6Ç%G"	Ç&G6Ç6G:Ç=G:)r   r    )nÚosrÈ  r„   Únumpyr@   rr   Únumpy.testingr   Úsklearnr   r   Úsklearn.baser   Úsklearn.datasetsr   r   r	   Úsklearn.decompositionr
   Úsklearn.decomposition._pcar   r   Úsklearn.utils._array_apir   r   r   r   r±  Ú-sklearn.utils._test_common.instance_generatorr   Úsklearn.utils._testingr   r   Úsklearn.utils.estimator_checksr   Úsklearn.utils.fixesr   r   r   r8   ÚPCA_SOLVERSrZ   r[   r´   ÚSPARSE_MAX_COMPONENTSr0   ÚmarkÚparametrizer  r9   r<   rI   re   rk   rv   r|   r‰   r§   rÜ   ÚlistÚsetrÒ   rX   rq   r™   rß   râ   rì   rø   rú   rÿ   rò   rD  r  r
  r  r  r  r   r&  r)  rM  r,  r5  r:  r@  rB  rE  rK  rQ  rU  rS  rT  rg  rl  rp  rx  r{  r  r…  r‰  rŽ  r“  r§  r¯  rÀ  ÚskipifÚenvironÚgetrÎ  r³   r1   r/   ú<module>rå     sÉ  ðØ 	€	€	€	Ø 	€	€	€	Ø €€€à Ð Ð Ð Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ %Ð %Ð %Ð %Ð %Ð %Ø JÐ JÐ JÐ JÐ JÐ JÐ JÐ Jðð ð ð ð ð ð ð ð ð ð
 <Ð ;Ð ;Ð ;Ð ;Ð ;Ø RÐ RÐ RÐ RÐ RÐ RØ HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð ð ð ð ð UÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ TÐ Tà€xÔÑÔ€ØIÐIÐI€ð
 Ñ €ˆ(Ø˜˜H hÑ/Ô/Ð ð6ð 6ð 6ð 6ð „×Ò˜ {Ñ3Ô3Ø„×Ò˜¨¨¨q°$´)´/À!Ô2DÑ)EÔ)EÑFÔFðLð Lñ GÔFñ 4Ô3ðLð( „×Ò˜Ð$5Ð$5Ð$5Ñ6Ô6Ø„×Ò˜¨¨¨Ñ4Ô4Ø„×ÒÐ+¨^¸nÑ-LÑMÔMØ„×Ò˜¨Ð2CÐ'DÑEÔEØ„×Ò˜ , , ,Ñ/Ô/ð+Qð +Qñ 0Ô/ñ FÔEñ NÔMñ 5Ô4ñ 7Ô6ð
+Qð\ „×ÒÐ+¨^¸nÑ-LÑMÔMðLð Lñ NÔMðLð( „×Ò˜¨°fÐ'=Ñ>Ô>Ø„×ÒÐ+¨^¸nÑ-LÑMÔMð	ð 	ñ NÔMñ ?Ô>ð	ð „×ÒÐ+¨^¸nÑ-LÑMÔMðWð Wñ NÔMðWðð ð ð „×Ò˜ $¨ Ñ/Ô/Ø„×Ò˜ ;Ñ/Ô/ð1Kð 1Kñ 0Ô/ñ 0Ô/ð1Kðj „×ÒØ˜˜˜t˜t C C¨Ñ$4Ô$4¸ÀÐ7GÑ$GÑHÔHÑIÔIñô ð „×Ò˜¨°Ð'7Ñ8Ô8Ø„×ÒÐ)¨E°4¨=Ñ9Ô9Ø„×Ò˜ E¨4 =Ñ1Ô1ðC
ð C
ñ 2Ô1ñ :Ô9ñ 9Ô8ñô ðC
ðL „×ÒØà
Œ	×Ò˜aÑ Ô ×&Ò& s¨BÑ/Ô/Ø$ˆÔ$ S¨"¸BÈQÐOÑOÔOÐPQÔRØ
Œ	×Ò˜aÑ Ô ×&Ò& r¨3Ñ/Ô/ðð
 	:Ð9Ð9ð ñ ô ð „×Ò˜ {Ñ3Ô3ðIð Iñ 4Ô3ñô ðIð „×Ò˜¨°,Ð'?Ñ@Ô@ðVð Vñ AÔ@ðVð „×Ò˜ {Ñ3Ô3ð?ð ?ñ 4Ô3ð?ð: „×Ò˜ {Ñ3Ô3ð6ð 6ñ 4Ô3ð6ð „×Ò˜ {Ñ3Ô3ð4ð 4ñ 4Ô3ð4ð „×Ò˜Ð'GÐ'GÐ'GÑHÔHØ„×Ò˜ E¨4 =Ñ1Ô1ð-ð -ñ 2Ô1ñ IÔHð-ð  „×ÒØ
ˆXˆRŒX�y�y�y ) ) )Ð,Ñ-Ô-¨x¨r¬x¸¸¸ÀIÀIÀIÐ8NÑ/OÔ/OÔ/QÐRñô ð „×ÒØ'ðð ð ñô ð ?ð ?ñ!ô ñô ð&?ð, „×ÒØà	���T”Y”_Ñ%Ô%Ð&Ø	�3�3�t”y”Ñ'Ô'¨!Ñ+Ð,Ø	�s�s˜4œ9œ?Ñ+Ô+Ð,ðñô ð „×Ò˜ $¤)¨T¬Y¬[Ð!9Ñ:Ô:ð.ð .ñ ;Ô:ñô ð.ð „×Ò˜¨°Ð'7Ñ8Ô8ð"ð "ñ 9Ô8ð"ð „×Ò˜¨°,Ð'?Ñ@Ô@ðð ñ AÔ@ðð"ð "ð "ð'ð 'ð 'ð"*ð *ð *ð
*ð 
*ð 
*ð „×ÒØ-à	Œ�D˜!ÐØ	Œ�D˜!ÐØ	Œ×	Ò	˜qÑ	!Ô	!×	&Ò	& q¨"Ñ	-Ô	-¨s°AÐ6ðñô ð7ð 7ñô ð7ð „×Ò˜ {Ñ3Ô3ðð ñ 4Ô3ðð*ð ð ð „×Ò˜ {Ñ3Ô3ðHð Hñ 4Ô3ðHð „×Ò˜¨°,Ð'?Ñ@Ô@ðFð Fñ AÔ@ðFð „×Ò˜¨°Ð'=Ñ>Ô>ðð ñ ?Ô>ðð* „×ÒØ:ðð ð ñô ð	@ð 	@ñô ð	@ð „×Ò˜ {Ñ3Ô3ðTð Tñ 4Ô3ðTð „×Ò˜ {Ñ3Ô3ð5ð 5ñ 4Ô3ð5ð
Rð Rð Rð0Gð Gð Gð"	,ð 	,ð 	,ð9ð 9ð 9ð
/ð 
/ð 
/ð"ð "ð "ð
ð 
ð 
ð.ð .ð .ð
@ð 
@ð 
@ðXð Xð Xð4=ð =ð =ð „×Ò˜ $¨ Ñ/Ô/ð2ð 2ñ 0Ô/ð2ð!
ð !
ð !
ðH „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×ÒØØ%Ð'DÐEØ ð ñ ô ð
 „×ÒØàˆ˜ vÐ.Ñ.Ô.Øˆ˜ v°dÐ;Ñ;Ô;Øˆ˜¨¸Ð=Ñ=Ô=Øˆ˜Ð'8Ð9Ñ9Ô9Øˆ˜Ð'8ÀÐFÑFÔFØˆØØ#Ø'+Øð		
ñ 	
ô 	
ðð 	!ð ñ ô ð"ð ñ#ô ñô ñ	ô ð4ð „×ÒØ.Ø-Ð-Ñ/Ô/ñô ð „×ÒØØ"Ð#Ø ð ñ ô ð
 „×ÒØð 	ˆ˜¨6Ð2Ñ2Ô2ðð 	!ð ñ ô ð=Mð =Mñô ñô ñ	ô ð*=Mð@ „×ÒØ„J‡N‚NÐ$Ñ%Ô%¨Ò,Ð5Tð ñ ô ðð ñô ðð ð r1   