Ë
    ÷Q(hñ¢  ã                   ó¾  — 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&  ej                  «       Z'g d¢Z(d\  Z)Z* e+e)e*«      Z,dyd„Z-ej\                  j_                  de(«      ej\                  j_                  d e0de'jb                  jd                  d   «      «      d„ «       «       Z3ej\                  j_                  dg d¢«      ej\                  j_                  dg d¢«      ej\                  j_                  de&e%z   «      ej\                  j_                  dddg«      ej\                  j_                  dg d¢«      d„ «       «       «       «       «       Z4ej\                  j_                  de&e%z   «      d„ «       Z5ej\                  j_                  ddd g«      ej\                  j_                  de&e%z   «      d!„ «       «       Z6ej\                  j_                  de&e%z   «      d"„ «       Z7d#„ Z8ej\                  j_                  d$d%d&g«      ej\                  j_                  d'e(«      d(„ «       «       Z9ej\                  j_                  d) e: e; e<e(«      d d*hz
  «      «      «      ej\                  j_                  d+d,d-g«      ej\                  j_                  d.d&d%g«      ej\                  j_                  d/d&d%g«      d0„ «       «       «       «       Z=ej\                  j_                  d1ej|                  j                  d «      j�                  d2d3«       ej                   d2d3d4d ¬5«      d    ej|                  j                  d «      j�                  d6d2«      gg d7¢¬8«      ej\                  j_                  de(«      d9„ «       «       ZAej\                  j_                  dddg«      d:„ «       ZBej\                  j_                  de(«      d;„ «       ZCej\                  j_                  de(«      d<„ «       ZDej\                  j_                  de(«      d=„ «       ZEej\                  j_                  dg d>¢«      ej\                  j_                  d/d&d%g«      d?„ «       «       ZFej\                  j_                  d@ ejŽ                  g dA¢g dB¢g«       ejŽ                  g dA¢g dB¢g«      j�                  g«      ej\                  j_                  dCg dD¢«      dE„ «       «       ZIej\                  j_                  dFd  e+e'jb                  jd                  «      fd e+e'jb                  jd                  «      dz
  fd e+e'jb                  jd                  «      fg«      ej\                  j_                  d@e'jb                  e'jb                  j�                  g«      dG„ «       «       ZJej\                  j_                  dd*d g«      dH„ «       ZKej\                  j_                  dddg«      dI„ «       ZLdJ„ ZMdK„ ZNdL„ ZOdM„ ZPej\                  j_                  dNe'jb                  dOdPfe'jb                  dQdfej|                  j                  d «      j£                  dRdS«      dTdPfg«      dU„ «       ZRej\                  j_                  de(«      dV„ «       ZSdW„ ZTej\                  j_                  de(«      dX„ «       ZUej\                  j_                  dddg«      dY„ «       ZVej\                  j_                  dd dg«      dZ„ «       ZWej\                  j_                  d[g d\¢«      d]„ «       ZXej\                  j_                  de(«      d^„ «       ZYej\                  j_                  de(«      d_„ «       ZZd`„ Z[da„ Z\db„ Z]dc„ Z^dd„ Z_de„ Z`df„ Zadg„ Zbdh„ Zcdi„ Zddj„ Zeej\                  j_                  d$d%d&g«      dk„ «       Zfdl„ Zgej\                  j_                  dm e«       «      ej\                  j_                  dne#egge¬8«      ej\                  j_                  do edPd ¬p«       edPd d%¬q«       edrd d%¬q«       edPd¬p«       edPdd%¬q«       edPddsd ¬t«      ge¬8«      du„ «       «       «       Zhej\                  j_                  dm e«       «      ej\                  j_                  dnegge¬8«      ej\                  j_                  do edvd ¬p«      ge¬8«      dw„ «       «       «       Zidx„ Zjy)zé    N)Úassert_array_equal)Úconfig_contextÚdatasets)Úclone)Ú	load_irisÚmake_classificationÚmake_low_rank_matrix)ÚPCA)Ú_assess_dimensionÚ_infer_dimension)Ú_atol_for_typeÚ_convert_to_numpyÚ)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)ÚfullÚcovariance_eighÚarpackÚ
randomizedÚauto)éè  i,  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 ‚y )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/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/decomposition/tests/test_pca.pyÚ_check_fitted_pca_closer-   %   sÑ   € Ü�D×$Ñ$ d×&6Ñ&6¸TÈÕMÜØ× Ñ  $×":Ñ":ÀÈDõô �D×)Ñ)¨4×+@Ñ+@ÀtÐRVÕWÜ�D—J‘J §
¡
°¸DÕAÜ�D×(Ñ(¨$×*>Ñ*>ÀTÐPTÕUà×Ñ ×!3Ñ!3Ò3Ð3Ð3Ø�?‰?˜dŸo™oÒ-Ð-Ð-Ø×Ñ $×"5Ñ"5Ò5Ð5Ñ5ó    Ú
svd_solverÚn_componentsé   c                 óÞ  — t         j                  }t        || ¬«      }|j                  |«      j	                  |«      }|j
                  d   |k(  sJ ‚|j                  |«      }t        ||«       |j	                  |«      }t        ||«       |j                  «       }|j                  «       }t        t        j                  ||«      t        j                  |j
                  d   «      d¬«       y )N©r0   r/   r1   çê-�™—q=©r!   )ÚirisÚdatar
   ÚfitÚ	transformÚshapeÚfit_transformr   Úget_covarianceÚget_precisionÚnpÚdotÚeye)r/   r0   ÚXÚpcaÚX_rÚX_r2ÚcovÚ	precisions           r,   Útest_pcarG   3   sÃ   € ô 	�	‰	€AÜ
˜<°JÔ
?€Cð �'‰'�!‹*×
Ñ
˜qÓ
!€CØ�9‰9�Q‰<˜<Ò'Ð'Ð'ð ×Ñ˜QÓ€DÜ�C˜ÔØ
�-‰-˜Ó
€CÜ�C˜Ôð ×
Ñ
Ó
€CØ×!Ñ!Ó#€IÜ”B—F‘F˜3 	Ó*¬B¯F©F°1·7±7¸1±:Ó,>ÀUÖKr.   Údensity)ç{®Gáz„?çš™™™™™¹?g333333Ó?)r1   é   é
   Úsparse_containerr   r   Úscale)r1   rL   éd   c                 óú  — d}d}t         j                  j                  | «      } |t        j                  j                  t
        t        ||¬«      «      }	|j                  |	j                  d   «      |z  }
