§
    ¨éUgË…  ã            	       óz  — d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZ d d	lmZ d d
lmZmZ ej                              ddgeddigeddigei gg¦  «        d„ ¦   «         Z!d„ Z"ej         #                    dd¦  «        d„ ¦   «         Z$d„ Z%d„ Z& ee'¬¦  «        ej                              ddgeddigeddigei gg¦  «        ej                              dd¦  «        ej                              dd¦  «        ej                              dd¦  «        d„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z(ej                              ddgeddigeddigei gg¦  «        d„ ¦   «         Z)d„ Z*ej                              dddg¦  «        d „ ¦   «         Z+d!„ Z,ej                              ddgeddigeddigei gg¦  «        d"„ ¦   «         Z-ej                              dd#¦  «        d$„ ¦   «         Z.ej         #                    d¦  «        d%„ ¦   «         Z/ej                              deeg¦  «        d&„ ¦   «         Z0ej                              ddgeddigeddigei gg¦  «        ej                              d'eez   ¦  «        ej                              dd¦  «        ej                              dd¦  «        d(„ ¦   «         ¦   «         ¦   «         ¦   «         Z1ej                              ddgeddigeddigei gg¦  «        ej                              d)e¦  «        d*„ ¦   «         ¦   «         Z2ej         #                    d¦  «        ej                              dd+d,g¦  «        ej                              dd#¦  «        ej                              dd¦  «        ej                              dd¦  «        d-„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Z3d.„ Z4d/„ Z5ej                              d0e¦  «        d1„ ¦   «         Z6ej                              d0e¦  «        d2„ ¦   «         Z7 ee¬¦  «        ej                              d0e¦  «        d3„ ¦   «         ¦   «         Z8ej                              d0e¦  «        d4„ ¦   «         Z9ej         #                    d¦  «        ej                              d5d6d7g¦  «        d8„ ¦   «         ¦   «         Z:ej                              ddgeddigeddigei gg¦  «        d9„ ¦   «         Z; ee¬¦  «        ej                              dd#¦  «        d:„ ¦   «         ¦   «         Z<d;„ Z=ej         #                    d¦  «        ej                              d<ej>        ej>        fej?        ej?        fej@        ej?        fejA        ej?        fg¦  «        ej                              ddgeddigeddigei gg¦  «        d=„ ¦   «         ¦   «         ¦   «         ZBej         #                    d¦  «        ej                              ddgeddigeddigei gg¦  «        d>„ ¦   «         ¦   «         ZCej         #                    d¦  «        ej                              deeg¦  «        d?„ ¦   «         ¦   «         ZDej                              d5g d@¢¦  «        dA„ ¦   «         ZEdB„ ZFdC„ ZGej         #                    d¦  «        dD„ ¦   «         ZHej                              deeg¦  «        dE„ ¦   «         ZIej                              deeg¦  «        dF„ ¦   «         ZJdG„ ZKdH„ ZLdI„ ZMdJ„ ZNdK„ ZOdS )Lé    N)ÚStringIO)Úlinalg)Úclone)ÚNMFÚMiniBatchNMFÚnon_negative_factorization)Ú_nmf)ÚConvergenceWarning)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)Úsquared_norm)ÚCSC_CONTAINERSÚCSR_CONTAINERSÚ	EstimatorÚsolverÚcdÚmuc                 óÖ   — d}t          j        d¦  «        }t          j        t          |¬¦  «        5   | ddddœ|¤Ž                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )NzKMaximum number of iterations 1 reached. Increase it to improve convergence.©é   r   ©Úmatché   Úauto)Úmax_iterÚn_components© )ÚnpÚonesÚpytestÚwarnsr
   Úfit)r   r   Úconvergence_warningÚAs       úc/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/decomposition/tests/test_nmf.pyÚtest_convergence_warningr)      sÖ   € ð 	Vð õ 	Œ�‰Œ€AÝ	ŒÕ(Ð0CÐ	DÑ	DÔ	Dð Dð DØˆ	Ð<˜1¨6Ð<Ð<°VÐ<Ð<×@Ò@ÀÑCÔCÐCðDð Dð Dñ Dô Dð Dð Dð Dð Dð Dð Dð Døøøð Dð Dð Dð Dð Dð Ds   ²AÁA"Á%A"c                  óB  — t           j        j                             d¦  «        } t          j        |                      dd¦  «        ¦  «        }dD ]O}t          j        |d|d¬¦  «        \  }}|dk                          ¦   «         s|dk                          ¦   «         rJ ‚ŒPd S )Né*   é
   )ÚrandomÚnndsvdÚnndsvdaÚnndsvdarr   ©ÚinitÚrandom_state)	r!   r-   ÚmtrandÚRandomStateÚabsÚrandnÚnmfÚ_initialize_nmfÚany)ÚrngÚdatar2   ÚWÚHs        r(   Útest_initialize_nn_outputr?   &   s™   € å
Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝŒ6�#—)’)˜B Ñ#Ô#Ñ$Ô$€DØ;ð 4ð 4ˆÝÔ" 4¨°$ÀQÐGÑGÔG‰ˆˆ1Ø˜’U—K’K‘M”MÐ3 a¨!¢e§[¢[¡]¤]Ð3Ð3Ð3Ð3ð4ð 4ó    zbignore:The multiplicative update \('mu'\) solver cannot update zeros present in the initializationz6ignore:The default value of `n_components` will changec                  óF  — t          j        d¦  «        } d}t          j        t          |¬¦  «        5  t          dd¬¦  «                             | ¦  «         d d d ¦  «         n# 1 swxY w Y   d}t          j        t          |¬¦  «        5  t          ¦   «                              |  ¦  «         d d d ¦  «         n# 1 swxY w Y   t          dd	¬
¦  «                             | ¦  «        }t          j        t          |¬¦  «        5  |                     |  ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¬¦  «        5  t          j	        |  dd¦  «         d d d ¦  «         n# 1 swxY w Y   dD �]!}t          j        d                     |¦  «        ¦  «        }t          j        t          |¬¦  «        5  t          d|¬¦  «                             | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¬¦  «        5  t          d|¬¦  «                             | ¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          |¬¦  «        5  t          j	        | d|¦  «         d d d ¦  «         n# 1 swxY w Y   �Œ#d S )Nr   zHInvalid beta_loss parameter: solver 'cd' does not handle beta_loss = 1.0r   r   ç      ð?)r   Ú	beta_lossz!Negative values in data passed tor   çš™™™™™¹?)Útolr.   )r.   r/   r0   zLinit = '{}' can only be used when n_components <= min(n_samples, n_features)é   ©r2   )r!   r"   r#   ÚraisesÚ
ValueErrorr   r%   Ú	transformr8   r9   ÚreÚescapeÚformatr   )r'   ÚmsgÚclfr2   s       r(   Útest_parameter_checkingrP   0   s  € õ 	Œ�‰Œ€Aà
T€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð /ð /Ý�4 3Ð'Ñ'Ô'×+Ò+¨AÑ.Ô.Ð.ð/ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /à
-€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ý‰Œ�	Š	�1�"‰Œˆðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å
ˆa�Sˆ/‰/Œ/×
Ò
˜aÑ
 Ô
 €CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�Š�q�bÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð å	Œ•z¨Ð	-Ñ	-Ô	-ð -ð -ÝÔ˜Q˜B  8Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð 2ð 
