§
    qŠtj,>  ã                   ó   — d Z 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mZ ddlmZ ddlmZ ddlmZmZ d"d	„Zd
„ Zd„ Zd„ Zej                             dddg¦  «        d„ ¦   «         Zd„ Zd„ Zej                             dddg¦  «        d„ ¦   «         Zd„ Zej                             d¦  «        ej                             dg d¢¦  «        d„ ¦   «         ¦   «         Z d„ Z!d„ Z"ej                             dg d¢¦  «        ej                             dddg¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         ¦   «         Z#ej                             dddg¦  «        d „ ¦   «         Z$d!„ Z%dS )#z
Test the fastica algorithm.
é    N)Ústats)ÚPCAÚFastICAÚfastica)Ú_gs_decorrelation)ÚConvergenceWarning)Úassert_allcloseÚignore_warningséÿÿÿÿc                 ó”   — t          j        | |¦  «        } | |                      d¬¦  «        z  } | |                      d¬¦  «        z  } dS )a  Centers 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.
    r   ©ÚaxisN)ÚnpÚrollaxisÚmeanÚstd)Úxr   s     úf/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/decomposition/tests/test_fastica.pyÚcenter_and_normr      sE   € õ 	Œ�A�tÑÔ€AØˆ�Š�Qˆ‰ŒÑ€AØˆ�Š�Aˆ‰ŒÑ€A€A€Aó    c                 ó  — t           j                             | ¦  «        }t           j                             |                     dd¦  «        ¦  «        \  }}}|                     d¦  «        }t          ||d¦  «         |dz                       ¦   «         dk     sJ ‚|                     d¦  «        }t          ||d¦  «        }t          j        ||j	        ¦  «        }|d d…         dz                       ¦   «         dk     sJ ‚d S )Né
   é   g»½×Ùß|Û=é   )
r   ÚrandomÚRandomStateÚlinalgÚsvdÚrandnr   ÚsumÚdotÚT)Úglobal_random_seedÚrngÚWÚ_ÚwÚuÚtmps          r   Útest_gsr*   #   sß   € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CÝŒi�mŠm˜CŸIšI b¨"Ñ-Ô-Ñ.Ô.�G€A€qˆ!Ø�	Š	�"‰Œ€AÝ�a˜˜BÑÔÐØˆq‰D�:Š:‰<Œ<˜'Ò!Ð!Ð!Ð!Ø�	Š	�"‰Œ€AÝ˜!˜Q Ñ"Ô"€AÝ
Œ&��A”C‰.Œ.€CØ���ŒG�q‰L×ÒÑÔ 'Ò)Ð)Ð)Ð)Ð)Ð)r   c                 ót  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          dddd¬¦  «                             |¦  «        }|j        j        | k    sJ ‚|j	        j        | k    sJ ‚|j
        j        | k    sJ ‚|j        j        | k    sJ ‚d S )	Nr   ©éd   r   F©Úcopyr   éè  úunit-variance©Ún_componentsÚmax_iterÚwhitenÚrandom_state)r   r   r   Úrandom_sampleÚastyper   ÚfitÚcomponents_ÚdtypeÚmixing_Úmean_Ú