|	j                  |
«      }	t        ||| ¬«      }|j                  |	«       |	j                  «       }t        ||| ¬«      }|j                  |«       t        |||¬«        |t        j                  j                  t
        t        ||¬«      «      }|j                  «       }t        |j                  |«      |j                  |«      |¬«       t        |j                  |«      |j                  |«      |¬«       y)z?Check that the results are the same for sparse and dense input.r4   ç»½×Ùß|Û=©Úrandom_staterH   r1   ©r0   r/   rS   r5   N)r>   ÚrandomÚdefault_rngÚspÚsparseÚSPARSE_MÚSPARSE_Nr:   Úmultiplyr
   r8   Útoarrayr-   r   r9   )Úglobal_random_seedr/   rM   r0   rH   rN   r!   Útransform_atolrS   rA   Úscale_vectorrB   ÚXdÚpcadÚX2ÚX2ds                   r,   Útest_pca_sparserd   I   sN  € ð €DØ€Nä—9‘9×(Ñ(Ð);Ó<€LÙÜ
�	‰	×ÑÜÜØ%Øð	 	ó 	
ó	€Að  ×&Ñ& q§w¡w¨q¡zÓ2°UÑ:€LØ	�
‰
�<Ó €Aä
Ø!ØØ'ô€Cð
 ‡G�GˆA„Jà	
�‰‹€BÜØ!ØØ'ô€Dð
 	‡H�HˆR„Lô ˜C ¨DÕ1ñ 
Ü
�	‰	×ÑÜÜØ%Øð	 	ó 	
ó
€Bð �*‰*‹,€Cä�C—M‘M "Ó% s§}¡}°SÓ'9ÀÕOÜ�C—M‘M "Ó% t§~¡~°cÓ':ÀÖPr.   c                 óZ  — t         j                  j                  | «      } |t        j                  j                  t
        t        |d¬«      «      } |t        j                  j                  t
        t        |d¬«      «      }t        dd| ¬«      }t        dd| ¬«      }|j                  |«       |j                  |«      }t        ||«       t        ||j                  |«      «       t        ||j                  |«      «       t        |j                  |«      |j                  |«      «       y )NrI   rR   rL   r   rT   )r>   rU   rV   rW   rX   rY   rZ   r
   r8   r;   r-   r   r9   )r]   rM   rS   rA   rb   Úpca_fitÚpca_fit_transformÚtransformed_Xs           r,   Útest_pca_sparse_fit_transformri   †   s  € ä—9‘9×(Ñ(Ð);Ó<€LÙÜ
�	‰	×ÑÜÜØ%Øð	 	ó 	
ó	€Añ 
Ü
�	‰	×ÑÜÜØ%Øð	 	ó 	
ó
€Bô ˜r¨hÐEWÔX€GÜØ HÐ;MôÐð ‡K�K�„NØ%×3Ñ3°AÓ6€Mä˜GÐ%6Ô7Ü�MÐ#4×#>Ñ#>¸qÓ#AÔBÜ�M 7×#4Ñ#4°QÓ#7Ô8Ü�G×%Ñ% bÓ)Ð+<×+FÑ+FÀrÓ+JÕKr.   r   r   c                 óJ  — t         j                  j                  | «      } |t        j                  j                  t
        t        |¬«      «      }t        d|¬«      }d|› d�}t        j                  t        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)N©rS   é   r3   zWPCA only support sparse inputs with the "arpack" and "covariance_eigh" solvers, while "z" was passed©Úmatch)r>   rU   ÚRandomStaterW   rX   rY   rZ   r
   ÚpytestÚraisesÚ	TypeErrorr8   )r]   r/   rM   rS   rA   rB   Úerror_msg_patterns          r,   Útest_sparse_pca_solver_errorrt   ¨   s˜   € ô —9‘9×(Ñ(Ð);Ó<€LÙÜ
�	‰	×ÑÜÜØ%ð 	ó 	
ó	€Aô ˜2¨*Ô
5€Cð	Ø&˜< |ð	5ð ô 
�‰”yÐ(9Ô	:ñ Ø�‰�Œ
÷÷ ñ ús   Á>BÂB"c                 óV  — t         j                  j                  | «      } |t        j                  j                  t
        t        |¬«      «      }t        dd¬«      j                  |«      }t        dd¬«      j                  |«      }t        |j                  |j                  d¬«       y)	zHCheck that "auto" and "arpack" solvers are equivalent for sparse inputs.rk   rL   r   r3   r   ç{®Gázt?©r    N)r>   rU   ro   rW   rX   rY   rZ   r
   r8   r   r$   )r]   rM   rS   rA   Ú
pca_arpackÚpca_autos         r,   Ú7test_sparse_pca_auto_arpack_singluar_values_consistencyrz   ¼   sŒ   € ô
 —9‘9×(Ñ(Ð);Ó<€LÙÜ
�	‰	×ÑÜÜØ%ð 	ó 	
ó	€Aô  "°Ô:×>Ñ>¸qÓA€JÜ ¨vÔ6×:Ñ:¸1Ó=€HÜ�J×/Ñ/°×1JÑ1JÐQUÖVr.   c                  ó  — d} | dz   }t         j                  j                  dd| |f¬«      }t        | ¬«      }t	        j
                  «       5  t	        j                  dt        «       |j                  |«       d d d «       y # 1 sw Y   y xY w)NrL   rK   éÿÿÿÿr1   ©Úsize©r0   Úerror)	r>   rU   Úuniformr
   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr8   )r0   Ú
n_featuresrA   rB   s       r,   Útest_no_empty_slice_warningr‡   Î   sw   € à€LØ Ñ!€JÜ
�	‰	×Ñ˜"˜a |°ZÐ&@ÐÓA€AÜ
˜<Ô
(€CÜ	×	 Ñ	 Ó	"ñ Ü×Ñ˜g¤~Ô6Ø�‰�Œ
÷÷ ñ ús   Á,BÂB
ÚcopyTFÚsolverc                 ó¦  — t         j                  j                  d«      }d}d}d}d}t        j                  |j	                  ||«      t        j                  t        j
                  t        j                  dd|«      «      |j	                  ||«      «      «      }|d d …d d…fxx   dz  cc<   |j                  ||fk(  sJ ‚|j                  d¬	«      j                  «       d
kD  sJ ‚|j                  «       }t        |d|| dd¬«      }	|	j                  |j                  «       «      }
|
j                  ||fk(  sJ ‚|	j                  |«      }t        |
|d¬«       t        |
j                  dd¬«      t        j                  |«      «       t        |
j                  d¬	«      t        j                   |«      d¬«       |j                  «       }t        |d|| ¬«      j#                  |j                  «       «      }	|	j                  |«      }|j                  ||fk(  sJ ‚|j                  d¬	«      j                  «       t%        j&                  dd¬«      k(  sJ ‚y )Nr   rO   éP   rl   é2   g      $@ç      ð?é   ©ÚaxisgfffffæE@Té   )r0   Úwhitenrˆ   r/   rS   Úiterated_powergü©ñÒMb@?rw   r1   ©Úddofr�   r4   r5   F)r0   r’   rˆ   r/   gfffff†R@rJ   )Úrel)r>   rU   ro   r?   ÚrandnÚdiagÚlinspacer:   Ústdrˆ   r
   r;   r9   r   ÚonesÚmeanÚzerosr8   rp   Úapprox)r‰   rˆ   ÚrngÚ	n_samplesr†   r0   ÚrankrA   ÚX_rB   Ú
X_whitenedÚX_whitened2ÚX_unwhiteneds                r,   Útest_whiteningr¦   Ù   s	  € ô �)‰)×
Ñ
 Ó
"€CØ€IØ€JØ€LØ€Dô 	�‰Ø�	‰	�)˜TÓ"Ü
�‰Œr�w‰w”r—{‘{ 4¨¨dÓ3Ó4°c·i±iÀÀjÓ6QÓRó	€Að ‚aˆˆ"ˆ€fƒI��NƒIà�7‰7�y *Ð-Ò-Ð-Ð-ð �5‰5�aˆ5‹=×ÑÓ Ò%Ð%Ð%ð 
�‰‹€BÜ
Ø!ØØØØØô€Cð ×"Ñ" 2§7¡7£9Ó-€JØ×Ñ 	¨<Ð8Ò8Ð8Ð8Ø—-‘- Ó#€KÜ�J °$Õ7ä�J—N‘N¨°�NÓ2´B·G±G¸LÓ4IÔJÜ�J—O‘O¨�OÓ+¬R¯X©X°lÓ-CÈ%ÕPà	
�‰‹€BÜ
Ø!¨%°dÀvôç	�cˆ"�'‰'‹)ƒnð ð —=‘= Ó$€LØ×Ñ )¨\Ð!:Ò:Ð:Ð:ð ×Ñ ÐÓ#×'Ñ'Ó)¬V¯]©]¸4ÀTÔ-JÒJÐJÑJr.   Úother_svd_solverr   Ú
data_shapeÚtallÚwideÚrank_deficientr’   c                 óª	  — |dk(  rd\  }}nd\  }}d}|r[t         j                  j                  |«      }	t        ||«      dz  }
|	j	                  ||z   |
f¬«      |	j	                  |
|f¬«      z  }nt        ||z   |d|¬«      }t        ||«      }
|j                  |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œ|¤Ž}|j                  |«      }t        j                  |«      j                  «       sJ ‚|j                  |k(  sJ ‚|j                  |«      }t        j                  |«      j                  «       sJ ‚|j                  |k(  sJ ‚|j                  dk\  j                  «       sJ ‚t!        |j                  |j                  fi |¤Ž t!        |j"                  |j"                  fi |¤Ž |j$                  }t        j                  |«      j                  «       sJ ‚|j$                  }t        j                  |«      j                  «       sJ ‚|j                  |kD  }|j'                  «       dkD  sJ ‚t!        ||   ||   fi |¤Ž t!        |d d …|f   |d d …|f   fi |¤Ž |j)                  |«      }t        j                  |«      j                  «       sJ ‚|j                  |k(  sJ ‚|j)                  |«      }t        j                  |«      j                  «       sJ ‚|j                  |k(  sJ ‚t!        |d d …|f   |d d …|f   fi |¤Ž |j+                  |«      }t        j                  |«      j                  «       sJ ‚|j                  |k(  sJ ‚|j+                  |«      }t        j                  |«      j                  «       sJ ‚|j                  |k(  sJ ‚|j$                  j,                  d   |j$                  j,                  d   k(  rt!        ||fi |¤Ž t!        ||fi |¤Ž y |j$                  j,                  d   |
k  r-|j                  j                  «       |kD  sJ ‚t!        ||fi |¤Ž y t!        |j)                  |«      d d …|f   |j)                  |«      d d …|f   fi |¤Ž y )Nr©   )rO   rl   )rl   rO   rL   rK   r}   ç      à?)r    r†   Útail_strengthrS   F©rˆ   g¸…ëQ¸ž?çñhãˆµøä>)r!   r    rQ   r4   r   r“   rŒ   r   r1   r   ©r0   r/   r’   )r0   r/   r’   rS   r   © )r>   rU   rV   ÚminÚstandard_normalr	   ÚastypeÚfloat32ÚdictÚminimumr
   r;   ÚisfiniteÚallÚdtyper#   r   Úexplained_variance_ratio_r"   Úsumr9   Úinverse_transformr:   )r§   r¨   r«   r’   r]   Úglobal_dtyper    r†   Ún_samples_testrŸ   r¡   rA   ÚX_trainÚX_testÚtolsÚvariance_thresholdÚextra_other_kwargsr0   Ú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Ñ     s-  € ð �VÒØ 'Ñˆ	‘:à 'Ñˆ	�:Ø€NáÜ�i‰i×#Ñ#Ð$6Ó7ˆÜ�9˜jÓ)¨QÑ.ˆØ×ÑØ˜nÑ,¨dÐ3ð  ó 