,ñ 
,ˆÝŒið9ß9?ºÀ¹¼ñ
ô 
ˆõ Œ]�:¨SÐ1Ñ1Ô1ð 	%ð 	%Ý�˜ÐÑÔ×!Ò! !Ñ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%åŒ]�:¨SÐ1Ñ1Ô1ð 	.ð 	.Ý˜ Ð&Ñ&Ô&×*Ò*¨1Ñ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.åŒ]�:¨SÐ1Ñ1Ô1ð 	,ð 	,ÝÔ  1 dÑ+Ô+Ð+ð	,ð 	,ð 	,ñ 	,ô 	,ð 	,ð 	,ð 	,ð 	,ð 	,ð 	,øøøð 	,ð 	,ð 	,ð 	,ùð
,ð 
,s}   ²%A#Á#A'Á*A'Â#B:Â:B>ÃB>ÄD'Ä'D+Ä.D+ÅE1Å1E5Å8E5Ç%G4Ç4G8	Ç;G8	È%IÉI	ÉI	É1JÊJ	ÊJ	c                  óˆ  — t           j        j                             d¦  «        } t          j        |                      dd¦  «        ¦  «        }t          j        |dd¬¦  «        \  }}t          j	        t          j
        ||¦  «        |z
  ¦  «        }t          j	        ||                     ¦   «         z
  ¦  «        }||k    sJ ‚d S )Nr+   r,   r.   rG   )r!   r-   r4   r5   r6   r7   r8   r9   r   ÚnormÚdotÚmean)r;   r'   r=   r>   ÚerrorÚsdevs         r(   Útest_initialize_closerW   T   sž   € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜RÑ Ô Ñ!Ô!€AÝÔ˜q "¨8Ð4Ñ4Ô4�D€A€qÝŒK�œ˜q !™œ qÑ(Ñ)Ô)€EÝŒ;�q˜1Ÿ6š6™8œ8‘|Ñ$Ô$€DØ�DŠ=ˆ=ˆ=ˆ=ˆ=ˆ=r@   c                  ó¬  — t           j        j                             d¦  «        } t          j        |                      dd¦  «        ¦  «        }t          j        |dd¬¦  «        \  }}t          j        |dd¬¦  «        \  }}t          j        |ddd¬¦  «        \  }}||f||f||f||ffD ])\  }}	t          |	|dk             ||dk             ¦  «         Œ*d S )	Nr+   r,   r.   rG   r/   r0   r   r1   )	r!   r-   r4   r5   r6   r7   r8   r9   r   )