whitening_)Úglobal_dtyper$   ÚXÚficas       r   Útest_fastica_attributes_dtypesrB   1   sÉ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AÝØ ¨oÈAðñ ô ç	‚cˆ!�f„fð 	ð ÔÔ! \Ò1Ð1Ð1Ð1ØŒ<Ô Ò-Ð-Ð-Ð-ØŒ:Ô˜|Ò+Ð+Ð+Ð+ØŒ?Ô  LÒ0Ð0Ð0Ð0Ð0Ð0r   c                 ó  — t           j                             d¦  «        }|                     d¦  «                             | d¬¦  «        }t          |dd|¬¦  «        \  }}}|j        | k    sJ ‚|j        | k    sJ ‚|j        | k    sJ ‚d S )Nr   r,   Fr.   r0   r1   )r4   r5   r6   )r   r   r   r7   r8   r   r;   )r?   r$   r@   Úk_r<   Ús_s         r   Útest_fastica_return_dtypesrF   =   s¡   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜)Ñ$Ô$×+Ò+¨L¸uÐ+ÑEÔE€AÝØ	�D ¸sðñ ô �O€Bˆ�ð Œ8�|Ò#Ð#Ð#Ð#ØŒ=˜LÒ(Ð(Ð(Ð(ØŒ8�|Ò#Ð#Ð#Ð#Ð#Ð#r   Ú	add_noiseTFc           	      óÞ  — |dk    r>|t           j        k    r.| s,t          j        d¦  «        dk    rt	          j        d¦  «         t           j                             |¦  «        }d}dt          j        t          j	        dd|¦  «        ¦  «        z  dk    d	z
  }t          j                             d	||¬
