`L i,>dZddlZddlZddlZddlZddlZddlmZddl m Z m Z m Z ddl mZddlmZddlmZmZd!dZd Zd Zd Zej0j3d d dgdZdZdZej0j3d d dgdZdZej0j?dej0j3dgddZ dZ!dZ"ej0j3dgdej0j3dd dgej0j3dd dgdZ#ej0j3d d dgdZ$d Z%y)"z Test the fastica algorithm. N)stats)PCAFastICAfastica)_gs_decorrelation)ConvergenceWarning)assert_allcloseignore_warningsctj||}||jdz}||jdz}y)aCenters and norms x **in place** Parameters ----------- x: ndarray Array with an axis of observations (statistical units) measured on random variables. axis: int, optional Axis along which the mean and variance are calculated. raxisN)nprollaxismeanstd)xr s n/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/decomposition/tests/test_fastica.pycenter_and_normrs< AtAQAAActjj|}tjj |j dd\}}}|j d}t ||d|dzjdksJ|j d}t ||d}tj||j}|dddzjdksJy)N g|=) rrandom RandomStatelinalgsvdrandnrsumdotT)global_random_seedrngW_wutmps rtest_gsr)#s ))   2 3CiimmCIIb"-.GAq! " AaB qD::<' !! ! " A!Q"A &&ACC.C GqL   ' )) )rctjjd}|jdj |d}t ddddj |}|jj|k(sJ|jj|k(sJ|jj|k(sJ|jj|k(sJy) NrdrFcopyr unit-variance n_componentsmax_iterwhiten random_state) rrr random_sampleastyperfit components_dtypemixing_mean_ whitening_) global_dtyper#Xficas rtest_fastica_attributes_dtypesrA1s ))   "C )$++Lu+EA oA  c!f     ! !\ 11 1 <<   -- - ::  | ++ + ?? L 00 0rctjjd}|jdj |d}t |dd|\}}}|j |k(sJ|j |k(sJ|j |k(sJy)Nrr+Fr-r/r0)r3r4r5)rrrr6r7rr:)r>r#r?k_r;s_s rtest_fastica_return_dtypesrE=s ))   "C )$++Lu+EA DsOB 88| ## # ==L (( ( 88| ## #r add_noiseTFc  |dk(rB|tjk(r/|s-tjddk(rt j dtj j|}d}dtjtjdd|zdkDd z }tjjd || }tj||fj}t||j!|}|\}}d }tj"tj$|tj|gtj|tj$| gg} | j!|} tj&| |} |r| d |j)ddzz } t| d } ddg} ddd| g} gd}t+j,| | |D]\}}}|rht/| j||||\}}}t j0t25t/| jtj4||dddn{t7dd|}|j9| j}t/|||d|\}}}t j0t25t/|tj4|ddd|j}|rM|tjk(rdnd}t;tj&tj&||| ||t||\}}t=tj&||t=tj&||kDr|\}}|tj>tj&||z}|tj>tj&||z}|sLt;tj&|||z d dt;tj&|||z d dBt;tj&|||z d d t;tj&|||z d d t/| j|\}}}tA|||}|j9| j}|jBjDdk(sJ|jDd k(sJt;||tjFtj<||tjk(rdnd!z}t;||jI| j||jJjDdk(sJtAtj4|}t j0t25|jM| jdddy#1swYxYw#1swYxYw#1swYyxYw)"NDISTRIBubuntuzFastICA instability with Ubuntu Atlas build with float32 global_dtype. For more details, see https://github.com/scikit-learn/scikit-learn/issues/24131#issuecomment-1208091119r/rrr,sizer5g333333?皙?c<|dzd|dzzjdfS)Nrr )r)rs rg_testz#test_fastica_simple..g_testms$!ta!Q$h__"_---rparallel deflationlogcoshexpcubearbitrary-variancer0F)funr4 algorithmr5)rZr4r[Tr2r4r5F)rZr[r4r5)rZr[gh㈵>atolg{Gz?)rZr[r5rrr/rgHz>)'rfloat32osgetenvpytestxfailrrsinlinspacertrvsc_r!rr7arraycosr r itertoolsproductrraises ValueErrortanhr fit_transformr abssignrr9shapemax transformr;r8)rFr"r>r# n_sampless1s2sphimixingmrRalgosnls whiteningalgonlr4rCr;rDpcar?r^s1_s2_r% sources_funicasourcess rtest_fastica_simplerHs b BJJ & IIi H ,  `  ))   2 3CI bffR[[C34 4q 8A =B QY5G HB b"f AA A FB C XXs RVVC[1BFF3K"&&+3NO PF ]]< (F vqA S399Q% %%A. %E eVV ,C>I%--eS)D)Gb& %FdOBz* I4H I I1TDC!!!##&A%rT%cOBz* 8rww$7 8 TT  (2::541D BFF266'2#6:BT JS rvvc2 #bffS"o"6 6HC rwwrvvc2'' rwwrvvc2'' BFF3Oi7 F BFF3Oi7 F BFF3Oi7 F BFF3Oi7 FS)GX  t2DAq+ bD7I JC$G ?? F ** * ==I %% %K) 66"&&/ "lbjj.Hdd SDGS]]133/d; ;;   && & bgg .C z "  q I I 8 8`s$(W$WWW W W'cddgddgg}tddd}d}tjt|5|j |dddt |dsJy#1swYxYw)NrrKFr\z(Ignoring n_components with whiten=False.matchr;)rrdwarns UserWarningr8hasattr)r~rwarn_msgs rtest_fastica_nowhitenrsg Q!QA qQ ?C9H k 2   3 "" "s AA&cntjj|}d}tjdd|}tj|}tj tjtj |z}tj||fj}t||jdd}tj||}d} tjt| 5tdd|dd } | j!|jdddy#1swYyxYw) Nr/rr,rz\FastICA did not converge. Consider increasing tolerance or the maximum number of iterations.rrS)r[r2r5r3tol)rrrrgrfceilpirjr!rrr rdrrrr8) r"r#rxrhryrzr{r}r~rrs rtest_fastica_convergence_failrs ))   2 3CI AsI&A B  " #B b"f AAYYq!_F vqA /  ( 9 qsQTW   s 6,D++D4c tjj|}d}tjdd|}tj|}tj tjtj |z}tj||fj}t||\}}|jdd}tj||} |r| d|jd|zz } t| t| jdd|\} } } | j} t| tjtj| | | t| | \} }ttj| |ttj| |kDr| \}} | tjtj| |z} |tjtj||z}|sKttj| ||z d d ttj|||z d d yy) Nr/rr,rrrNr0r\rKgMbP?r])rrrrgrfrrrjr!rrr rr rsrt)r"rFr#rxrhryrzr{r}r~rCr;rDrrs rtest_non_square_fasticars ))   2 3CI AsI&A B  " #B b"f AA FBYYq!_F vqA S399Q * **A !O#OB BBrvvgr2A67BHC 266#r?c"&&b/22S277266#r? ##C277266#r? ##C sB)3QTBsB)3QTB rctjj|}|jdj |}d}ddgddgfD]\}}||n|j d}t |||d }tj5tjd ttjd t|j|} ddd|jj |d fk(sJ j |j d|fk(sJt |||d } tj5tjd ttjd t| j|ddd| jj |d fk(sJ| j|} |r'tj | j#d z } nd} t%| | | y#1swY#xYw#1swYxYw)zTest unit variance of transformed data using FastICA algorithm. Check that `fit_transform` gives the same result as applying `fit` and then `transform`. Bug #13056 r+i,r0rFNrKrr1errorignorerg.Arr])rrrr6r7rurwarningscatch_warnings simplefilterRuntimeWarningrrrr9r8rwrsrr ) r"r>r#r?r3r4r2 n_components_rXtica2Xt2r^s rtest_fit_transformr s ))   2 3C )$++L9AH"11!5t} E#, (4(@ aggaj %VW  $ $ & &  ! !'> :  ! !(,> ?""1%B &$$(;;;;xxAGGAJ 6666%VW  $ $ &   ! !'> :  ! !(,> ? HHQK   %%-)<<<<nnQ 66#;##%+DDCd+G#,  & &  sAG.5AG;.G8 ;H z/ignore:Ignoring n_components with whiten=False.z+whiten, n_components, expected_mixing_shape))rYrrr)rYrrr)r0rr)r0rr)Frr)Frrctd}tjj|}|j|dfj |}t |||}t j5t jdt|j|} ddd|jj|k(sJ|j } |j| jk(sJ||jdk(r:|r'tj| jdz } nd} t!|| | yy#1swYxYw) Nr,r)r2r5r4rrKgj@rr])rrrr6r7rrrrrrrr;ruinverse_transformrsrr ) r4r2expected_mixing_shaper"r>rxr#r?rrX2r^s rtest_inverse_transformr=s I ))   2 3C 9b/*11,?A |#f MC  "" h(:;   q ! " ;;   5 55 5  r "B 77bhh  qwwqz! 66":??$s*DD2D)"""s &,D..D7cd}d}tjjd}|j||f}|j |dz|dz}t j td5t|ddidddt j td 5t|| dddy#1swY;xYw#1swYyxYw) NrPrrrKzalpha must be in \[1,2\]ralpha)fun_argsz0w_init has invalid shape.+should be \(3L?, 3L?\))w_init) rrrr6rrdrorpr) n_featuresrxr#r?rs rtest_fastica_errorsrisJI ))   "C 9j12A YYzA~zA~ 6F z)D E*WaL)* M " &!""**""s*B4C4B=C ctjj|}|jd}|jd}t |dd}|j |}tj|tjdk(sJy)zTTest unit variance of transformed data using FastICA algorithm. Bug #13056 r+rKr0rr\g?N) rrrr6rurrrvarrdapprox)r"r#r?r2rrs r!test_fastica_whiten_unit_variancerwst ))   2 3C )$A771:L |ORS TC  1 B 66":s+ ++ +rr4rX return_X_mean return_n_itercd}d}tjjd}|j||f}d|z|z}t ||||}t ||k(sJ|s|dJyy)NrPrr)r4rr)rrrr6rlen) r4rrrrxr#r? expected_lenouts rtest_fastica_output_shapersJI ))   "C 9j12A}$}4L  & ] C s8| ## # 1v~~ rctjj|}d}dtjtjdd|zdkDdz }t j jd||}tj||fj}t||\}}|jdztjz}tjtj|tj|gtj|tj| gg}tj||} |r| d|j!ddzz } t| i} dD]\} t#dd | } | j%| j} | | | <| j&j(d k(sJ| j(d k(r\Jt+| d | ddy)z2Test FastICA is consistent between whiten_solvers.r/rrr,rKrLrN)reighr0r5r4 whiten_solverr_r`rrg-q=r]N)rrrrfrgrrhrirjr!rrandrrkrlr rrrrr9rur )rFr"r#rxryrzr{r|r}r~outssolverrrs r%test_fastica_simple_different_solversrs ))   2 3CI bffR[[C34 4q 8A =B QYS 9B b"f AA FB ((*q.255 C XXs RVVC[1BFF3K"&&+3NO PF vqA S399Q% %%A D!*1_FS##ACC(V $$...}} ))) *DL$u+E:rcptjj|}|jdd}||jz}t ddd}d}t jt|5tt 5|j|d d d d d d y #1swYxYw#1swYy xYw) z:Test FastICA eigh solver raises warning for low-rank data.rrrr0rrz$There are some small singular valuesr)categoryN) rrrrr!rrdrrr rr8)r"r#Ar?rmsgs r"test_fastica_eigh_low_rank_warningrs ))   2 3C "aA ACCA q OC 0C k - &8 9  GGAJ    s$,B,=B B, B) %B,,B5)rQ)&__doc__rmrbrnumpyrrdscipyrsklearn.decompositionrrrsklearn.decomposition._fasticarsklearn.exceptionsrsklearn.utils._testingr r rr)rArEmark parametrizerrrrrfilterwarningsrrrrrrrrrs  77<1C  * 1$tUm4h5hV#<tUm4*C5*CZ/,dMN1 * O*@ " ,#QR4-84-899S"tUm4;5;D r