à×Ñ d¨JÐ%7ÐÓ8ñ9‰ô !Ø .Ñ0Ø!ØØ+ô	
ˆô �9˜jÓ)ˆà	�‰� EˆÓ*€AØ˜
˜�m Q y z ]ˆV€Gà”r—z‘zÒ!Ü˜ DÔ)ˆØ!Ñä˜ UÔ+ˆØ"ÐàÐØ˜<Ò'ð ˆØ.°Ð3ÑØ	˜XÒ	%ô —z‘z )¨ZÓ8¸1Ñ<‰ð ˆä ¸ÈÔO€HÜð Ø!Ø#ØØ'ñ	ð
 ñ€Ið "×/Ñ/°Ó8ÐÜ�;‰;Ð)Ó*×.Ñ.Ô0Ð0Ð0Ø×#Ñ# |Ò3Ð3Ð3Ø#×1Ñ1°'Ó:ÐÜ�;‰;Ð*Ó+×/Ñ/Ô1Ð1Ð1Ø×$Ñ$¨Ò4Ð4Ð4à×(Ñ(¨AÑ-×2Ñ2Ô4Ð4Ð4Ü�H×0Ñ0°)×2OÑ2OÑXÐSWÒXÜØ×*Ñ*Ø×+Ñ+ñð òð
 $×/Ñ/ÐÜ�;‰;Ð+Ó,×0Ñ0Ô2Ð2Ð2Ø ×,Ñ,ÐÜ�;‰;Ð'Ó(×,Ñ,Ô.Ð.Ð.ð ×)Ñ)Ð,>Ñ>€FØ�:‰:‹<˜!ÒÐÐÜÐ(¨Ñ0Ð2BÀ6Ñ2JÑSÈdÒSô ØšA˜v˜IÑ&Ð(:º1¸f¸9Ñ(EñØIMòð !×*Ñ*¨6Ó2ÐÜ�;‰;Ð(Ó)×-Ñ-Ô/Ð/Ð/Ø×"Ñ" lÒ2Ð2Ð2Ø"×,Ñ,¨VÓ4ÐÜ�;‰;Ð)Ó*×.Ñ.Ô0Ð0Ð0Ø×#Ñ# |Ò3Ð3Ð3ÜÐ&¢q¨& yÑ1Ð3DÂQÈÀYÑ3OÑXÐSWÒXð "×3Ñ3Ð4EÓFÐÜ�;‰;Ð)Ó*×.Ñ.Ô0Ð0Ð0Ø×#Ñ# |Ò3Ð3Ð3Ø#×5Ñ5Ð6HÓIÐÜ�;‰;Ð*Ó+×/Ñ/Ô1Ð1Ð1Ø×$Ñ$¨Ò4Ð4Ð4à×Ñ×!Ñ! !Ñ$¨×(<Ñ(<×(BÑ(BÀ1Ñ(EÒEô 	Ð*¨FÑ;°dÒ;ÜÐ+¨VÑ<°tÓ<Ø	×	Ñ	×	#Ñ	# AÑ	&¨Ò	-ð ×+Ñ+×/Ñ/Ó1Ð4FÒFÐFÐFÜÐ*Ð,?ÑHÀ4ÓHô 	Ø×ÑÐ1Ó2²1°f°9Ñ=Ø×ÑÐ 3Ó4²Q¸°YÑ?ñ	
ð ó	
r.   rA   rO   r‹   éN   )Ún_informativerS   rL   )zrandom-tallzcorrelated-tallzrandom-wide)Úidsc                 óX  — t        d|d¬«      }|j                  | «      }t        |j                  t	        j
                  |dd¬«      «       t        j                  j                  t	        j                  | d¬«      «      d   }t        |d¬	«      d d }t        |j                  |d
¬«       y )NrK   r   rT   r1   r”   F)ÚrowvarT)Úreverserv   rw   )
r
   r;   r   r#   r>   ÚvarÚlinalgÚeigrE   Úsorted)rA   r/   rB   ÚX_pcaÚexpected_results        r,   Ú%test_pca_explained_variance_empiricalrÞ   œ  s†   € ô ˜1¨À!Ô
D€CØ×Ñ˜aÓ €EÜ�C×+Ñ+¬R¯V©V°EÀÈÔ-JÔKä—i‘i—m‘m¤B§F¡F¨1°UÔ$;Ó<¸QÑ?€OÜ˜_°dÔ;¸B¸QÐ?€OÜ�C×+Ñ+¨_À4ÖHr.   c                 ó0  — t         j                  j                  d«      }d\  }}|j                  ||«      }t	        dd|¬«      }t	        d| |¬«      }|j                  |«       |j                  |«       t        |j                  |j                  d¬«       y )Nr   ©rO   r‹   rK   r   rT   rv   rw   )r>   rU   ro   r—   r
   r8   r   r$   )r/   rŸ   r    r†   rA   rÆ   rÇ   s          r,   Ú$test_pca_singular_values_consistencyrá   °  s|   € ä
�)‰)×
Ñ
 Ó
"€CØ#Ñ€IˆzØ�	‰	�)˜ZÓ(€Aä ¨fÀ3ÔG€HÜ ¨zÈÔL€Ià‡L�L�„OØ‡M�M�!Ôä�H×-Ñ-¨y×/IÑ/IÐPTÖUr.   c           	      ól  — t         j                  j                  d«      }d\  }}|j                  ||«      }t	        d| |¬«      }|j                  |«      }t        t        j                  |j                  dz  «      t         j                  j                  |d«      dz  «       t        |j                  t        j                  t        j                  |dz  d¬«      «      «       d\  }}|j                  ||«      }t	        d| |¬«      }|j                  |«      }|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                  «      }|j                  |«       t        |j                  g d¢«       y )Nr   rà   rK   rT   Úfror�   )rO   én   rŽ   ç‰A`åÐ"	@r1   çX9´Èv¾@)rå   ræ   r�   )r>   rU   ro   r—   r
   r;   r   r½   r$   rÙ   ÚnormÚsqrtr?   r"   r8   )r/   rŸ   r    r†   rA   rB   ÚX_transÚX_hats           r,   Útest_pca_singular_valuesrë   ¿  s_  € ä
�)‰)×
Ñ
 Ó
"€CØ#Ñ€IˆzØ�	‰	�)˜ZÓ(€Aä
˜1¨À#Ô
F€CØ×Ñ Ó"€Gô Ü
�‰ˆs×#Ñ# QÑ&Ó'¬¯©¯©¸ÀÓ)GÈ1Ñ)Lôô �C×(Ñ(¬"¯'©'´"·&±&¸À!¹È!Ô2LÓ*MÔNð %Ñ€IˆzØ�	‰	�)˜ZÓ(€Aä
˜1¨À#Ô
F€CØ×Ñ Ó"€GØŒr�w‰w”r—v‘v˜g q™j¨qÔ1Ó2Ñ2€GØŠAˆqˆDƒM�UÑƒMØŠAˆqˆDƒM�UÑƒMÜ�F‰F�7˜CŸO™OÓ,€EØ‡G�GˆE„NÜ�C×(Ñ(Ò*=Õ>r.   c                 ó  — t         j                  j                  d«      }d\  }}|j                  ||«      dz  }|d dxxx t        j                  g d¢«      z  ccc d|j                  d|«      z  t        j                  g d¢«      z   }t        d| ¬«      j                  |«      j                  |«      }|t        j                  |dz  j                  «       «      z  }t        t        j                  |d   d   «      d	d
¬«       y )Nr   ©rO   rŽ   rJ   rL   ©rŽ   é   é   r1   rK   r3   r�   rv   rw   )r>   rU   ro   r—   Úarrayr
   r8   r9   rè   r½   r   Úabs)r/   rŸ   ÚnÚprA   ÚXtÚYts          r,   Útest_pca_check_projectionr÷   Ý  sÌ   € ô �)‰)×