¦  «        }t           j        ||f         j        }t          |¦  «         |                     |¦  «        }|\  }}d}t          j        t          j        |¦  «        t          j        |¦  «        gt          j        |¦  «        t          j        |¦  «         gg¦  «        }	|	                     |¦  «        }	t          j        |	|¦  «        }
| r|
d|                     dd¦  «        z  z  }
t          |
¦  «         d„ }ddg}ddd|g}g d¢}t+          j        |||¦  «        D �]·\  }}}|rqt/          |
j        ||||¬¦  «        \  }}}t	          j        t2          ¦  «        5  t/          |
j        t           j        ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   n‘t7          dd|¬¦  «        }|                     |
j        ¦  «        }t/          |||d|¬¦  «        \  }}}t	          j        t2          ¦  «        5  t/          |t           j        |¬¦  «         d d d ¦  «         n# 1 swxY w Y   |j        }|rL|t           j        k    rdnd}t;          t          j        t          j        ||¦  «        |
¦  «        ||¬¦  «         t          |¦  «         |\  }}t=          t          j        ||¦  «        ¦  «        t=          t          j        ||¦  «        ¦  «        k    r|\  }}|t          j        t          j        ||¦  «        ¦  «        z  }|t          j        t          j        ||¦  «        ¦  «        z  }| sRt;          t          j        ||¦  «        |z  d	d¬¦  «         t;          t          j        ||¦  «        |z  d	d¬¦  «         �Œgt;          t          j        ||¦  «        |z  d	d¬¦  «         t;          t          j        ||¦  «        |z  d	d¬¦  «         �Œ¹t/          |
j        |||¬¦  «        \  }}}tA          |||¬¦  «        }|                     |
j        ¦  «        }|j!        j"        dk    sJ ‚|j"        d k    sJ ‚t;          ||¦  «         t          j#        t          j        |¦  «        ¦  «        |t           j        k    rdnd!z  }t;          || $                    |
j        ¦  «        |¬¦  «         |j%        j"        dk    sJ ‚tA          t           j        |¬¦  «        }t	          j        t2          ¦  «        5  | &                    |
j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )"Né   ÚDISTRIBÚubuntuz®FastICA instability with Ubuntu Atlas build with float32 global_dtype. For more details, see https://github.com/scikit-learn/scikit-learn/issues/24131#issuecomment-1208091119r0   r   r   r-   é   ©Úsizer6   g333333ã?çš™™™™™¹?c                 óD   — | dz  d| dz  z                        d¬¦  «        fS )Né   r   r   r   )r   )r   s    r   Úg_testz#test_fastica_simple.<locals>.g_testm   s'   € Ø�!‰t�a˜!˜Q™$‘h—_’_¨"�_Ñ-Ô-Ð-Ð-r   ÚparallelÚ	deflationÚlogcoshÚexpÚcube©úarbitrary-variancer1   F)Úfunr5   Ú	algorithmr6   )rZ   r5   r[   T©r3   r5   r6   F)rZ   r[   r5   r6   )rZ   r[   gñhãˆµøä>©Úatolg{®Gáz„?)rZ   r[   r6   ©r   r   ©r0   r   gH¯¼šò×z>)'r   Úfloat32ÚosÚgetenvÚpytestÚxfailr   r   ÚsinÚlinspacer   ÚtÚrvsÚc_r"   r   r8   ÚarrayÚcosr!   r   Ú	itertoolsÚproductr   ÚraisesÚ
ValueErrorÚtanhr   Úfit_transformr	   ÚabsÚsignr   r:   ÚshapeÚmaxÚ	transformr<   r9   )rG   r#   r?   r$   Ú	n_samplesÚs1Ús2ÚsÚphiÚmixingÚmrR   ÚalgosÚnlsÚ	whiteningÚalgoÚnlr5   rD   r<   rE   Úpcar@   r^   Ús1_Ús2_r&   Úsources_funÚicaÚsourcess                                 r   Útest_fastica_simplerŠ   H   s‡  € ð 	˜bÒ Ð Ø�BœJÒ&Ð&Øð 'åŒI�iÑ Ô  HÒ,Ð,åŒð`ñ	
ô 	
ð 	
õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ€Ià
�bŒf•R”[  C¨Ñ3Ô3Ñ4Ô4Ñ
4°qÒ
8¸AÑ	=€BÝ	Œ�Š�Q˜YÐ5GˆÑ	HÔ	H€BÝ
Œˆb�"ˆfŒŒ€AÝ�AÑÔÐØ	�Š�ÑÔ€AØ�F€Bˆð €CÝŒX�œ˜s™œ¥R¤V¨C¡[¤[Ð1µB´F¸3±K´KÅ"Ä&ÈÁ+Ä+ÀÐ3NÐOÑPÔP€FØ�]Š]˜<Ñ(Ô(€FÝ
Œˆv�qÑÔ€Aàð &Ø	ˆS�3—9’9˜Q Ñ%Ô%Ñ%Ñ%ˆå�AÑÔÐð.ð .ð .ð ˜Ð%€EØ�e˜V VÐ
,€CØ>Ð>Ð>€IÝ%Ô-¨e°S¸)ÑDÔDð )Gñ )GÑˆˆb�&Øð 	8Ý%Ø”˜ F°dÈðñ ô ‰OˆB�˜õ ”�zÑ*Ô*ð Ið IÝ˜œ¥¤°À4ÐHÑHÔHÐHðIð Ið Iñ Iô Ið Ið Ið Ið Ið Ið Iøøøð Ið Ið Ið Iøõ  1¨TÀÐDÑDÔDˆCØ×!Ò! !¤#Ñ&Ô&ˆAÝ%Ø�r T°%Àcðñ ô ‰OˆB�˜õ ”�zÑ*Ô*ð 8ð 8Ý˜�rœw°$Ð7Ñ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8àŒTˆàð 	Kð (­2¬:Ò5Ð5�4�4¸1ˆDÝ�BœF¥2¤6¨'°2Ñ#6Ô#6¸Ñ:Ô:¸BÀTÐJÑJÔJÐJå˜ÑÔÐØ‰ˆˆSõ �rŒv�c˜2‰ŒÑÔ¥#¥b¤f¨S°"¡o¤oÑ"6Ô"6Ò6Ð6Ø‰HˆC�Ø�rŒw•r”v˜c 2‘”Ñ'Ô'Ñ'ˆØ�rŒw•r”v˜c 2‘”Ñ'Ô'Ñ'ˆð ð 	GÝ�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÝ�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÑFå�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÝ�BœF 3¨™OœO¨iÑ7¸ÀÐFÑFÔFÐFÑFõ  Ø	Œ�˜tÐ2Dðñ ô Ñ€A€qˆ+õ �b DÐ7IÐ
JÑ
JÔ
J€CØ×Ò ¤Ñ$Ô$€GØŒ?Ô  FÒ*Ð*Ð*Ð*ØŒ=˜IÒ%Ð%Ð%Ð%å�K Ñ)Ô)Ð)õ Œ6•"”&˜‘/”/Ñ"Ô"¨l½b¼jÒ.HÐ.H d dÈdÑS€DÝ�G˜SŸ]š]¨1¬3Ñ/Ô/°dÐ;Ñ;Ô;Ð;àŒ;Ô Ò&Ð&Ð&Ð&å
•b”g¨Ð
.Ñ
.Ô
.€CÝ	Œ•zÑ	"Ô	"ð ð Ø�Š�”‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   È#IÉI	ÉI	Ê6KËK#	Ë&K#	Ö:W"×"W&×)W&c                  óò   — ddgddgg} t          ddd¬¦  «        }d}t          j        t          |¬¦  «        5  |                     | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          |d¦  «        sJ ‚d S )Nr   rL   Fr\   z(Ignoring n_components with whiten=False.©Úmatchr<   )r   rd   ÚwarnsÚUserWarningr9   Úhasattr)r~   rˆ   Úwarn_msgs      r   Útest_fastica_nowhitenr’   ´   sÄ   € Ø
ˆQˆ�!�Q�Ð€Aõ ˜q¨¸QÐ
?Ñ
?Ô
?€CØ9€HÝ	Œ•k¨Ð	2Ñ	2Ô	2ð ð Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å�3˜	Ñ"Ô"Ð"Ð"Ð"Ð"Ð"s   ¸AÁAÁ!Ac                 óp  — t           j                             | ¦  «        }d}t          j        dd|¦  «        }t          j        |¦  «        }t          j        t          j        t           j        |z  ¦  «        ¦  «        }t           j        ||f         j        }t          |¦  «         | 
                    dd¦  «        }t          j        ||¦  «        }d}	t          j        t          |	¬¦  «        5  t          dd|dd	¬