r;   r<   ÚW0ÚH0ÚWaÚHaÚWarÚHarÚrefÚevls
             r(   Útest_initialize_variantsra   `   så   € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝŒ6�#—)’)˜B Ñ#Ô#Ñ$Ô$€DÝÔ   r°Ð9Ñ9Ô9�F€BˆÝÔ   r°	Ð:Ñ:Ô:�F€BˆÝÔ" 4¨°*È1ÐMÑMÔM�H€Cˆà˜"�X  C˜y¨2¨r¨(°R¸°IÐ>ð :ð :‰ˆˆSÝ˜C  q¢œM¨3¨s°aªx¬=Ñ9Ô9Ð9Ð9ð:ð :r@   )Úcategoryr2   )Nr.   r/   r0   r-   Úalpha_W)ç        rB   Úalpha_H)rd   rB   Úsamec           	      ó:  — t           j        dt          j        dd¦  «        z
  dt          j        dd¦  «        z   f         } | dd|||ddœ|¤Ž}|                     |¦  «        }|j        dk                          ¦   «         s|dk                          ¦   «         rJ ‚d S )Ng      @r   é   r   r   )r   r2   rc   re   r3   r    )r!   Úc_ÚarangeÚfit_transformÚcomponents_r:   )r   r   r2   rc   re   r'   ÚmodelÚtransfs           r(   Útest_nmf_fit_nn_outputro   o   s·   € õ 	Œˆc•B”I˜a ‘O”OÑ# S­2¬9°Q¸©?¬?Ñ%:Ð:Ô;€AØˆIð ØØØØØðð ð ðð €Eð × Ò  Ñ#Ô#€FØÔ" QÒ&×+Ò+Ñ-Ô-ÐD°&¸1²*×1AÒ1AÑ1CÔ1CÐDÐDÐDÐDÐDr@   c                 óø   — t           j        j                             d¦  «        } | 	 d	ddddœ|¤Ž}t          j        |                     dd¦  «        ¦  «        }|                     |¦  «        j        dk     sJ ‚d S )
Nr+   é   r0   r   iX  )r2   r3   r   rh   rD   )rq   )r!   r-   r4   r5   r6   r7   r%   Úreconstruction_err_)r   r   r;   ÚpnmfÚXs        r(   Útest_nmf_fit_closeru   †   sŽ   € õ
 Œ)Ô
×
&Ò
& rÑ
*Ô
*€Càˆ9Ø	ðàØØð	ð ð
 ðð €Dõ 	Œˆs�yŠy˜˜A‰ŒÑÔ€AØ�8Š8�A‰;Œ;Ô*¨SÒ0Ð0Ð0Ð0Ð0Ð0r@   c                  óœ  — d} d}d}d}d}d}t           j        j                             d¦  «        }t          j        | |g¦  «        }t          j        |                     | ¦  «        ¦  «        }t          |¦  «        D ]}	||	| z           ||	| z  |	f<   Œt          j        ||g¦  «        }
t          j        |                     |¦  «        ¦  «        }t          |¦  «        D ]}	||	|z           |
|	|z  |	f<   Œt          j        ||
¦  «        }t          |d||d	¬
¦  «        }| 
                    |¦  «        }t          j        ||j        ¦  «        }|j        dk     sJ ‚t          ||¦  «         t          |||d	|¬¦  «        }| 
                    |¦  «        }t          j        ||j        ¦  «        }|j        dk     sJ ‚t          ||d¬¦  «         d S )Né   r,   rq   r   rF   éè  r+   r   r   )r   r   rC   r   r3   rD   )r   rC   Ú
batch_sizer3   r   ©Úatol)r!   r-   r4   r5   Úzerosr6   r7   ÚrangerS   r   rk   rl   rr   r   r   )Ú	n_samplesÚ
n_featuresr   rC   ry   r   r;   ÚW_trueÚW_arrayÚjÚH_trueÚH_arrayrt   rm   rn   ÚX_calcÚmbmodels                    r(   Útest_nmf_true_reconstructionr‡   ˜   s  € ð €IØ€JØ€LØ€IØ€JØ€Hå
Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝŒX�y ,Ð/Ñ0Ô0€FÝŒf�S—Y’Y˜yÑ)Ô)Ñ*Ô*€GÝ�<Ñ Ô ð :ð :ˆØ#*¨1¨y©=Ô#9ˆˆq�9‰}˜aÐÑ Ð ÝŒX�| ZÐ0Ñ1Ô1€FÝŒf�S—Y’Y˜|Ñ,Ô,Ñ-Ô-€GÝ�:ÑÔð @ð @ˆØ&-¨a°,Ñ.>Ô&?ˆˆq�<Ñ Ð"Ñ#Ð#Ý
Œˆv�vÑÔ€AåØ!ØØØØðñ ô €Eð × Ò  Ñ#Ô#€FÝŒV�F˜EÔ-Ñ.Ô.€FàÔ$ sÒ*Ð*Ð*Ð*Ý�A�vÑÔÐåØ!ØØØØðñ ô €Gð ×"Ò" 1Ñ%Ô%€FÝŒV�F˜GÔ/Ñ0Ô0€FàÔ&¨Ò,Ð,Ð,Ð,Ý�A�v AÐ&Ñ&Ô&Ð&Ð&Ð&r@   c                 ó>  — t           j        j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        }t          | dddd¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          ||d	¬
¦  «         d S )Nr+   rh   rq   rF   r-   r   ç�íµ ÷Æ°>)r   r   r2   r3   rE   rD   rz   )
r!   r-   r4   r5   r6   r7   r   rk   rJ   r   )r   r;   r'   ÚmÚftÚts         r(   Útest_nmf_transformr�   È   s—   € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜A‰ŒÑÔ€AÝØØØØØð	ñ 	ô 	€Að 
�Š˜Ñ	Ô	€BØ	�Š�A‰Œ€AÝ�B˜ Ð%Ñ%Ô%Ð%Ð%Ð%r@   c                  ó8  — t           j        j                             d¦  «        } t          j        |                      dd¦  «        ¦  «        }t          dddd¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          ||¦  «         d S )	Nr+   rh   rq   rF   r   çü©ñÒMbP?T)r   r3   rE   Úfresh_restarts)
r!   r-   r4   r5   r6   r7   r   rk   rJ   r   )r;   r'   rŠ   r‹   rŒ   s        r(   Útest_minibatch_nmf_transformr‘   Ú   s�   € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜A‰ŒÑÔ€AÝØØØØð		ñ 	ô 	€Að 
�Š˜Ñ	Ô	€BØ	�Š�A‰Œ€AÝ�B˜ÑÔÐÐÐr@   c                 ó
  — t           j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        }d}t          j        |                     ¦   «         |z  ¦  «        }t          j        ||                     |d¦  «        z  ¦  «        }t          j        ||                     d|¦  «        z  ¦  «        } | d	|ddddœ|¤Ž}|                     |||¬¦  «         |                     |¦  «         d S )
Nr   rh   rq   é   Úcustomr�   ©r   r2   r3   rE   ©r=   r>   r    )	r!   r-   r5   r6   r7   ÚsqrtrT   rk   rJ   )	r   r   r3   r'   r   ÚavgÚH_initÚW_initrŠ   s	            r(   Útest_nmf_transform_custom_initr›   ê   sú   € õ ”9×(Ò(¨Ñ+Ô+€LÝ
Œˆ|×!Ò! ! QÑ'Ô'Ñ(Ô(€AØ€LÝ
Œ'�!—&’&‘(”(˜\Ñ)Ñ
*Ô
*€CÝŒV�C˜,×,Ò,¨\¸1Ñ=Ô=Ñ=Ñ>Ô>€FÝŒV�C˜,×,Ò,¨Q°Ñ=Ô=Ñ=Ñ>Ô>€Fàˆ	ð 	Ø!¨¸qÀdð	ð 	ØNTð	ð 	€Að ‡O‚O�A˜ 6€OÑ*Ô*Ð*Ø‡K‚K��N„N€N€N€Nr@   )r   r   c                 ó4  — t           j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        }t          | dddd¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          ||d¬¦  «         d S )	Nr   rh   r“   r-   rx   )r   r   r2   r3   r   r   ©Údecimal)	r!   r-   r5   r6   r7   r   rk   Úinverse_transformr   )r   r3   r'   rŠ   r‹   ÚA_news         r(   Útest_nmf_inverse_transformr¡   þ   sœ   € õ ”9×(Ò(¨Ñ+Ô+€LÝ
Œˆ|×!Ò! ! QÑ'Ô'Ñ(Ô(€AÝØØØØØð	ñ 	ô 	€Að 
�Š˜Ñ	Ô	€BØ×Ò Ñ#Ô#€EÝ˜a °Ð2Ñ2Ô2Ð2Ð2Ð2r@   c                  ó   — t           j                             d¦  «        } t          j        |                      dd¦  «        ¦  «        }t          | ddd¬¦  «        } |j        |¦  «        } |j        |¦  «        }t          ||dd	¬
¦  «         d S )Nr   rh   r“   éô  r0   T)r3   r   r2   r�   r�   ç{®Gáz„?)Úrtolr{   )	r!   r-   r5   r6   r7   r   rk   rŸ   r   )r;   r'   r8   r‹   r    s        r(   Útest_mbnmf_inverse_transformr¦     s—   € õ Œ)×
Ò
 Ñ
"Ô
"€CÝ
Œˆs�yŠy˜˜A‰ŒÑÔ€AÝ
ØØØØð	ñ ô €Cð 
ˆÔ	˜1Ñ	Ô	€BØ!ˆCÔ! "Ñ%Ô%€EÝ�A�u 4¨dÐ3Ñ3Ô3Ð3Ð3Ð3r@   c                 óà   — t           j        j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        } | ddd¬¦  «                             |¦  «         d S )Nr+   é   r,   rw   r   r¤   )r   r3   rE   )r!   r-   r4   r5   r6   r7   r%   )r   r;   r'   s      r(   Ú$test_n_components_greater_n_featuresr©   !  sd   € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜RÑ Ô Ñ!Ô!€AØ€I˜2¨A°4Ð8Ñ8Ô8×<Ò<¸QÑ?Ô?Ð?Ð?Ð?r@   Úsparse_containerc                 óÞ  — t           j        j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        }d|d d …dt          j        d¦  «        z  f<    ||¦  «        } | d	dd||ddddœ|¤Ž}t          |¦  «        }	|                     |¦  «        }
|	                     |¦  «        }|j	        }|	j	        }t          |
|¦  «         t          ||¦  «         d S )
Nr+   r,   r   r   rq   r-   éd   )r   r2   rc   re   r3   rE   r   r    )r!   r-   r4   r5   r6   r7   rj   r   rk   rl   r   )r   r   rª   rc   re   r;   r'   ÚA_sparseÚest1Úest2ÚW1ÚW2ÚH1ÚH2s                 r(   Útest_nmf_sparse_inputr´   )  s  € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜RÑ Ô Ñ!Ô!€AØ€A€a€a€aˆ�RŒY�q‰\Œ\Ñ	ÐÑØÐ Ñ"Ô"€Hàˆ9ð 	ØØØØØØØð	ð 	ð ð	ð 	€Dõ �‰;Œ;€Dà	×	Ò	˜AÑ	Ô	€BØ	×	Ò	˜HÑ	%Ô	%€BØ	Ô	€BØ	Ô	€Bå�B˜ÑÔÐÝ�B˜ÑÔÐÐÐr@   Úcsc_containerc                 óN  — t           j        j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        }d|d<    ||¦  «        } | d
ddddœ|¤Ž}|                     |¦  «        }|                     |¦  «        }t          ||d¬	¦  «         d S )Nr+   rF   r   r   )r   r   i�  )r3   r   r   rD   rz   r    )	r!   r-   r4   r5   r6   r7   rk   rJ   r   )r   r   rµ   r;   r'   rm   ÚA_fit_trÚA_trs           r(   Útest_nmf_sparse_transformr¹   L  s¬   € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜A‰ŒÑÔ€AØ€A€d�GØˆ�aÑÔ€AàˆIÐM 1°1¸sÐMÐMÀfÐMÐM€EØ×"Ò" 1Ñ%Ô%€HØ�?Š?˜1ÑÔ€DÝ�H˜d¨Ð.Ñ.Ô.Ð.Ð.Ð.r@   r-   r.   c                 ó  — d}t           j        j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        }d|d d …dt          j        d¦  «        z  f<   t          || ||||dd¬	¦  «        \  }}}	t          ||d
| ||||dd¬¦
  «
        \  }
}}	t          | ||||dd¬	¦  «        }| 	                    |¦  «        }| 
                    |¦  «        }t          ||¦  «         t          |
|¦  «         d S )Nr£   r+   r,   r   r   rq   r   r¤   )r2   r   r   rc   re   r3   rE   F)	r>   Úupdate_Hr2   r   r   rc   re   r3   rE   )r!   r-   r4   r5   r6   r7   rj   r   r   rk   rJ   r   )r2   r   rc   re   r   r;   r'   ÚW_nmfr>   Ú_ÚW_nmf_2Úmodel_classÚW_clsÚW_cls_2s                 r(   Ú+test_non_negative_factorization_consistencyrÂ   _  sC  € ð €HÝ
Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜RÑ Ô Ñ!Ô!€AØ€A€a€a€aˆ�RŒY�q‰\Œ\Ñ	ÐÑå,Ø	ØØØØØØØð	ñ 	ô 	�K€Eˆ1ˆaõ /Ø	Ø
ØØØØØØØØðñ ô �M€GˆQ�õ ØØØØØØØðñ ô €Kð ×%Ò% aÑ(Ô(€EØ×#Ò# AÑ&Ô&€Gå�E˜5Ñ!Ô!Ð!Ý�G˜WÑ%Ô%Ð%Ð%Ð%r@   c                  óR  — t          j        d¦  «        } t          }t          j        d¦  «        }t          j        t          |¬¦  «        5   || | |  dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        }t          j        t          |¬¦  «        5   || |  | dd¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¦  «        }t          j        t          |¬¦  «        5   || | d	| z  dd¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )
Nr   z/Negative values in data passed to NMF (input H)r   r   r”   rG   z/Negative values in data passed to NMF (input W)z.Array passed to NMF (input H) is full of zerosr   )r!   r"   r   rK   rL   r#   rH   rI   )r'   ÚnnmfrN   s      r(   Ú(test_non_negative_factorization_checkingrÅ   “  sì  € õ 	Œ�‰Œ€Aå%€DÝ
Œ)ÐEÑ
FÔ
F€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð )ð )ØˆˆQ��A�2�q˜xÐ(Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )å
Œ)ÐEÑ
FÔ
F€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð )ð )ØˆˆQ���A�q˜xÐ(Ñ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )å
Œ)ÐDÑ
EÔ
E€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ,ð ,ØˆˆQ��1�q‘5˜! (Ð+Ñ+Ô+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,ð ,ð ,s6   ÁA)Á)A-Á0A-Â#CÃCÃCÃ;DÄD Ä#D c                 óê  — t          j        ||¦  «        }|dk    rt          | |z
  ¦  «        dz  S || dk             }| | dk             }t          j        |d|¬¦  «         |dk    rYt          j        |t          j        ||z  ¦  «        z  ¦  «        }||                     ¦   «         |                      ¦   «         z
  z  }n´|dk    rI||z  }t          j        |¦  «        | j        z
  t          j        t          j        |¦  «        ¦  «        z
  }ne||z                       ¦   «         }||dz
  ||z                       ¦   «         z  z  }|||||dz
  z  z                       ¦   «         z  z  }|||dz
  z  z  }|S )z~Compute the beta-divergence of X and W.H for dense array only.

    Used as a reference for testing nmf._beta_divergence.
    r   r   ç•Ö&è.>©Úoutr   )r!   rS   r   ÚmaximumÚsumÚlogÚsize)	rt   r=   r>   ÚbetaÚWHÚWH_XnonzeroÚ	X_nonzeroÚresÚdivs	            r(   Ú_beta_divergence_denserÔ   §  sh  € õ
 
Œ��1‰Œ€Bàˆq‚y€yÝ˜A ™FÑ#Ô# aÑ'Ð'à�Q˜!’V”*€KØ�!�q’&”	€IÝ„Jˆ{˜D kÐ2Ñ2Ô2Ð2àˆq‚y€yÝŒf�Y¥¤¨	°KÑ(?Ñ!@Ô!@Ñ@ÑAÔAˆØˆr�vŠv‰xŒx˜!Ÿ%š%™'œ'Ñ!Ñ!ˆˆà	�ŠˆØ˜+Ñ%ˆÝŒf�S‰kŒk˜AœFÑ"¥R¤V­B¬F°3©K¬KÑ%8Ô%8Ñ8ˆˆà˜$‰×#Ò#Ñ%Ô%ˆØ��q‘˜R ™XŸNšNÑ,Ô,Ñ,Ñ,ˆØˆt�y K°D¸1±HÑ$=Ñ>×CÒCÑEÔEÑEÑEˆØˆt�t˜a‘xÑ Ñ ˆà€Jr@   Úcsr_containerc                 óÜ  — d}d}d}g d¢}t           j        j                             d¦  «        }|                     ||¦  «        }t          j        |dd |¬¦  «          | |¦  «        }t          j        ||dd¬	¦  «        \  }}	|D ]f}
t          |||	|
¦  «        }t          j	        |||	|
¦  «        }t          j	        |||	|
¦  «        }t          ||d
¬¦  «         t          ||d
¬¦  «         Œgd S )Né   r,   rq   )rd   ç      à?rB   ç      ø?ç       @g      @r+   r   rÈ   r-   r1   é   r�   )r!   r-   r4   r5   r7   Úclipr8   r9   rÔ   Ú_beta_divergencer   )rÕ   r~   r   r   Úbeta_lossesr;   rt   ÚX_csrr=   r>   rÎ   r_   ÚlossÚloss_csrs                 r(   Útest_beta_divergencerâ   Å  s  € ð €IØ€JØ€LØ0Ð0Ð0€Kõ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CØ�	Š	�)˜ZÑ(Ô(€AÝ„GˆAˆq�$˜AÐÑÔÐØˆM˜!ÑÔ€EÝÔ˜q ,°XÈBÐOÑOÔO�D€A€qàð 6ð 6ˆÝ$ Q¨¨1¨dÑ3Ô3ˆÝÔ# A q¨!¨TÑ2Ô2ˆÝÔ'¨¨q°!°TÑ:Ô:ˆå˜C ¨qÐ1Ñ1Ô1Ð1Ý˜C °1Ð5Ñ5Ô5Ð5Ð5ð6ð 6r@   c                 ó  — d}d}d}t           j        j                             d¦  «        }|                     ||¦  «        }t          j        |dd |¬¦  «          | |¦  «        }t          j        |                     ||¦  «        ¦  «        }t          j        |                     ||¦  «        ¦  «        }t          j        |||¦  «        }	t          j        |||¦  «        }
| 	                    ¦   «         \  }}t          j
        |	||f         ¦  «                             ¦   «         }t          ||
||f         d¬¦  «         t          |	j        |j        ¦  «         t          |	j        |j        ¦  «         t          |	j        |j        ¦  «         d S )Nr,   rq   rF   r+   r   rÈ   r�   )r!   r-   r4   r5   r7   rÜ   r6   r8   Ú_special_sparse_dotÚnonzeroÚasarrayÚravelr   r   ÚindicesÚindptrÚshape)rÕ   r~   r   r   r;   rt   rß   r=   r>   ÚWH_saferÏ   ÚiiÚjjÚWH_safe_datas                 r(   Útest_special_sparse_dotrï   Ý  s_  € ð €IØ€JØ€LÝ
Œ)Ô
×
&Ò
& rÑ
*Ô
*€CØ�	Š	�)˜ZÑ(Ô(€AÝ„GˆAˆq�$˜AÐÑÔÐØˆM˜!ÑÔ€Eå
Œˆs�yŠy˜ LÑ1Ô1Ñ2Ô2€AÝ
Œˆs�yŠy˜ zÑ2Ô2Ñ3Ô3€AåÔ% a¨¨EÑ2Ô2€GÝ	Ô	   A qÑ	)Ô	)€Bð �]Š]‰_Œ_�F€BˆÝ”:˜g b¨" fœoÑ.Ô.×4Ò4Ñ6Ô6€LÝ˜l¨B¨r°2¨v¬JÀÐCÑCÔCÐCõ �w”¨¬Ñ6Ô6Ð6Ý�w”~ u¤|Ñ4Ô4Ð4Ý�w”} e¤kÑ2Ô2Ð2Ð2Ð2r@   c                 óX  — d}d}d}d}d}d}t           j        j                             d¦  «        }|                     ||¦  «        }t          j        |¦  «        } | |¦  «        }	t          j        ||dd¬	¦  «        \  }
}d
D �]%}|
                     ¦   «         |                     ¦   «         }}t          ||||ddd||||d¬¦  «        \  }}}|
                     ¦   «         |                     ¦   «         }}t          |	|||ddd||||d¬¦  «        \  }}}t          ||d¬¦  «         t          ||d¬¦  «         |dz  }|
                     ¦   «         |                     ¦   «         }}t          |	|||ddd||||d¬¦  «        \  }}}t          ||d¬¦  «         t          ||d¬¦  «         �Œ'd S )Nr×   r,   rq   rD   rØ   i9  r-   r+   r1   ©g333333ó¿r   çš™™™™™É?rB   rÚ   ç      @r”   Tr   )r2   r»   r   rC   r   rc   Úl1_ratior3   gH¯¼šò×z>rz   çñhãˆµøä>g-Cëâ6?)r!   r-   r4   r5   r7   r6   r8   r9   Úcopyr   r   )rÕ   r~   r   r   Úalpharô   Ún_iterr;   rt   rß   rY   rZ   rC   r=   r>   r°   r²   r½   r±   r³   ÚW3ÚH3s                         r(   Ú%test_nmf_multiplicative_update_sparserû   ù  s  € ð
 €IØ€JØ€LØ€EØ€HØ€Fõ Œ)Ô
×
&Ò
& tÑ
,Ô
,€CØ�	Š	�)˜ZÑ(Ô(€AÝ
Œˆq‰	Œ	€AØˆM˜!ÑÔ€EÝÔ   L°xÈbÐQÑQÔQ�F€Bˆà2ð :+ñ :+ˆ	à�wŠw‰yŒy˜"Ÿ'š'™)œ)ˆ1ˆÝ.ØØØØØØØØØØØØð
ñ 
ô 
‰	ˆˆB�ð  �wŠw‰yŒy˜"Ÿ'š'™)œ)ˆ1ˆÝ.ØØØØØØØØØØØØð
ñ 
ô 
‰	ˆˆB�õ 	˜˜B TÐ*Ñ*Ô*Ð*Ý˜˜B TÐ*Ñ*Ô*Ð*ð 	�VÑˆ	Ø�wŠw‰yŒy˜"Ÿ'š'™)œ)ˆ1ˆÝ.ØØØØØØØØØØØØð
ñ 
ô 
‰	ˆˆB�õ 	˜˜B TÐ*Ñ*Ô*Ð*Ý˜˜B TÐ*Ñ*Ô*Ð*Ñ*ðu:+ð :+r@   c                 ó¼  ‡	— d}d}dŠ	t           j        j                             d¦  «        }|                     ||¦  «        }t          j        |dd |¬¦  «          | |¦  «        }ˆ	fd„}d}d	D ]P}t          j        t          |¬
¦  «        5   |||¦  «         d d d ¦  «         n# 1 swxY w Y    ||dz   |¦  «         ŒQdD ]} |||¦  «          |||¦  «         Œd S )Nrh   rq   rF   r+   r   rÈ   c           	      óÜ   •— t          | d‰d|dd¬¦  «        \  }}}t          j        t          j        |¦  «        ¦  «        rJ ‚t          j        t          j        |¦  «        ¦  «        rJ ‚d S )Nr-   r   r   rx   )r2   r   r   rC   r3   r   )r   r!   r:   Úisnan)rt   rC   r=   r>   r½   r   s        €r(   Ú_assert_nmf_no_nanz7test_nmf_negative_beta_loss.<locals>._assert_nmf_no_nanV  sv   ø€ Ý,ØØØ%ØØØØð
ñ 
ô 
‰ˆˆ1ˆaõ ”6�"œ( 1™+œ+Ñ&Ô&Ð&Ð&Ð&Ý”6�"œ( 1™+œ+Ñ&Ô&Ð&Ð&Ð&Ð&Ð&r@   úAWhen beta_loss <= 0 and X contains zeros, the solver may diverge.)g333333ã¿rd   r   rÇ   )rò   rB   g333333ó?rÚ   ró   )	r!   r-   r4   r5   r7   rÜ   r#   rH   rI   )
rÕ   r~   r   r;   rt   rß   rÿ   rN   rC   r   s
            @r(   Útest_nmf_negative_beta_lossr  I  sp  ø€ ð €IØ€JØ€Lå
Œ)Ô
×
&Ò
& rÑ
*Ô
*€CØ�	Š	�)˜ZÑ(Ô(€AÝ„GˆAˆq�$˜AÐÑÔÐØˆM˜!ÑÔ€Eð'ð 'ð 'ð 'ð 'ð N€CØ ð 0ð 0ˆ	ÝŒ]�:¨SÐ1Ñ1Ô1ð 	-ð 	-ØÐ˜q )Ñ,Ô,Ð,ð	-ð 	-ð 	-ñ 	-ô 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-øøøð 	-ð 	-ð 	-ð 	-àÐ˜1˜t™8 YÑ/Ô/Ð/Ð/à.ð -ð -ˆ	ØÐ˜1˜iÑ(Ô(Ð(ØÐ˜5 )Ñ,Ô,Ð,Ð,ð-ð -s   ÂB$Â$B(	Â+B(	rC   ç      à¿rd   c                 ó0  — t           j                             d¦  «        }|                     d¬¦  «        }d||dk     <   t	          | d¬¦  «        }d}t          j        t          |¬¦  «        5   |j        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zDCheck that an error is raised if beta_loss < 0 and X contains zeros.r   ©rh   rq   )rÍ   )rC   r3   r   r   N)	r!   r-   r5   Únormalr   r#   rH   rI   r%   )rC   r;   rt   r8   rN   s        r(   Ú%test_minibatch_nmf_negative_beta_lossr  o  sØ   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜ˆ
ÑÔ€AØ€A€aˆ!‚e�Hå
 ¸Ð
;Ñ
;Ô
;€Cà
M€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð ØˆŒ�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á-BÂBÂBc                 ó¬  — d}d}d}t           j        j                             d¦  «        }t          j        |                     ||¦  «        ¦  «        }d} | d
|d|ddœ|¤Ž} | d
|d|ddœ|¤Ž}	|                     |¦  «        }
|	                     |¦  «        }|j        }|	j        }t          j        t           j	        ¦  «        j
        }|
|
|k             j        }|||k             j        }|||k             j        }|||k             j        }||k    sJ ‚||k    sJ ‚d} | d
|d|ddœ|¤Ž} | d
|d|ddœ|¤Ž}	|                     |¦  «        }
|	                     |¦  «        }|j        }|	j        }t          j        |¦  «        d	z  t          j        |¦  «        d	z  z   t          j        |
¦  «        d	z  t          j        |¦  «        d	z  z   k    sJ ‚d S )Nrh   rq   rF   r+   rB   rØ   )r   rc   rô   r3   rd   rÚ   r    )r!   r-   r4   r5   r6   r7   rk   rl   ÚfinfoÚfloat64ÚepsrÍ   r   rR   )r   r   r~   r   r   r;   rt   rô   Úregulrm   ÚW_regulÚW_modelÚH_regulÚH_modelr
  ÚW_regul_n_zerosÚW_model_n_zerosÚH_regul_n_zerosÚH_model_n_zeross                      r(   Útest_nmf_regularizationr  ~  sz  € ð €IØ€JØ€LÝ
Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜ JÑ/Ô/Ñ0Ô0€Að €HØˆIð Ø!ØØØð	ð ð
 ðð €Eð ˆIð Ø!ØØØð	ð ð
 ðð €Eð ×!Ò! !Ñ$Ô$€GØ×!Ò! !Ñ$Ô$€GàÔ€GØÔ€Gå
Œ(•2”:Ñ
Ô
Ô
"€CØ˜g¨šnÔ-Ô2€OØ˜g¨šnÔ-Ô2€OØ˜g¨šnÔ-Ô2€OØ˜g¨šnÔ-Ô2€Oà˜_Ò,Ð,Ð,Ð,Ø˜_Ò,Ð,Ð,Ð,ð €HØˆIð Ø!ØØØð	ð ð
 ðð €Eð ˆIð Ø!ØØØð	ð ð
 ðð €Eð ×!Ò! !Ñ$Ô$€GØ×!Ò! !Ñ$Ô$€GàÔ€GØÔ€GåŒK˜Ñ Ô  SÑ(­F¬K¸Ñ,@Ô,@ÀSÑ+HÑHÝŒ�GÑÔØ	ñLå”˜GÑ$Ô$¨Ñ,ñL-ò -ð -ð -ð -ð -ð -r@   c                 ó"  — d}d}d}d}d}d}t           j        j                             d¦  «        }|                     ||¦  «        }t          j        ||¦  «         t          j        ||dd¬	¦  «        \  }	}
d
D �]}| dk    r|dk    rŒ|	                     ¦   «         |
                     ¦   «         }}d }t          d¦  «        D ]Ê}t          ||||d|d|| ||ddd¬¦  «        \  }}}t          j        ||||¦  «        ||z  |z  |                     ¦   «         z  z   ||z  |z  |                     ¦   «         z  z   |d|z
  z  |z  |dz                       ¦   «         z  z   |d|z
  z  |z  |dz                       ¦   «         z  z   }|�||k    sJ ‚|}ŒË�Œd S )Nr×   rw   r,   rD   rØ   rd   r+   r-   r1   rñ   r   r   r¨   r”   r   r   T)rC   r2   r   r   rc   r   rE   rô   Úverboser3   r»   )r!   r-   r4   r5   r7   r6   r8   r9   rö   r}   r   rÝ   rË   )r   r~   r   r   r÷   rô   rE   r;   rt   rY   rZ   rC   r=   r>   Úprevious_lossr½   rà   s                    r(   Útest_nmf_decreasingr  Ç  sñ  € ð €IØ€JØ€LØ€EØ€HØ
€Cõ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CØ�	Š	�)˜ZÑ(Ô(€AÝ„Fˆ1ˆa�L„L€LÝÔ   L°xÈbÐQÑQÔQ�F€Bˆà2ð "!ñ "!ˆ	Ø�TŠ>ˆ>˜i¨1šn˜nàØ�wŠw‰yŒy˜"Ÿ'š'™)œ)ˆ1ˆØˆÝ�r‘”ð 	!ð 	!ˆAå0ØØØØ#ØØ)ØØØØØ!ØØØðñ ô ‰GˆAˆq�!õ$ Ô$ Q¨¨1¨iÑ8Ô8Ø˜(Ñ" ZÑ/°!·%²%±'´'Ñ9ñ:à˜(Ñ" YÑ.°·²±´Ñ8ñ9ð ˜1˜x™<Ñ(¨:Ñ5¸¸A¹¿
º
¹¼ÑDñEð ˜1˜x™<Ñ(¨9Ñ4¸¸1¹·z²z±|´|ÑCñ	Dð ð Ð(Ø$ tÒ+Ð+Ð+Ð+Ø ˆMˆMñ9	!ð"!ð "!r@   c                  óà  — t           j                             d¦  «        } d\  }}}t          j        |                      ||¦  «        ¦  «        dz  }t          j        |                      ||¦  «        ¦  «        dz  }t          j        |                      ||¦  «        ¦  «        }d|d<   t          j        |||d¬¦  «        }d|d<   t          j        |||d¬¦  «        }t          ||¦  «         d S )Nr   )r,   r   r   r,   )r   r   rB   )rÎ   g       )r!   r-   r5   r6   r7   r8   rÝ   r   )	r;   r~   r   r   rt   r=   r>   r_   rÒ   s	            r(   Útest_nmf_underflowr  ý  sÞ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ*2Ñ'€Iˆz˜<Ý
Œˆs�yŠy˜ JÑ/Ô/Ñ0Ô0°2Ñ5€AÝ
Œˆs�yŠy˜ LÑ1Ô1Ñ2Ô2°RÑ7€AÝ
Œˆs�yŠy˜ zÑ2Ô2Ñ3Ô3€Aà€A€d�GÝ
Ô
˜q ! Q¨SÐ
1Ñ
1Ô
1€CØ€A€d�GÝ
Ô
˜q ! Q¨SÐ
1Ñ
1Ô
1€CÝ˜˜SÑ!Ô!Ð!Ð!Ð!r@   zdtype_in, dtype_outc                 ó’  — t           j                             d¦  «                             dd¦  «                             |d¬¦  «        }t          j        ||¬¦  «          | d
ddddd	œ|¤Ž} |j        |¦  «                             |¦  «        j        |k    sJ ‚ |j	        |¦  «        j        |k    sJ ‚|j
        j        |k    sJ ‚d S )Nr   r×   rw   F)rö   rÈ   rB   r¤   )rc   re   rE   r3   r    )r!   r-   r5   r7   Úastyper6   r%   rJ   Údtyperk   rl   )r   r   Údtype_inÚ	dtype_outrt   r8   s         r(   Útest_nmf_dtype_matchr     sí   € õ  	Œ	×Ò˜aÑ Ô ×&Ò& r¨2Ñ.Ô.×5Ò5°hÀUÐ5ÑKÔK€AÝ„Fˆ1�!ÐÑÔÐà
ˆ)ð ØØØØð	ð ð
 ðð €Cð ˆ3Œ7�1‰:Œ:×Ò Ñ"Ô"Ô(¨IÒ5Ð5Ð5Ð5Øˆ3Ô˜QÑÔÔ%¨Ò2Ð2Ð2Ð2ØŒ?Ô  IÒ-Ð-Ð-Ð-Ð-Ð-r@   c                 óv  — t           j                             d¦  «                             dd¦  «        }t          j        ||¬¦  «          | d	dddœ|¤Ž}|                     |                     t           j        ¦  «        ¦  «        } | d	dddœ|¤Ž}|                     |¦  «        }t          ||d¬¦  «         d S )
Nr   é2   rÛ   rÈ   r�   )r3   rE   rõ   rz   r    )	r!   r-   r5   r7   r6   rk   r  Úfloat32r   )r   r   rt   Únmf32ÚW32Únmf64ÚW64s          r(   Ú$test_nmf_float32_float64_consistencyr(  .  sÅ   € õ 	Œ	×Ò˜aÑ Ô ×&Ò& r¨1Ñ-Ô-€AÝ„Fˆ1�!ÐÑÔÐØˆIÐ9 1¨$Ð9Ð9°&Ð9Ð9€EØ
×
Ò
˜aŸhšh¥r¤zÑ2Ô2Ñ
3Ô
3€CØˆIÐ9 1¨$Ð9Ð9°&Ð9Ð9€EØ
×
Ò
˜aÑ
 Ô
 €Cå�C˜ 4Ð(Ñ(Ô(Ð(Ð(Ð(r@   c                 ó2  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «                             t           j        ¦  «        }|                     d¦  «        }t          j        t          d¬¦  «        5   | d¬¦  «         	                    |||¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  t          ||d	¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )r×   rw   )rw   rw   zshould have the same dtype as Xr   r”   rG   ©r>   r=   F)r>   r»   )r!   r-   r5   Úrandom_sampler  r#  r#   rH   Ú	TypeErrorr%   r   )r   r;   rt   r>   r=   s        r(   Ú test_nmf_custom_init_dtype_errorr-  @  s†  € õ
 Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜(Ñ#Ô#€AØ×Ò˜(Ñ#Ô#×*Ò*­2¬:Ñ6Ô6€AØ×Ò˜(Ñ#Ô#€Aå	Œ•yÐ(IÐ	JÑ	JÔ	Jð 2ð 2Øˆ	�xÐ Ñ Ô ×$Ò$ Q¨!¨qÐ$Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2õ 
Œ•yÐ(IÐ	JÑ	JÔ	Jð ;ð ;Ý" 1¨°EÐ:Ñ:Ô:Ð:ð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ;ð ;s$   Â#CÃC
ÃC
Ã,DÄDÄD)r  r   rØ   r   rÙ   r   ró   c           	      ór  — t           j        j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        }t          d| ddd¬¦  «        }t          d| ddd |j        d         d¬¦  «        } |j	        |¦  «        }| 	                    |¦  «        }t          ||¦  «         d S )	Nr+   é0   rq   r   r   )r   rC   r   r3   rE   rd   )r   rC   r3   rE   Úmax_no_improvementry   Úforget_factor)r!   r-   r4   r5   r6   r7   r   r   rê   rk   r   )rC   r;   rt   r8   Úmbnmfr=   ÚmbWs          r(   Ú!test_nmf_minibatchnmf_equivalencer4  Q  sÊ   € õ Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜QÑÔÑ Ô €Aå
ØØØØØðñ ô €Cõ ØØØØØØ”7˜1”:Øðñ ô €Eð 	ˆÔ˜!ÑÔ€AØ
×
Ò
˜aÑ
 Ô
 €CÝ�A�sÑÔÐÐÐr@   c            
      óX  — t           j        j                             d¦  «        } t          j        |                      dd¦  «        ¦  «        }d}d}d}t          |dd||dd d¬	¦  «        }t          |dd¬
¦  «        }t          j        ||dd¬
¦  «        \  }}| 	                    |||¬¦  «         t          |¦  «        D ]?}	t          |¦  «        D ]-}
|                     ||
|
|z   …         |d |…         |¬¦  «         Œ.Œ@|j        |j        k    sJ ‚t          |j        |j        ¦  «         d S )Nr+   r¬   rq   r,   r   r”   r   F)r   r2   r3   r   ry   rE   r0  r�   ©r   r2   r3   r-   r–   )r!   r-   r4   r5   r6   r7   r   r8   r9   r%   r}   Úpartial_fitÚn_steps_r   rl   )r;   rt   r   ry   r   Úmbnmf1Úmbnmf2r=   r>   Úir‚   s              r(   Útest_minibatch_nmf_partial_fitr<  m  sf  € å
Œ)Ô
×
&Ò
& rÑ
*Ô
*€CÝ
Œˆs�yŠy˜˜aÑ Ô Ñ!Ô!€Aà€LØ€JØ€HåØ!ØØØØØØØð	ñ 	ô 	€Fõ  |¸(ÐQRÐSÑSÔS€Fõ ÔØ	˜¨8À!ðñ ô �D€A€qð ‡J‚Jˆq�A˜€JÑÔÐÝ�8‰_Œ_ð Mð MˆÝ�zÑ"Ô"ð 	Mð 	MˆAØ×Ò˜q  Q¨¡^Ð!3Ô4¸¸+¸:¸+¼È!ÐÑLÔLÐLÐLð	Mð Œ?˜fœoÒ-Ð-Ð-Ð-Ý�FÔ&¨Ô(:Ñ;Ô;Ð;Ð;Ð;r@   c                  óF  — t           j                             d¦  «        } t          j        |                      dd¦  «        ¦  «        }t          d¬¦  «                             |¦  «        } |j        ¦   «         }t          d„ t          d¦  «        D ¦   «         |¦  «         dS )z Check feature names out for NMF.r   r,   r“   rF   )r   c                 ó   — g | ]}d |› �‘ŒS )r8   r    )Ú.0r;  s     r(   ú
<listcomp>z*test_feature_names_out.<locals>.<listcomp>—  s   € Ð4Ð4Ð4 a˜	˜a˜	˜	Ð4Ð4Ð4r@   N)
r!   r-   r5   r6   r7   r   r%   Úget_feature_names_outr   r}   )r3   rt   r8   Únamess       r(   Útest_feature_names_outrC  �  s�   € å”9×(Ò(¨Ñ+Ô+€LÝ
Œˆ|×!Ò! " aÑ(Ô(Ñ)Ô)€AÝ
˜1Ð
Ñ
Ô
×
!Ò
! !Ñ
$Ô
$€Cà%ˆCÔ%Ñ'Ô'€EÝÐ4Ð4­5°©8¬8Ð4Ñ4Ô4°eÑ<Ô<Ð<Ð<Ð<r@   c                  ó2  — t           j                             d¦  «                             d¦  «        } t	          ddd¬¦  «        }t
          j        }t          ¦   «         t
          _        	  |j        | ¦  «         |t
          _        d S # |t
          _        w xY w)Nr   )r¬   r,   r¤   r   )rE   r3   r  )	r!   r-   r5   r+  r   ÚsysÚstdoutr   r%   )r'   r8   Ú
old_stdouts      r(   Útest_minibatch_nmf_verboserH  ›  s   € õ 	Œ	×Ò˜aÑ Ô ×.Ò.¨yÑ9Ô9€AÝ
˜4¨a¸Ð
;Ñ
;Ô
;€CÝ”€JÝ‘”…C„Jð ØˆŒ�‰
Œ
ˆ
à�Œ
ˆ
ˆ
ø�Z�Œ
ÐÐÐÐs   Á*B ÂBc                 ó>  — t           j                             d¦  «        }t          j        |                     dd¦  «        ¦  «        } | dddd¬¦  «        }|                     |¦  «        }t          j        t          d	¬
¦  «        5  | 	                    ¦   «          d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬
¦  «        5  | 	                    ||¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        d¬¦  «        5  t          j        d¦  «         | 	                    |¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬
¦  «        5  | 	                    |¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr+   rh   rq   rF   r-   r   r‰   r•   z$Missing required positional argumentr   z$Cannot use both X and Xt. Use X only)rt   ÚXtT)ÚrecordrU   zXt was renamed X in version 1.5)rJ  )r!   r-   r5   r6   r7   rk   r#   rH   r,  rŸ   ÚwarningsÚcatch_warningsÚsimplefilterr$   ÚFutureWarning)r   r;   r'   Úestrt   s        r(   Ú)test_NMF_inverse_transform_Xt_deprecationrQ  ©  s�  € å
Œ)×
Ò
 Ñ
#Ô
#€CÝ
Œˆs�yŠy˜˜A‰ŒÑÔ€AØ
ˆ)ØØØØð	ñ ô €Cð 	×Ò˜!ÑÔ€Aå	Œ•yÐ(NÐ	OÑ	OÔ	Oð  ð  Ø×ÒÑÔÐð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  õ 
Œ•yÐ(NÐ	OÑ	OÔ	Oð )ð )Ø×Ò  aÐÑ(Ô(Ð(ð)ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )õ 
Ô	 ¨Ð	-Ñ	-Ô	-ð !ð !ÝÔ˜gÑ&Ô&Ð&Ø×Ò˜aÑ Ô Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !õ 
Œ•mÐ+LÐ	MÑ	MÔ	Mð $ð $Ø×Ò ÐÑ#Ô#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $ð $ð $sH   ÂB(Â(B,Â/B,ÃC2Ã2C6Ã9C6Ä*EÅEÅEÅ.FÆFÆFc                 ó@  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        } | dddd¬¦  «        }|                     |||¬	¦  «         |j        |j        d         k    sJ ‚d S )
Nr   r  ©rh   r   ©r   rq   r   r”   r‰   r•   r–   )r!   r-   r5   r+  rk   Ú_n_componentsrê   )r   r;   rt   r=   r>   rP  s         r(   Útest_nmf_n_components_autorV  Ã  s±   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AØ
ˆ)ØØØØð	ñ ô €Cð ×Ò�a˜1 ÐÑ"Ô"Ð"ØÔ ¤¨¤
Ò*Ð*Ð*Ð*Ð*Ð*r@   c                  ó:  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t	          |||dd¬¦  «        \  }}}|j        |j        k    sJ ‚|j        |j        k    sJ ‚d S )Nr   r  rS  rT  r”   r   )r=   r>   r2   r   )r!   r-   r5   r+  r   rê   )r;   rt   rš   r™   r=   r>   r½   s          r(   Ú5test_nmf_non_negative_factorization_n_components_autorX  Õ  s©   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜vÑ&Ô&€FØ×Ò˜vÑ&Ô&€FÝ(Ø	ˆV�v H¸6ðñ ô �G€A€qˆ!ð Œ7�f”lÒ"Ð"Ð"Ð"ØŒ7�f”lÒ"Ð"Ð"Ð"Ð"Ð"r@   c                  ó"  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          j        t          d¬¦  «        5  t          ||¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r  rT  z4The default value of `n_components` will change fromr   )r>   )r!   r-   r5   r+  r#   r$   rO  r   )r;   rt   r>   s      r(   Ú+test_nmf_n_components_default_value_warningrZ  ä  sÓ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ	ŒÝÐSð
ñ 
ô 
ð +ð +õ 	# 1¨Ð*Ñ*Ô*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s   Á%BÂBÂBc                  ó0  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          ||dd¬¦  «        \  }}}t          ||¦  «         |j        |j        d         |j        d         fk    sJ ‚d S )Nr   r  rT  r   F)r>   r   r»   )r!   r-   r5   r+  r   r   rê   )r;   rt   rƒ   r=   r>   r½   s         r(   Ú&test_nmf_n_components_auto_no_h_updater\  î  sž   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜vÑ&Ô&€FÝ(Ø	ˆV &°5ðñ ô �G€A€qˆ!õ �A�vÑÔÐØŒ7�q”w˜q”z 6¤<°¤?Ð3Ò3Ð3Ð3Ð3Ð3Ð3r@   c                  ól  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t	          j        t          d¬¦  «        5  t          ||dd¬	¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  t          |||dd¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t	          j        t          d¬¦  «        5  t          |||dd¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r  rS  rT  z0When init!='custom', provided W or H are ignoredr   Tr   )r>   r»   r   )r=   r>   r»   r   z8When update_H=False, the provided initial W is not used.F)r!   r-   r5   r+  r#   r$   ÚRuntimeWarningr   )r;   rt   rš   r™   s       r(   Útest_nmf_w_h_not_used_warningr_  ü  s-  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜vÑ&Ô&€FØ×Ò˜vÑ&Ô&€FÝ	ŒÝØ@ð
ñ 
ô 
ð Tð Tõ 	# 1¨¸ÈFÐSÑSÔSÐSð	Tð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð Tõ 
ŒÝØ@ð
ñ 
ô 
ð 
ð 
õ 	#Ø�˜6¨D¸vð	
ñ 	
ô 	
ð 	
ð	
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
õ 
ŒÝÐXð
ñ 
ô 
ð 
ð 
õ
 	#Ø�˜6¨EÀð	
ñ 	
ô 	
ð 	
ð
ð 
ð 
ñ 
ô 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
øøøð 
ð 
ð 
ð 
ð 
ð 
s6   Á:BÂBÂ!BÃ C!Ã!C%Ã(C%ÄD)Ä)D-Ä0D-c                  ó"  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          ddd¬¦  «        }t          j        t          d¬¦  «        5   |j        |||                      d	¦  «        ¬
¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5   |j        |||                      d¦  «        ¬
¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r  rT  r   r”   r6  z'Array with wrong first dimension passedr   )rq   r   r*  z(Array with wrong second dimension passed)rh   rF   )	r!   r-   r5   r+  r   r#   rH   rI   r%   )r;   rt   r>   r8   s       r(   Ú test_nmf_custom_init_shape_errorra    sˆ  € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜&Ñ!Ô!€AÝ
˜1 8¸!Ð
<Ñ
<Ô
<€Cå	Œ•zÐ)RÐ	SÑ	SÔ	Sð 5ð 5ØˆŒ��Q˜#×+Ò+¨FÑ3Ô3Ð4Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5õ 
Œ•zÐ)SÐ	TÑ	TÔ	Tð 5ð 5ØˆŒ��Q˜#×+Ò+¨FÑ3Ô3Ð4Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s$   Á7'B*Â*B.Â1B.Ã'DÄDÄD)PrK   rE  rL  Úior   Únumpyr!   r#   Úscipyr   Úsklearn.baser   Úsklearn.decompositionr   r   r   r	   r8   Úsklearn.exceptionsr
   Úsklearn.utils._testingr   r   r   r   r   Úsklearn.utils.extmathr   Úsklearn.utils.fixesr   r   ÚmarkÚparametrizer)   r?   ÚfilterwarningsrP   rW   ra   ÚUserWarningro   ru   r‡   r�   r‘   r›   r¡   r¦   r©   r´   r¹   rÂ   rÅ   rÔ   râ   rï   rû   r  r  r  r  r  r#  r	  Úint32Úint64r   r(  r-  r4  r<  rC  rH  rQ  rV  rX  rZ  r\  r_  ra  r    r@   r(   ú<module>rq     sü
  ðØ 	€	€	€	Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ -Ð -Ð -Ð -Ð -Ð -Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1ðð ð ð ð ð ð ð ð ð ð ð ð ð ð /Ð .Ð .Ð .Ð .Ð .Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >ð „×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ðDð Dñ	ô ðDð4ð 4ð 4ð „×Òðà<ñô ð
,ð ,ñô ð
,ð>	ð 	ð 	ð:ð :ð :ð €˜+Ð&Ñ&Ô&Ø„×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ð „×Ò˜Ð!RÑSÔSØ„×Ò˜ JÑ/Ô/Ø„×Ò˜Ð$6Ñ7Ô7ðEð Eñ 8Ô7ñ 0Ô/ñ TÔSñ	ô ñ 'Ô&ðEð „×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ð1ð 1ñ	ô ð1ð-'ð -'ð -'ð` „×Ò˜ D¨$ <Ñ0Ô0ð&ð &ñ 1Ô0ð&ð"ð ð ð  „×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ðð ñ	ô ðð  „×Ò˜ <Ñ0Ô0ð3ð 3ñ 1Ô0ð3ð" „×ÒÐTÑUÔUð4ð 4ñ VÔUð4ð  „×Ò˜ s¨LÐ&9Ñ:Ô:ð@ð @ñ ;Ô:ð@ð „×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ð „×ÒÐ+¨^¸nÑ-LÑMÔMØ„×Ò˜ JÑ/Ô/Ø„×Ò˜Ð$6Ñ7Ô7ðð ñ 8Ô7ñ 0Ô/ñ NÔMñ	ô ðð8 „×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ð „×Ò˜¨.Ñ9Ô9ð
/ð 
/ñ :Ô9ñ	ô ð

/ð „×ÒÐTÑUÔUØ„×Ò˜ (¨HÐ!5Ñ6Ô6Ø„×Ò˜ <Ñ0Ô0Ø„×Ò˜ JÑ/Ô/Ø„×Ò˜Ð$6Ñ7Ô7ð,&ð ,&ñ 8Ô7ñ 0Ô/ñ 1Ô0ñ 7Ô6ñ VÔUð
,&ð^,ð ,ð ,ð(ð ð ð< „×Ò˜¨.Ñ9Ô9ð6ð 6ñ :Ô9ð6ð. „×Ò˜¨.Ñ9Ô9ð3ð 3ñ :Ô9ð3ð6 €Ð,Ð-Ñ-Ô-Ø„×Ò˜¨.Ñ9Ô9ðK+ð K+ñ :Ô9ñ .Ô-ðK+ð\ „×Ò˜¨.Ñ9Ô9ð!-ð !-ñ :Ô9ð!-ðJ „×ÒÐTÑUÔUØ„×Ò˜ t¨S kÑ2Ô2ð
ð 
ñ 3Ô2ñ VÔUð
ð „×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ðB-ð B-ñ	ô ðB-ðJ €Ð,Ð-Ñ-Ô-Ø„×Ò˜ <Ñ0Ô0ð1!ð 1!ñ 1Ô0ñ .Ô-ð1!ðh"ð "ð "ð  „×ÒÐTÑUÔUØ„×ÒØà	Œ�R”ZÐ Ø	Œ�R”ZÐ Ø	Œ�2”:ÐØ	Œ�2”:Ðð	ñô ð „×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ð.ð .ñ	ô ñô ñ VÔUð.ð& „×ÒÐTÑUÔUØ„×ÒØ�(ÐØ	ˆH�dÐÐ˜s X¨tÐ$4Ð5¸ÀbÐ7IÐJñô ð	)ð 	)ñ	ô ñ VÔUð
	)ð „×ÒÐTÑUÔUØ„×Ò˜ s¨LÐ&9Ñ:Ô:ð;ð ;ñ ;Ô:ñ VÔUð;ð „×Ò˜Ð&DÐ&DÐ&DÑEÔEðð ñ FÔEðð6 <ð  <ð  <ðF=ð =ð =ð „×ÒÐTÑUÔUð	 ð 	 ñ VÔUð	 ð „×Ò˜ s¨LÐ&9Ñ:Ô:ð$ð $ñ ;Ô:ð$ð2 „×Ò˜ s¨LÐ&9Ñ:Ô:ð+ð +ñ ;Ô:ð+ð"#ð #ð #ð+ð +ð +ð4ð 4ð 4ð
ð 
ð 
ð>5ð 5ð 5ð 5ð 5r@   