Ñ
 Ó
"€CØ�D€A€qØ�	‰	�!�Q‹˜#Ñ€AØ€c€rƒFŒb�h‰h’yÓ!Ñ!ƒFØ	ˆs�y‰y˜˜A‹Ñ	¤§¡ª)Ó!4Ñ	4€Bä	˜!¨
Ô	3×	7Ñ	7¸Ó	:×	DÑ	DÀRÓ	H€BØŒ"�'‰'�2�q‘5—+‘+“-Ó
 Ñ €Bä”B—F‘F˜2˜a™5 ™8Ó$ c°Ö5r.   c                 óè   — ddgddgg}t        d| d¬«      }|j                  |«      }|j                  sJ d«       ‚t        |j	                  «       dd¬«       t        |j                  «       d	d
¬«       y )Nr�   g        r1   r   rT   )rK   r1   r4   r5   g¸…ëQ¸æ?rv   rw   )r
   r;   r:   r   rœ   rš   )r/   rA   rB   ré   s       r,   Útest_pca_check_projection_listrù   ì  si   € ð ˆsˆ�c˜3�ZÐ €AÜ
˜1¨À!Ô
D€CØ×Ñ Ó"€GØ�=Š=Ð ˜&Ó ˆ=Ü�G—L‘L“N D¨uÕ5Ü�G—K‘K“M 4¨dÖ3r.   )r   r   r   c                 ó:  — t         j                  j                  d«      }d\  }}|j                  ||«      }|d d …dfxx   dz  cc<   |g d¢z  }t	        d| |¬«      j                  |«      }|j                  |«      }|j                  |«      }t        ||d¬	«       y )
Nr   )rŒ   rŽ   r1   r°   )rð   rï   rŽ   rK   r±   çñhãˆµøÔ>rw   )	r>   rU   ro   r—   r
   r8   r9   r¾   r   )	r/   r’   rŸ   ró   rô   rA   rB   ÚYÚ	Y_inverses	            r,   Útest_pca_inverserþ   ÷  s�   € ô �)‰)×
Ñ
 Ó
"€CØ�D€A€qØ�	‰	�!�Q‹€AØ‚aˆ€dƒGˆwÑƒGØŠ�N€Aô ˜1¨¸FÔ
C×
GÑ
GÈÓ
J€CØ�‰�aÓ€AØ×%Ñ% aÓ(€IÜ�A�y tÖ,r.   r7   )r   r1   r   )r1   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   rK   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                 óp  — d}t        || ¬«      }t        j                  t        |¬«      5  |j	                  |«       d d d «       | dk(  rU|}dj                  ||«      }t        j                  t        |¬«      5  t        || ¬«      j	                  |«       d d d «       y y # 1 sw Y   ŒdxY w# 1 sw Y   y xY w)NrK   ©r/   rm   r   zgn_components={}L? must be strictly less than min\(n_samples, n_features\)={}L? with svd_solver='arpack')r
   rp   rq   Ú