¦  «        }
|
                     |j        ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr0   r   r-   é   r   z\FastICA did not converge. Consider increasing tolerance or the maximum number of iterations.rŒ   rS   ç        )r[   r3   r6   r4   Útol)r   r   r   rg   rf   ÚceilÚpirj   r"   r   r   r!   rd   rŽ   r   r   r9   )r#   r$   rx   rh   ry   rz   r{   r}   r~   r‘   rˆ   s              r   Útest_fastica_convergence_failr™   ¿   sZ  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€Cà€Iå
Œ�A�s˜IÑ&Ô&€AÝ	Œ�‰Œ€BÝ	Œ•”�œ ™	Ñ"Ô"Ñ	#Ô	#€BÝ
Œˆb�"ˆfŒŒ€AÝ�AÑÔÐð �YŠY�q˜!‰_Œ_€FÝ
Œˆv�qÑÔ€Að	/ð õ 
ŒÕ(°Ð	9Ñ	9Ô	9ð ð ÝØ ¨q¸sÈQÐTWð
ñ 
ô 
ˆð 	�Š�”‰Œˆð	ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Ã//D+Ä+D/Ä2D/c           	      óÌ  — t           j                             | ¦  «        }d}t          j        dd|¦  «        }t          j        |¦  «        }t          j        t          j        t           j        |z  ¦  «        ¦  «        }t           j        ||f         j        }t          |¦  «         |\  }}| 
                    dd¦  «        }t          j        ||¦  «        }	|r|	d| 
                    d|¦  «        z  z  }	t          |	¦  «         t          |	j        dd|¬¦  «        \  }
}}|j        }t          |t          j        t          j        ||
¦  «        |	¦  «        ¦  «         t          |¦  «         |\  }}t          t          j        ||¦  «        ¦  «        t          t          j        ||¦  «        ¦  «        k    r|\  }}|t          j        t          j        ||¦  «        ¦  «        z  }|t          j        t          j        ||¦  «        ¦  «        z  }|sRt          t          j        ||¦  «        |z  d	d
¬¦  «         t          t          j        ||¦  «        |z  d	d
¬¦  «         d S d S )Nr0   r   r-   r”   r   rO   r1   r\   rL   gü©ñÒMbP?r]   )r   r   r   rg   rf   r—   r˜   rj   r"   r   r   r!   r   r	   rs   rt   )r#   rG   r$   rx   rh   ry   rz   r{   r}   r~   rD   r<   rE   r…   r†   s                  r   Útest_non_square_fasticar›   Ý   s'  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€Cà€Iå
Œ�A�s˜IÑ&Ô&€AÝ	Œ�‰Œ€BÝ	Œ•”�œ ™	Ñ"Ô"Ñ	#Ô	#€BÝ
Œˆb�"ˆfŒŒ€AÝ�AÑÔÐØ�F€Bˆð �YŠY�q˜!‰_Œ_€FÝ
Œˆv�qÑÔ€Aàð +Ø	ˆS�3—9’9˜Q 	Ñ*Ô*Ñ*Ñ*ˆå�AÑÔÐåØ	Œ˜! OÀ#ðñ ô �O€Bˆ�ð 
Œ€Bõ �B�œ�rœv g¨rÑ2Ô2°AÑ6Ô6Ñ7Ô7Ð7å�BÑÔÐØ�H€Cˆõ �2Œ6�#�r‰?Œ?ÑÔ�c¥"¤&¨¨b¡/¤/Ñ2Ô2Ò2Ð2Ø‰ˆˆSØ�2Œ7•2”6˜#˜r‘?”?Ñ#Ô#Ñ#€CØ�2Œ7•2”6˜#˜r‘?”?Ñ#Ô#Ñ#€Cð ð CÝ�œ˜s B™œ¨)Ñ3°Q¸TÐBÑBÔBÐBÝ�œ˜s B™œ¨)Ñ3°Q¸TÐBÑBÔBÐBÐBÐBðCð Cr   c                 ó$  — t           j                             | ¦  «        }|                     d¦  «                             |¦  «        }d}ddgddgfD �]¼\  }}|�|n|j        d         }t          |||d¬	¦  «        }t          j        ¦   «         5  t          j	        d
t          ¦  «         t          j	        dt          ¦  «         |                     |¦  «        }	ddd¦  «         n# 1 swxY w Y   |j        j        |dfk    sJ ‚|	j        |j        d         |fk    sJ ‚t          |||d¬	¦  «        }
t          j        ¦   «         5  t          j	        d
t          ¦  «         t          j	        dt          ¦  «         |
                     |¦  «         ddd¦  «         n# 1 swxY w Y   |
j        j        |dfk    sJ ‚|
                     |¦  «        }|r*t          j        |¦  «                             ¦   «         dz  }nd}t%          |	||¬¦  «         �Œ¾dS )z¶Test 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,  r1   r   FNrL   r   r2   ÚerrorÚignorer   g    €„.Ar•   r]   )r   r   r   r7   r8   ru   r   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningr   rr   r:   r9   rw   rs   r   r	   )r#   r?   r$   r@   r4   r5   r3   Ún_components_rˆ   ÚXtÚica2ÚXt2r^   s                r   Útest_fit_transformr§     s°  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò˜)Ñ$Ô$×+Ò+¨LÑ9Ô9€AØ€HØ"1°1Ð!5¸¸t°}Ð Eð #,ñ #,Ñˆ�Ø(4Ð(@˜˜ÀaÄgÈaÄjˆåØ%°ÀÐVWð
ñ 
ô 
ˆõ Ô$Ñ&Ô&ð 	&ð 	&õ Ô! '­>Ñ:Ô:Ð:õ Ô! (Õ,>Ñ?Ô?Ð?Ø×"Ò" 1Ñ%Ô%ˆBð	&ð 	&ð 	&ñ 	&ô 	&ð 	&ð 	&ð 	&ð 	&ð 	&ð 	&øøøð 	&ð 	&ð 	&ð 	&ð ŒÔ$¨¸Ð(;Ò;Ð;Ð;Ð;ØŒx˜AœG AœJ¨Ð6Ò6Ð6Ð6Ð6åØ%°ÀÐVWð
ñ 
ô 
ˆõ Ô$Ñ&Ô&ð 	ð 	õ Ô! '­>Ñ:Ô:Ð:ÝÔ! (Õ,>Ñ?Ô?Ð?Ø�HŠH�Q‰KŒKˆKð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð ÔÔ%¨-¸Ð)<Ò<Ð<Ð<Ð<Ø�nŠn˜QÑÔˆð ð 	Ý”6˜#‘;”;×#Ò#Ñ%Ô%¨Ñ+ˆDˆDàˆDÝ˜˜C dÐ+Ñ+Ô+Ð+Ñ+ðG#,ð #,s&   ÂA
C%Ã%C)	Ã,C)	ÅA
FÆF	Æ!F	z/ignore:Ignoring n_components with whiten=False.z+whiten, n_components, expected_mixing_shape))rY   r   ©r   r   )rY   r   ©r   r   )r1   r   r¨   )r1   r   r©   )Fr   r©   )Fr   r©   c                 óŒ  — d}t           j                             |¦  «        }|                     |df¦  «                             |¦  «        }t          ||| ¬¦  «        }t          j        ¦   «         5  t          j        dt          ¦  «         | 
                    |¦  «        }	d d d ¦  «         n# 1 swxY w Y   |j        j        |k    sJ ‚|                     |	¦  «        }