ValueErrorr8   Úformat)r/   r7   r0   Úerr_msgÚ
smallest_dÚ
pca_fitteds         r,   Útest_pca_validationr  	  s­   € ð, €JÜ�\¨jÔ9€Jä	�‰”z¨Ô	1ñ Ø�‰�tÔ÷ð �XÒØ!ˆð"ç"(¡&¨°zÓ"Bð 	ô
 �]‰]œ:¨WÔ5ñ 	?Ü�¨Ô4×8Ñ8¸Ô>÷	?ð 	?ð ÷	ð ú÷	?ð 	?ús   «B Á9B,Â B)Â,B5zsolver, n_components_c                 ó`   — t        |¬«      }|j                  | «       |j                  |k(  sJ ‚y )Nr  )r
   r8   r'   )r7   r‰   r'   rB   s       r,   Útest_n_components_noner	  2  s-   € ô ˜Ô
 €CØ‡G�GˆD„MØ×Ñ Ò-Ð-Ñ-r.   c                 óÎ   — t         j                  j                  d«      }d\  }}|j                  ||«      }t	        d| ¬«      }|j                  |«       |j                  dk(  sJ ‚y )Nr   ©iX  rL   Úmler3   r1   )r>   rU   ro   r—   r
   r8   r'   )r/   rŸ   r    r†   rA   rB   s         r,   Útest_n_components_mler  A  s]   € ô �)‰)×
Ñ
 Ó
"€CØ#Ñ€IˆzØ�	‰	�)˜ZÓ(€AÜ
˜5¨ZÔ
8€CØ‡G�GˆA„JØ×Ñ Ò!Ð!Ñ!r.   c                 ó.  — t         j                  j                  d«      }d\  }}|j                  ||«      }t	        d| ¬«      }dj                  | «      }t        j                  t        |¬«      5  |j                  |«       d d d «       y # 1 sw Y   y xY w)Nr   r  r  r3   z:n_components='mle' cannot be a string with svd_solver='{}'rm   )
r>   rU   ro   r—   r
   r  rp   rq   r  r8   )r/   rŸ   r    r†   rA   rB   r  s          r,   Útest_n_components_mle_errorr  L  s�   € ô �)‰)×
Ñ
 Ó
"€CØ#Ñ€IˆzØ�	‰	�)˜ZÓ(€AÜ
˜5¨ZÔ
8€CØJ×QÑQØó€Gô 
�‰”z¨Ô	1ñ Ø�‰�Œ
÷÷ ñ ús   Á0BÂBc                  ó8  — t         j                  j                  d«      } d\  }}| j                  ||«      dz  }|d dxxx t        j                  g d¢«      z  ccc t        dd¬«      j                  |«      }|j                  dk(  sJ ‚|j                  d	k(  sJ ‚y )
Nr   ©rO   rð   rJ   rL   ©rŽ   rï   rð   r1   rK   r  r   r3   r1   )	r>   rU   ro   r—   rñ   r
   r8   r0   r'   )rŸ   ró   rô   rA   rB   s        r,   Útest_pca_dimr  [  s‹   € ä
�)‰)×
Ñ
 Ó
"€CØ�D€A€qØ�	‰	�!�Q‹˜#Ñ€AØ€c€rƒFŒb�h‰h’Ó'Ñ'ƒFÜ
˜5¨VÔ
4×
8Ñ
8¸Ó
;€CØ×Ñ˜uÒ$Ð$Ð$Ø×Ñ Ò!Ð!Ñ!r.   c            
      ó  — d\  } }t         j                  j                  d«      }|j                  | |«      dz  |j                  | d«      t        j                  g d¢«      z  z   t        j                  g d¢«      z   }t        |d¬«      }|j                  |«       |j                  }t        j                  t        d|«      D �cg c]  }t        ||| «      ‘Œ c}«      }|d   |j                  «       d	| z  z
  kD  sJ ‚y c c}w )
N©r   rð   r   rJ   r1   r  )r1   r   r‘   rï   é   r   r3   rI   )r>   rU   ro   r—   rñ   r
   r8   r#   Úranger   Úmax)ró   rô   rŸ   rA   rB   ÚspectÚkÚlls           r,   Útest_infer_dim_1r  f  sÝ   € ð �D€A€qÜ
�)‰)×
Ñ
 Ó
"€Cà�	‰	�!�Q‹˜#ÑØ
�)‰)�A�q‹/œBŸH™H¢_Ó5Ñ
5ñ	6ä
�(‰(’?Ó
#ñ	$ð ô
 ˜1¨Ô
0€CØ‡G�GˆA„JØ×#Ñ#€EÜ	�‰¼5ÀÀA»;ÖG°aÔ$ U¨A¨qÕ1ÒGÓ	H€BØˆa‰5�2—6‘6“8˜d Q™hÑ&Ò&Ð&Ñ&ùò Hs   ÃC>c                  óx  — d\  } }t         j                  j                  d«      }|j                  | |«      dz  }|d dxxx t        j                  g d¢«      z  ccc |ddxxx t        j                  g d¢«      z  ccc t        |d¬	«      }|j                  |«       |j                  }t        || «      d
kD  sJ ‚y )Nr  r   rJ   rL   r  é   ©r  r   r‘   rK   r|   r   r3   r1   ©	r>   rU   ro   r—   rñ   r
   r8   r#   r   ©ró   rô   rŸ   rA   rB   r  s         r,   Útest_infer_dim_2r"  w  sŸ   € ð �D€A€qÜ
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹˜#Ñ€AØ€c€rƒFŒb�h‰h’Ó'Ñ'ƒFØ€bˆƒH”—‘Ò)Ó*Ñ*ƒHÜ
˜1¨Ô
0€CØ‡G�GˆA„JØ×#Ñ#€EÜ˜E 1Ó%¨Ò)Ð)Ñ)r.   c            	      óÄ  — d\  } }t         j                  j                  d«      }|j                  | |«      dz  }|d dxxx t        j                  g d¢«      z  ccc |ddxxx t        j                  g d¢«      z  ccc |dd	xxx d
t        j                  g d¢«      z  z  ccc t        |d¬«      }|j                  |«       |j                  }t        || «      d
kD  sJ ‚y )Nr  r   rJ   rL   r  r  r  rl   é(   rK   )r|   r1   r|   r1   r|   r   r3   r   r!  s         r,   Útest_infer_dim_3r%  …  s¼   € Ø�D€A€qÜ
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹˜#Ñ€AØ€c€rƒFŒb�h‰h’Ó'Ñ'ƒFØ€bˆƒH”—‘Ò)Ó*Ñ*ƒHØ€bˆƒH�”B—H‘HÒ/Ó0Ñ0Ñ0ƒHÜ
˜1¨Ô
0€CØ‡G�GˆA„JØ×#Ñ#€EÜ˜E 1Ó%¨Ò)Ð)Ñ)r.   z'X, n_components, n_components_validatedgffffffî?rK   rI   rð   r  r­   c                 óª   — t        |d¬«      }|j                  | «       |j                  t        j                  |«      k(  sJ ‚|j
                  |k(  sJ ‚y )Nr   r3   )r
   r8   r0   rp   rž   r'   )rA   r0   Ún_components_validatedrB   s       r,   Ú$test_infer_dim_by_explained_variancer(  ’  sM   € ô ˜<°FÔ
;€CØ‡G�GˆA„JØ×ÑœvŸ}™}¨\Ó:Ò:Ð:Ð:Ø×ÑÐ 6Ò6Ð6Ñ6r.   c                 ó¤  — d\  }}t         j                  j                  d«      }|j                  ||«      dz  t        j                  g d¢«      z   }t        d| ¬«      }|j                  |«       |j                  |«      }dt        j                  dt         j                  z  t        j                  d«      z  d	z  «      z  |z  }t        ||z  dd
¬«       |j                  |j                  ||«      dz  t        j                  g d¢«      z   «      }||kD  sJ ‚t        dd| ¬«      }|j                  |«       |j                  |«      }||kD  sJ ‚y )N)r   rŽ   r   rJ   rî   rK   r3   g      à¿r1   g|®Gáz„?gš™™™™™©?rw   gš™™™™™É?T)r0   r’   r/   )r>   rU   ro   r—   rñ   r
   r8   ÚscoreÚlogÚpiÚexpr   )	r/   ró   rô   rŸ   rA   rB   Úll1ÚhÚll2s	            r,   Útest_pca_scorer1  ¡  s  € ð �D€A€qÜ
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹˜#Ñ¤§¡ªÓ 3Ñ3€AÜ
˜1¨Ô
4€CØ‡G�GˆA„Jà
�)‰)�A‹,€CØŒr�v‰v�aœ"Ÿ%™%‘i¤"§&¡&¨£)Ñ+¨fÑ4Ó5Ñ5¸Ñ9€AÜ�C˜!‘G˜Q TÕ*à
�)‰)�C—I‘I˜a “O cÑ)¬B¯H©H²YÓ,?Ñ?Ó
@€CØ�Š9Ðˆ9ä
˜1 T°jÔ
A€CØ‡G�GˆA„JØ
�)‰)�A‹,€CØ�Š9Ð‰9r.   c                  óx  — d\  } }t         j                  j                  d«      }|j                  | |«      |j                  | d«      t        j                  g d¢«      z  z   t        j                  g d¢«      z   }|j                  | |«      |j                  | d«      t        j                  g d¢«      z  z   t        j                  g d¢«      z   }t        j
                  |«      }t        |«      D ]4  }t        |d¬«      }|j                  |«       |j                  |«      ||<   Œ6 |j                  «       dk(  sJ ‚y )N)éÈ   rŽ   r   r1   rî   )r1   r   r‘   r   r3   )r>   rU   ro   r—   rñ   r�   r  r
   r8   r*  Úargmax)ró   rô   rŸ   ÚXlrõ   r  r  rB   s           r,   Útest_pca_score3r6  ·  sñ   € à�D€A€qÜ
�)‰)×
Ñ
 Ó
"€CØ	�‰�1�a‹˜3Ÿ9™9 Q¨›?¬R¯X©X²iÓ-@Ñ@Ñ	@Ä2Ç8Á8ÊIÓCVÑ	V€BØ	�‰�1�a‹˜3Ÿ9™9 Q¨›?¬R¯X©X²iÓ-@Ñ@Ñ	@Ä2Ç8Á8ÊIÓCVÑ	V€BÜ	�‰�!‹€BÜ�1‹Xò ˆÜ˜q¨VÔ4ˆØ�‰�ŒØ—	‘	˜"“ˆˆ1Šðð
 �9‰9‹;˜!ÒÐÑr.   c                 óÖ   — t        j                  d¬«      \  }}t        d| d¬«      }|j                  |«       t	        j
                  |j                  |j                  z
  dk\  «      sJ ‚y )NT©Ú
return_X_yrl   r   rT   )r   Úload_digitsr
   r8   r>   rº   r#   r&   )r/   rA   Ú_rB   s       r,   Útest_pca_sanity_noise_variancer<  Æ  sY   € ô ×Ñ¨4Ô0�D€A€qÜ
˜2¨*À1Ô
E€CØ‡G�GˆA„JÜ�6‰6�3×*Ñ*¨S×-@Ñ-@Ñ@ÀQÑFÔGÐGÑGr.   c                 ó
  — t        j                  d¬«      \  }}t        ddd¬«      }t        d| d¬«      }|j                  |«       |j                  |«       t	        |j                  |«      |j                  |«      d¬«       y )	NTr8  rl   r   r   rT   rû   rw   )r   r:  r
   r8   r   r*  )r/   rA   r;  rÆ   rÇ   s        r,   Ú"test_pca_score_consistency_solversr>  Ò  si   € ô ×Ñ¨4Ô0�D€A€qÜ ¨vÀAÔF€HÜ °
ÈÔK€IØ‡L�L�„OØ‡M�M�!ÔÜ�H—N‘N 1Ó% y§¡°qÓ'9ÀÖEr.   c                 ó´  — d\  }}t         j                  j                  d«      }|j                  ||«      dz  t        j                  g d¢«      z   }t        || ¬«      }|j                  |«       |j                  dk(  sJ ‚|j                  |«       |j                  |j                  «       |j                  dk(  sJ ‚|j                  |j                  «       y )Nrí   r   rJ   rî   r3   )
r>   rU   ro   r—   rñ   r
   r8   r&   r*  ÚT)r/   ró   rô   rŸ   rA   rB   s         r,   Ú'test_pca_zero_noise_variance_edge_casesrA  Þ  s¯   € ð �D€A€qÜ
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!�Q‹˜#Ñ¤§¡ªÓ 3Ñ3€Aä
˜1¨Ô
4€CØ‡G�GˆA„JØ×Ñ !Ò#Ð#Ð#ð ‡I�Iˆa„Là‡G�GˆA�C‰C„LØ×Ñ !Ò#Ð#Ð#ð ‡I�Iˆa�c‰c…Nr.   z4n_samples, n_features, n_components, expected_solver))rL   rŒ   rð   r   )r   rŒ   rŒ   r   )r   éô  i�  r   )r   rB  rL   r   )r   rB  r­   r   c                 óB  — t         j                  j                  d«      j                  | |f¬«      }t	        |d¬«      }t	        ||d¬«      }|j                  |«       |j                  |k(  sJ ‚|j                  |«       t        |j                  |j                  «       y )Nr   r}   )r0   rS   rT   )	r>   rU   ro   r�   r
   r8   Ú_fit_svd_solverr   r"   )r    r†   r0   Úexpected_solverr7   ry   Úpca_tests          r,   Útest_pca_svd_solver_autorG  ô  sŒ   € ô  �9‰9× Ñ  Ó#×+Ñ+°)¸ZÐ1HÐ+ÓI€DÜ ¸1Ô=€HÜØ!¨oÈAô€Hð ‡L�L�ÔØ×#Ñ# Ò6Ð6Ð6Ø‡L�L�ÔÜ�H×(Ñ(¨(×*>Ñ*>Õ?r.   c           	      óp  — t         j                  j                  d«      }|j                  dd«      }t        j                  d«      }t        d«      D ]+  }t        d| |¬«      }|j                  |«      d   ||d d …f<   Œ- t        |t        j                  |dd d …f   d«      j                  dd«      «       y )Nr   rL   )r  rK   r  rK   rT   )r>   rU   ro   Úrandr�   r  r
   r;   r   ÚtileÚreshape)r/   rŸ   rA   rh   ÚirB   s         r,   Útest_pca_deterministic_outputrM    s¡   € ä
�)‰)×
Ñ
 Ó
"€CØ�‰��RÓ€Aä—H‘H˜WÓ%€MÜ�2‹Yò 6ˆÜ˜q¨ZÀcÔJˆØ!×/Ñ/°Ó2°1Ñ5ˆ�aš�dÒð6ô �M¤2§7¡7¨=¸ºA¸Ñ+>ÀÓ#C×#KÑ#KÈBÐPQÓ#RÕSr.   c                 ó2   — t        | |«       t        | «       y )N)Ú"check_pca_float_dtype_preservationÚ$check_pca_int_dtype_upcast_to_double)r/   r]   s     r,   Útest_pca_dtype_preservationrQ    s   € ä& zÐ3EÔFÜ(¨Õ4r.   c                 óø  — t         j                  j                  |«      j                  dd«      }|j	                  t         j
                  d¬«      }|j	                  t         j                  «      }t        d| |¬«      j                  |«      }t        d| |¬«      j                  |«      }|j                  j                  t         j
                  k(  sJ ‚|j                  j                  t         j                  k(  sJ ‚|j                  |«      j                  t         j
                  k(  sJ ‚|j                  |«      j                  t         j                  k(  sJ ‚t        |j                  |j                  dd¬«       y )	Nr   rï   Fr¯   rŽ   rT   gü©ñÒMbP?r   )r>   rU   ro   rI  rµ   Úfloat64r¶   r
   r8   r"   r»   r9   r   )r/   ÚseedrA   Ú	X_float64Ú	X_float32Úpca_64Úpca_32s          r,   rO  rO  !  s%  € ä
�	‰	×Ñ˜dÓ#×(Ñ(¨¨qÓ1€AØ—‘œŸ™¨%�Ó0€IØ—‘œŸ™Ó$€Iä˜a¨JÀTÔJ×NÑNØó€Fô ˜a¨JÀTÔJ×NÑNØó€Fð ×Ñ×#Ñ#¤r§z¡zÒ1Ð1Ð1Ø×Ñ×#Ñ#¤r§z¡zÒ1Ð1Ð1Ø×Ñ˜IÓ&×,Ñ,´·
±
Ò:Ð:Ð:Ø×Ñ˜IÓ&×,Ñ,´·
±
Ò:Ð:Ð:ô
 �F×&Ñ&¨×(:Ñ(:ÀÈDÖQr.   c                 óü  — t         j                  j                  d«      j                  ddd«      }|j	                  t         j
                  d¬«      }|j	                  t         j                  d¬«      }t        d| d¬«      j                  |«      }t        d| d¬«      j                  |«      }|j                  j                  t         j                  k(  sJ ‚|j                  j                  t         j                  k(  sJ ‚|j                  |«      j                  t         j                  k(  sJ ‚|j                  |«      j                  t         j                  k(  sJ ‚t        |j                  |j                  d¬	«       y )
Nr   r   )r   rï   Fr¯   rŽ   rT   g-Cëâ6?rw   )r>   rU   ro   Úrandintrµ   Úint64Úint32r
   r8   r"   r»   rS  r9   r   )r/   ÚX_i64ÚX_i32rW  rX  s        r,   rP  rP  9  s  € ä�I‰I×!Ñ! !Ó$×,Ñ,¨Q°°iÓ@€EØ�L‰LœŸ™¨ˆLÓ.€EØ�L‰LœŸ™¨ˆLÓ.€Eä˜a¨JÀQÔG×KÑKÈEÓR€FÜ˜a¨JÀQÔG×KÑKÈEÓR€Fà×Ñ×#Ñ#¤r§z¡zÒ1Ð1Ð1Ø×Ñ×#Ñ#¤r§z¡zÒ1Ð1Ð1Ø×Ñ˜EÓ"×(Ñ(¬B¯J©JÒ6Ð6Ð6Ø×Ñ˜EÓ"×(Ñ(¬B¯J©JÒ6Ð6Ð6ä�F×&Ñ&¨×(:Ñ(:ÀÖFr.   c                  ó  — t        d¬«      \  } }t        «       j                  | |«      }|j                  j	                  «       d   }t        |¬«      j                  | |«      }|j
                  | j                  d   k(  sJ ‚y )NTr8  éþÿÿÿr   r1   )r   r
   r8   r¼   Úcumsumr'   r:   )rA   Úyr*   r0   r+   s        r,   Ú5test_pca_n_components_mostly_explained_variance_ratiorc  J  so   € ô  Ô%�D€A€qÜ‹5�9‰9�Q˜‹?€Dà×1Ñ1×8Ñ8Ó:¸2Ñ>€LÜ˜LÔ)×-Ñ-¨a°Ó3€DØ×Ñ §¡¨¡Ò+Ð+Ñ+r.   c                  ó¾   — t        j                  g d¢«      } d}dD ]3  }t        j                  t        d¬«      5  t        | ||«       d d d «       Œ5 y # 1 sw Y   Œ@xY w)N©r1   ç ÂëþKH´9rf  rf  rL   )r   rð   z"should be in \[1, n_features - 1\]rm   )r>   rñ   rp   rq   r  r   )Úspectrumr    r¡   s      r,   Útest_assess_dimension_bad_rankrh  V  sZ   € ä�x‰xÒ0Ó1€HØ€IØò 9ˆÜ�]‰]œ:Ð-RÔSñ 	9Ü˜h¨¨iÔ8÷	9ð 	9ñ9÷	9ð 	9ús   ºAÁA	c                  óè   — t        j                  g d¢«      } t        | dd¬«      t         j                   kD  sJ ‚dD ]#  }t        | |d«      t         j                   k(  rŒ#J ‚ t	        | d«      dk(  sJ ‚y )Nre  r1   rL   ©r¡   r    )rK   rŽ   )r>   rñ   r   Úinfr   )rg  r¡   s     r,   Útest_small_eigenvalues_mlerl  _  su   € ô �x‰xÒ0Ó1€Hä˜X¨A¸Ô<ÄÇÁ¸wÒFÐFÐFàò @ˆÜ  ¨4°Ó4¼¿¹¸Ó?Ð?Ð?ð@ô ˜H bÓ)¨QÒ.Ð.Ñ.r.   c                  ó˜   — t        j                  dddddd¬«      \  } }t        d¬«      j                  | «      }|j                  dk(  sJ ‚y )Nr  r1   é   é*   )r†   rÓ   Ú
n_repeatedÚn_redundantÚn_clusters_per_classrS   r  r   )r   r   r
   r8   r'   ©rA   r;  rB   s      r,   Útest_mle_redundant_datart  l  sU   € ô ×'Ñ'ØØØØØØô�D€A€qô ˜5Ô
!×
%Ñ
% aÓ
(€CØ×Ñ Ò!Ð!Ñ!r.   c                  óÖ   — t        j                  ddd¬«      \  } }t        dd¬«      }t        j                  t
        d¬	«      5  |j                  | «       d d d «       y # 1 sw Y   y xY w)
Nr  é   ro  )r    r†   rS   r  r   r3   z?n_components='mle' is only supported if n_samples >= n_featuresrm   )r   r   r
   rp   rq   r  r8   rs  s      r,   Útest_fit_mle_too_few_samplesrw  {  s]   € ô ×'Ñ'°"ÀÐRTÔU�D€A€qä
˜5¨VÔ
4€CÜ	�‰ÜØOô
ñ ð 	�‰�Œ
÷	÷ ñ ús   ÁAÁA(c                  ó  — d\  } }t         j                  j                  d«      j                  | |«      }t        j                  |d d …d d…f   d¬«      |d d …df<   t        dd¬«      }|j                  |«       |j                  |dz
  k(  sJ ‚y )	N)r   rL   r   r|   r�   r  r   r  r1   )r>   rU   ro   r—   rœ   r
   r8   r'   )r    Ún_dimrA   Úpca_skls       r,   Útest_mle_simple_caser{  ˆ  s‚   € ð  Ñ€IˆuÜ
�	‰	×Ñ˜aÓ ×&Ñ& y°%Ó8€AÜ�w‰w�qš˜C˜R˜C˜‘y rÔ*€A‚aˆ€e�HÜ�% FÔ+€GØ‡K�K�„NØ× Ñ  E¨A¡IÒ-Ð-Ñ-r.   c                  ó~  — d\  } }t        j                  | |f«      }t         j                  j                  |d¬«      \  }}}t	        |dd  t        j
                  |dz
  «      d¬«       t        j                  t        |d| ¬«      «      sJ ‚t        d|«      D ]#  }t        ||| «      t         j                   k(  rŒ#J ‚ y )	N)é	   r  T)Úfull_matricesr1   r4   r5   rj  rK   )
r>   r›   rÙ   Úsvdr   r�   r¹   r   r  rk  )r    r†   rA   r;  Úsr¡   s         r,   Útest_assess_dimesion_rank_oner�  “  s«   € à Ñ€IˆzÜ
�‰�˜JÐ'Ó(€AÜ�i‰i�m‰m˜A¨TˆmÓ2�G€A€qˆ!ä�A�a�b�Eœ2Ÿ8™8 J°¡NÓ3¸%Õ@ä�;‰;Ô(¨°¸iÔHÔIÐIÐIÜ�a˜Ó$ò @ˆÜ   D¨)Ó4¼¿¹¸Ó?Ð?Ð?ñ@r.   c                  ó0  — t         j                  j                  d«      } d}| j                  d|«      }t	        dd|d¬«      j                  |«      }t	        dd¬«      j                  |«      }t	        dd	d¬
«      j                  |«      }t        t        j                  |j                  «      t        j                  |j                  «      «       t        t        j                  |j                  «      t        j                  |j                  «      «       y)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   rO   r   r1   r   )r0   r/   Ún_oversamplesrS   r   r3   r   rT   N)	r>   rU   ro   r—   r
   r8   r   rò   r"   )rŸ   r†   rA   Úpca_randomizedrÆ   rx   s         r,   Ú%test_pca_randomized_svd_n_oversamplesr…     sÕ   € ô �)‰)×
Ñ
 Ó
"€CØ€JØ�	‰	�%˜Ó$€Aô ØØØ Øô	÷
 
�cˆ!ƒfð ô  ¨fÔ5×9Ñ9¸!Ó<€HÜ !°ÀqÔI×MÑMÈaÓP€Jä”B—F‘F˜8×/Ñ/Ó0´"·&±&¸×9OÑ9OÓ2PÔQÜ”B—F‘F˜>×5Ñ5Ó6¼¿¹¸z×?UÑ?UÓ8VÕWr.   c                  óÌ   — t        d¬«      j                  t        j                  «      } | j	                  «       }t        t        d«      D �cg c]  }d|› �‘Œ	 c}|«       yc c}w )z Check feature names out for PCA.rK   r   rB   N)r
   r8   r6   r7   Úget_feature_names_outr   r  )rB   ÚnamesrL  s      r,   Útest_feature_names_outr‰  º  sK   € ä
˜1Ô
×
!Ñ
!¤$§)¡)Ó
,€Cà×%Ñ%Ó'€EÜ¬5°«8Ö4 a˜#˜a˜Sš	Ò4°eÕ<ùÒ4s   ÁA!c                 óV  — t         j                  j                  d«      }|j                  dd«      }t	        «       j                  |«      }|j                  |j                  z  }t        j                  |dd¬«      j                  «       }t         j                  j                  ||«       y)z9Check the accuracy of PCA's internal variance calculationr   r   r3  r1   r”   N)r>   rU   ro   r—   r
   r8   r#   r¼   rØ   r½   Útestingr   )rˆ   rŸ   rA   rB   Úpca_varÚtrue_vars         r,   Útest_variance_correctnessrŽ  Â  s|   € ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�$˜Ó€AÜ
‹%�)‰)�A‹,€CØ×%Ñ%¨×(EÑ(EÑE€GÜ�v‰v�a˜a aÔ(×,Ñ,Ó.€HÜ‡J�J×Ñ˜w¨Õ1r.   c           	      óú  — t        ||«      }t        j                  j                  |«      }|j	                  ||¬«      }|j                  |«       |j                  «       }|j                  «       }	|j                  dk(  rdnd}
t        d¬«      5  t        |«      j                  |«      }|j                  «       }|j                  dk(  sJ ‚|j                  |j                  k(  sJ ‚t        t        ||¬«      ||
t        |«      ¬	«       |j                  «       }|j                  dk(  sJ ‚|j                  |j                  k(  sJ ‚t        t        ||¬«      |	|
t        |«      ¬	«       d d d «       y # 1 sw Y   y xY w)
Nr   r¶   g-Cëâ6*?gH¯¼šò×Š>T©Úarray_api_dispatch)rï   rï   ©Úxpr   )r   r6   r7   rµ   Úasarrayr8   r=   r<   r»   r   r   r:   r   r   r   )ÚnameÚ	estimatorÚarray_namespacer   Ú
dtype_namer“  Úiris_npÚiris_xpÚprecision_npÚcovariance_npr    Úestimator_xpÚprecision_xpÚcovariance_xps                 r,   Úcheck_array_api_get_precisionr   Í  sV  € Ü	˜o¨vÓ	6€BÜ�i‰i×Ñ˜zÓ*€GØ�j‰j˜¨ˆjÓ0€Gà‡M�M�'ÔØ×*Ñ*Ó,€LØ×,Ñ,Ó.€Mà—=‘= IÒ-‰4°4€DÜ	¨4Ô	0ñ 
Ü˜YÓ'×+Ñ+¨GÓ4ˆØ#×1Ñ1Ó3ˆØ×!Ñ! VÒ+Ð+Ð+Ø×!Ñ! W§]¡]Ò2Ð2Ð2äÜ˜l¨rÔ2ØØÜ 
Ó+õ		
ð %×3Ñ3Ó5ˆØ×"Ñ" fÒ,Ð,Ð,Ø×"Ñ" g§m¡mÒ3Ð3Ð3äÜ˜m°Ô3ØØÜ 
Ó+õ		
÷!
÷ 
ñ 
ús   ÂCE1Å1E:z#array_namespace, device, dtype_nameÚcheckr–  r3   r±   rJ   ÚQR)r0   r/   Úpower_iteration_normalizerrS   c                 óJ   — | j                   j                  } ||| |||¬«       y )N©r   r˜  )Ú	__class__Ú__name__)r–  r¡  r—  r   r˜  r•  s         r,   Útest_pca_array_api_compliancer¨  ï  s%   € ð8 ×Ñ×'Ñ'€DÙ	ˆ$�	˜?°6ÀjÖQr.   r  c                 óä  — | j                   j                  } ||| |||¬«       t        ||«      }t        d¬«      \  }}|j	                  |d¬«      }t        |j                  «      }	t        | «      }
|j                  ||¬«      }|j                  ||¬«      }|
j                  ||«       |
j                  }|
j                  }t        |
«      }t        d¬«      5  |j                  ||«       |j                  }t        |«      t        |«      k(  sJ ‚t        ||¬	«      }|j                  }t        |«      t        |«      k(  sJ ‚t        ||¬	«      }d d d «       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   k7  r\|d   }||d  }||d  }t%        t'        j(                  ||z
  «      |	k  «      sJ ‚t%        t'        j(                  ||z
  «      |	k  «      sJ ‚y y # 1 sw Y   �ŒxY w)Nr¥  ro  rk   Fr¯   r   Tr�  r’  r1   r   r5   r|   )r¦  r§  r   r   rµ   r   r»   r   r”  r8   r"   r#   r   Úarray_devicer   r:   r³   r   rº   r>   rò   )r–  r¡  r—  r   r˜  r•  r“  rA   rb  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¹    s{  € ð. ×Ñ×'Ñ'€DÙ	ˆ$�	˜?°6ÀjÕQô 
˜o¨vÓ	6€Bä¨BÔ/�D€A€qØ	�‰� %ˆÓ(€AÜ˜!Ÿ'™'Ó"€Dä
�	Ó
€Cà�:‰:�a ˆ:Ó'€DØ�:‰:�a ˆ:Ó'€Dà‡G�GˆAˆq„Mà—O‘O€MØ×3Ñ3Ðä�3‹Z€FÜ	¨4Ô	0ñ SØ�
‰
�4˜ÔØ×*Ñ*ˆÜ˜MÓ*¬l¸4Ó.@Ò@Ð@Ð@Ü,¨]¸rÔBÐà &× :Ñ :ÐÜÐ1Ó2´lÀ4Ó6HÒHÐHÐHÜ#4Ð5JÈrÔ#RÐ ÷Sð ×!Ñ! ]×%8Ñ%8Ò8Ð8Ð8Ø×!Ñ! !Ñ$¨×(;Ñ(;¸AÑ(>Ò>Ð>Ð>Ø#×)Ñ)Ð-B×-HÑ-HÒHÐHÐHô Ð)×/Ñ/°Ñ2°M×4GÑ4GÈÑ4JÓK€NÜØ   .Ð1Ø˜o˜~Ð.Øõð ×Ñ˜aÑ  M×$7Ñ$7¸Ñ$:Ò:Ø2°2Ñ6ÐØ1°.°/ÐBÐØ7¸¸ÐHÐÜ”2—6‘6Ð+Ð.@Ñ@ÓAÀDÑHÔIÐIÐIÜ”2—6‘6Ð.Ð1CÑCÓDÀtÑKÔLÐLÑLð ;÷3Sñ Sús   ÃA7I%É%I/c                  óÈ  — t        j                  d«       t        j                  d«      } | j                  t        j                  «      }t        ddd¬«      }t        j                  d«      }t        j                  t        |¬«      5  t        d	¬
«      5  |j                  |«       d d d «       d d d «       |j                  dd¬«       t        j                  d«      }t        j                  t        |¬«      5  t        d	¬
«      5  |j                  |«       d d d «       d d d «       |j                  dd¬«       t        j                  d«      }t        j                  t        |¬«      5  t        d	¬
«      5  |j                  |«       d d d «       d d d «       y # 1 sw Y   ŒöxY w# 1 sw Y   ŒúxY w# 1 sw Y   ŒœxY w# 1 sw Y   Œ xY w# 1 sw Y   ŒBxY w# 1 sw Y   y xY w)NÚarray_api_compatÚarray_api_strictrK   r   r   rT   zCPCA with svd_solver='arpack' is not supported for Array API inputs.rm   Tr�  r   ÚLU)r/   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.)rp   Úimportorskipr”  r6   r7   r
   ÚreÚescaperq   r  r   r8   Ú
set_paramsÚwarnsÚUserWarning)r“  rš  rB   Úexpected_msgs       r,   Ú7test_array_api_error_and_warnings_on_unsupported_paramsrÅ  ]  s�  € Ü
×ÑÐ*Ô+Ü	×	Ñ	Ð/Ó	0€BØ�j‰jœŸ™Ó#€Gä
˜1¨ÀÔ
B€CÜ—9‘9ØMó€Lô 
�‰”z¨Ô	6ñ Ü¨tÔ4ñ 	Ø�G‰G�GÔ÷	÷ð ‡N�N˜lÀt€NÔLÜ—9‘9ð	6ó€Lô 
�‰”z¨Ô	6ñ Ü¨tÔ4ñ 	Ø�G‰G�GÔ÷	÷ð ‡N�N˜lÀv€NÔNÜ—9‘9ð	Qó€Lô 
�‰”k¨Ô	6ñ Ü¨tÔ4ñ 	Ø�G‰G�GÔ÷	÷ð ÷#	ð 	ú÷ð ú÷	ð 	ú÷ð ú÷	ð 	ú÷ð úsl   ÂF(ÂFÂ'F(Ã:G ÄF4ÄG Å,GÅ9GÆGÆF%	Æ!F(Æ(F1Æ4F=	Æ9G Ç G	ÇG	ÇGÇG!)gH¯¼šò×z>r4   )kr¿  r‚   Únumpyr>   rp   ÚscipyrW   Ú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   r6   ÚPCA_SOLVERSrY   rZ   r³   ÚSPARSE_MAX_COMPONENTSr-   ÚmarkÚparametrizer  r7   r:   rG   rd   ri   rt   rz   r‡   r¦   rÛ   ÚlistÚsetrÑ   rU   ro   r—   rÞ   rá   rë   r÷   rù   rþ   rñ   r@  r  r	  r  r  r  r  r"  r%  rI  r(  r1  r6  r<  r>  rA  rG  rM  rQ  rO  rP  rc  rh  rl  rt  rw  r{  r�  r…  r‰  rŽ  r   r¨  r¹  rÅ  r²   r.   r,   ú<module>rÙ     s`	  ðÛ 	Û ã Û Û Ý ,ç ,Ý ß QÑ QÝ %ß J÷ñ õ
 <Ý Rß Hõ÷ ?à€x×ÑÓ€ÚI€ð
 Ñ €ˆ(Ù˜H hÓ/Ð ó6ð ‡�×Ñ˜ {Ó3Ø‡�×Ñ˜©¨q°$·)±)·/±/À!Ñ2DÓ)EÓFñLó Gó 4ðLð( ‡�×Ñ˜Ò$5Ó6Ø‡�×Ñ˜ªÓ4Ø‡�×ÑÐ+¨^¸nÑ-LÓMØ‡�×Ñ˜¨Ð2CÐ'DÓEØ‡�×Ñ˜¢,Ó/ñ5Qó 0ó Fó Nó 5ó 7ð
5Qðp ‡�×ÑÐ+¨^¸nÑ-LÓMñLó NðLðB ‡�×Ñ˜¨°fÐ'=Ó>Ø‡�×ÑÐ+¨^¸nÑ-LÓMñó Nó ?ðð$ ‡�×ÑÐ+¨^¸nÑ-LÓMñWó NðWò"ð ‡�×Ñ˜ $¨ Ó/Ø‡�×Ñ˜ ;Ó/ñ1Kó 0ó 0ð1Kðj ‡�×ÑØ™™t¡C¨Ó$4¸ÀÐ7GÑ$GÓHÓIóð ‡�×Ñ˜¨°Ð'7Ó8Ø‡�×ÑÐ)¨E°4¨=Ó9Ø‡�×Ñ˜ E¨4 =Ó1ñC
ó 2ó :ó 9óðC
ðL ‡�×ÑØà
�	‰	×Ñ˜aÓ ×&Ñ& s¨BÓ/Ø$ˆ×$Ñ$ S¨"¸BÈQÔOÐPQÑRØ
�	‰	×Ñ˜aÓ ×&Ñ& r¨3Ó/ðò
 	:ð ó ð ‡�×Ñ˜ {Ó3ñIó 4óðIð ‡�×Ñ˜¨°,Ð'?Ó@ñVó AðVð ‡�×Ñ˜ {Ó3ñ?ó 4ð?ð: ‡�×Ñ˜ {Ó3ñ6ó 4ð6ð ‡�×Ñ˜ {Ó3ñ4ó 4ð4ð ‡�×Ñ˜Ò'GÓHØ‡�×Ñ˜ E¨4 =Ó1ñ-ó 2ó Ið-ð  ‡�×ÑØ
ˆXˆR�X‰X’y¢)Ð,Ó-¨x¨r¯x©xºÂIÐ8NÓ/O×/QÑ/QÐRóð ‡�×ÑØ'òóñ ?ó!óð&?ð, ‡�×ÑØà	‘�T—Y‘Y—_‘_Ó%Ð&Ø	‘3�t—y‘y—‘Ó'¨!Ñ+Ð,Ø	‘s˜4Ÿ9™9Ÿ?™?Ó+Ð,ðóð ‡�×Ñ˜ $§)¡)¨T¯Y©Y¯[©[Ð!9Ó:ñ.ó ;óð.ð ‡�×Ñ˜¨°Ð'7Ó8ñ"ó 9ð"ð ‡�×Ñ˜¨°,Ð'?Ó@ñó Aðò"ò'ò"*ò
*ð ‡�×ÑØ-à	�‰�D˜!ÐØ	�‰�D˜!ÐØ	�‰×	Ñ	˜qÓ	!×	&Ñ	& q¨"Ó	-¨s°AÐ6ðóñ7óð7ð ‡�×Ñ˜ {Ó3ñó 4ðò*ð ‡�×Ñ˜ {Ó3ñHó 4ðHð ‡�×Ñ˜¨°,Ð'?Ó@ñFó AðFð ‡�×Ñ˜¨°Ð'=Ó>ñó ?ðð* ‡�×ÑØ:òóñ	@óð	@ð ‡�×Ñ˜ {Ó3ñTó 4ðTð ‡�×Ñ˜ {Ó3ñ5ó 4ð5ò
Rò0Gò"	,ò9ò
/ò"ò
ò.ò
@òXò4=ð ‡�×Ñ˜ $¨ Ó/ñ2ó 0ð2ò
ðD ‡�×ÑØ)Ñ+TÓ+Vóð ‡�×ÑØØ%Ð'DÐEØ ð ó ð
 ‡�×ÑØá˜ vÔ.Ù˜ v°dÔ;Ù˜¨¸Ô=Ù˜Ð'8Ô9Ù˜Ð'8ÀÔFÙØØ#Ø'+Øô		
ðð 	!ð ó ñ"Ró#óóð2Rð ‡�×ÑØ)Ñ+TÓ+Vóð ‡�×ÑØØ"Ð#Ø ð ó ð
 ‡�×ÑØñ 	˜¨6Ô2ðð 	!ð ó ñ7Móóóð(7Mótr.   