|j        |
j        k    sJ ‚||j        d         k    rB|r*t          j        |
¦  «                             ¦   «         dz  }nd}t!          ||
|¬¦  «         d S d S )	Nr-   r   )r3   r6   r5   rž   rL   g     jø@r•   r]   )r   r   r   r7   r8   r   rŸ   r    r¡   r   rr   r<   ru   Úinverse_transformrs   r   r	   )r5   r3   Úexpected_mixing_shaper#   r?   rx   r$   r@   rˆ   r¤   ÚX2r^   s               r   Útest_inverse_transformr®   =  s‹  € ð  €IÝ
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò˜9 b˜/Ñ*Ô*×1Ò1°,Ñ?Ô?€Aå
˜|¸#ÀfÐ
MÑ
MÔ
M€CÝ	Ô	 Ñ	"Ô	"ð "ð "õ 	Ô˜hÕ(:Ñ;Ô;Ð;Ø×Ò˜qÑ!Ô!ˆð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð Œ;ÔÐ 5Ò5Ð5Ð5Ð5Ø	×	Ò	˜rÑ	"Ô	"€BØŒ7�b”hÒÐÐÐð �q”w˜q”zÒ!Ð!ð ð 	õ ”6˜"‘:”:—?’?Ñ$Ô$ sÑ*ˆDˆDàˆDÝ˜˜2 DÐ)Ñ)Ô)Ð)Ð)Ð)ð "Ð!s   Á10B-Â-B1Â4B1c                  óÈ  — d} d}t           j                             d¦  «        }|                     || f¦  «        }|                     | dz   | dz   ¦  «        }t          j        t          d¬¦  «        5  t          |ddi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d	¬¦  «        5  t          ||¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NrQ   r   r   rL   zalpha must be in \[1,2\]rŒ   Úalpha)Úfun_argsz0w_init has invalid shape.+should be \(3L?, 3L?\))Úw_init)	r   r   r   r7   r   rd   ro   rp   r   )Ú
n_featuresrx   r$   r@   r²   s        r   Útest_fastica_errorsr´   i  sl  € Ø€JØ€IÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜9 jÐ1Ñ2Ô2€AØ�YŠY�z A‘~ z°A¡~Ñ6Ô6€FÝ	Œ•zÐ)DÐ	EÑ	EÔ	Eð *ð *Ý�˜W a˜LÐ)Ñ)Ô)Ð)ð*ð *ð *ñ *ô *ð *ð *ð *ð *ð *ð *øøøð *ð *ð *ð *å	ŒÝÐMð
ñ 
ô 
ð "ð "õ 	�˜&Ð!Ñ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s$   Á2BÂBÂBÂ8CÃCÃCc                 ó.  — t           j                             | ¦  «        }|                     d¦  «        }|j        d         }t          |dd¬¦  «        }|                     |¦  «        }t          j        |¦  «        t          j	        d¦  «        k    sJ ‚dS )zTTest unit variance of transformed data using FastICA algorithm.

    Bug #13056
    r,   rL   r1   r   r\   g      ð?N)
r   r   r   r7   ru   r   rr   Úvarrd   Úapprox)r#   r$   r@   r3   rˆ   r¤   s         r   Ú!test_fastica_whiten_unit_variancer¸   w  s‰   € õ
 Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ×Ò˜)Ñ$Ô$€AØ”7˜1”:€LÝ
˜|°OÐRSÐ
TÑ
TÔ
T€CØ	×	Ò	˜1Ñ	Ô	€BåŒ6�"‰:Œ:�œ sÑ+Ô+Ò+Ð+Ð+Ð+Ð+Ð+r   r5   rX   Úreturn_X_meanÚreturn_n_iterc                 óö   — d}d}t           j                             d¦  «        }|                     ||f¦  «        }d|z   |z   }t	          || ||¬¦  «        }t          |¦  «        |k    sJ ‚| s
|d         �J ‚d S d S )NrQ   r   r   )r5   rº   r¹   )r   r   r   r7   r   Úlen)	r5   r¹   rº   r³   rx   r$   r@   Úexpected_lenÚouts	            r   Útest_fastica_output_shaper¿   …  s¤   € ð €JØ€IÝ
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜9 jÐ1Ñ2Ô2€Aà�}Ñ$ }Ñ4€Lå
Ø	�&¨À]ðñ ô €Cõ ˆs‰8Œ8�|Ò#Ð#Ð#Ð#Øð Ø�1Œvˆ~ˆ~ˆ~ðð Øˆ~r   c                 óÆ  — t           j                             |¦  «        }d}dt          j        t          j        dd|¦  «        ¦  «        z  dk    dz
  }t
          j                             d||¬¦  «        }t           j        ||f         j	        }t          |¦  «         |\  }}|                     ¦   «         dz  t           j        z  }t          j        t          j        |¦  «        t          j        |¦  «        gt          j        |¦  «        t          j        |¦  «         gg¦  «        }t          j        ||¦  «        }	| r|	d|                     dd¦  «        z  z  }	t          |	¦  «         i }
dD ]R}t#          dd	|¬
¦  «        }|                     |	j	        ¦  «        }||
|<   |j        j        dk    sJ ‚|j        dk    sJ ‚ŒSt+          |
d         |
d         d¬¦  «         dS )z2Test FastICA is consistent between whiten_solvers.r0   r   r   r-   rL   rM   rO   )r   Úeighr1   ©r6   r5   Úwhiten_solverr_   r`   rÁ   r   gê-�™—q=r]   N)r   r   r   rf   rg   r   rh   ri   rj   r"   r   Úrandr˜   rk   rl   r!   r   r   rr   r:   ru   r	   )rG   r#   r$   rx   ry   rz   r{   r|   r}   r~   ÚoutsÚsolverrˆ   r‰   s                 r   Ú%test_fastica_simple_different_solversrÇ   ™  sÁ  € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ€Ià
�bŒf•R”[  C¨Ñ3Ô3Ñ4Ô4Ñ
4°qÒ
8¸AÑ	=€BÝ	Œ�Š�Q˜Y°SˆÑ	9Ô	9€BÝ
Œˆb�"ˆfŒŒ€AÝ�AÑÔÐØ�F€Bˆð �(Š(‰*Œ*�q‰.�2œ5Ñ
 €CÝŒX�œ˜s™œ¥R¤V¨C¡[¤[Ð1µB´F¸3±K´KÅ"Ä&ÈÁ+Ä+ÀÐ3NÐOÑPÔP€FÝ
Œˆv�qÑÔ€Aàð &Ø	ˆS�3—9’9˜Q Ñ%Ô%Ñ%Ñ%ˆå�AÑÔÐà€DØ!ð *ð *ˆÝ 1¨_ÈFÐSÑSÔSˆØ×#Ò# A¤CÑ(Ô(ˆØˆˆV‰ØŒÔ$¨Ò.Ð.Ð.Ð.ØŒ} 	Ò)Ð)Ð)Ð)Ð)õ �D˜”L $ u¤+°EÐ:Ñ:Ô:Ð:Ð:Ð:r   c                 ó˜  — t           j                             | ¦  «        }|                     dd¦  «        }||j        z  }t          ddd¬¦  «        }d}t          j        t          |¬¦  «        5  t          t          ¬	¦  «        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 )z:Test FastICA eigh solver raises warning for low-rank data.r   r   r   r1   rÁ   rÂ   z$There are some small singular valuesrŒ   )ÚcategoryN)r   r   r   r   r"   r   rd   rŽ   r�   r
   r   r9   )r#   r$   ÚAr@   rˆ   Úmsgs         r   Ú"test_fastica_eigh_low_rank_warningrÌ   ¼  s@  € å
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�	Š	�"�aÑÔ€AØ	ˆAŒC‰€AÝ
˜q¨ÈÐ
OÑ
OÔ
O€CØ
0€Cå	Œ•k¨Ð	-Ñ	-Ô	-ð ð ÝÕ&8Ð9Ñ9Ô9ð 	ð 	ð �GŠG�A‰JŒJˆJð		ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s6   Á/B?ÂB'ÂB?Â'B+	Â+B?Â.B+	Â/B?Â?CÃC)r   )&Ú__doc__rm   rb   rŸ   Únumpyr   rd   Úscipyr   Úsklearn.decompositionr   r   r   Úsklearn.decomposition._fasticar   Úsklearn.exceptionsr   Úsklearn.utils._testingr	   r
   r   r*   rB   rF   ÚmarkÚparametrizerŠ   r’   r™   r›   r§   Úfilterwarningsr®   r´   r¸   r¿   rÇ   rÌ   © r   r   ú<module>rØ      sÍ  ððð ð Ð Ð Ð Ø 	€	€	€	Ø €€€à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø <Ð <Ð <Ð <Ð <Ð <Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ Cðð ð ð ð *ð *ð *ð	1ð 	1ð 	1ð$ð $ð $ð „×Ò˜ t¨U mÑ4Ô4ðhð hñ 5Ô4ðhðV#ð #ð #ðð ð ð< „×Ò˜ t¨U mÑ4Ô4ð*Cð *Cñ 5Ô4ð*CðZ/,ð /,ð /,ðd „×ÒÐMÑNÔNØ„×ÒØ1ðð ð ñ
ô 
ð*ð *ñ
ô 
ñ OÔNð*ð@"ð "ð "ð,ð ,ð ,ð „×Ò˜Ð#QÐ#QÐ#QÑRÔRØ„×Ò˜¨4°¨-Ñ8Ô8Ø„×Ò˜¨4°¨-Ñ8Ô8ðð ñ 9Ô8ñ 9Ô8ñ SÔRðð" „×Ò˜ t¨U mÑ4Ô4ð;ð ;ñ 5Ô4ð;ðDð ð ð ð r   