§
    qŠtj(€  ã                   ó~  — 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 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„ ¦   «         Z"d„ Z#d„ Z$ej         !                    d¦  «        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+d#„ Z,ej                             deeg¦  «        d$„ ¦   «         Z-e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&„ ¦   «         ¦   «         ¦   «         ¦   «         Z.ej                             ddgeddigeddigei gg¦  «        ej                             d'e¦  «        d(„ ¦   «         ¦   «         Z/ej                             dd)d*g¦  «        ej                             dd!¦  «        ej                             dd¦  «        ej                             dd¦  «        d+„ ¦   «         ¦   «         ¦   «         ¦   «         Z0d,„ Z1d-„ Z2ej                             d.e¦  «        d/„ ¦   «         Z3ej                             d.e¦  «        d0„ ¦   «         Z4ej         !                    d1¦  «        ej                             d.e¦  «        d2„ ¦   «         ¦   «         Z5ej                             d.e¦  «        d3„ ¦   «         Z6ej                             d4d5d6g¦  «        d7„ ¦   «         Z7ej                             ddgeddigeddigei gg¦  «        d8„ ¦   «         Z8ej         !                    d1¦  «        ej                             dd!¦  «        d9„ ¦   «         ¦   «         Z9d:„ Z:ej                             d;ej;        ej;        fej<        ej<        fej=        ej<        fej>        ej<        fg¦  «        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geddigeddigei gg¦  «        d=„ ¦   «         Z@ej                             deeg¦  «        d>„ ¦   «         ZAej                             d4g d?¢¦  «        d@„ ¦   «         ZBdA„ ZCdB„ ZDdC„ ZEej                             deeg¦  «        dD„ ¦   «         ZFdE„ ZGdF„ ZHdG„ ZIdH„ ZJej                             dd¦  «        ej                             dIdJdK¬L¦  «        ej                             dd!¦  «        dM„ ¦   «         ¦   «         ¦   «         ZKdS )Né    N)ÚStringIO)Úlinalg)Úclone)ÚNMFÚMiniBatchNMFÚnon_negative_factorization)Ú_nmf)ÚConvergenceWarning)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equal)Ú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       úb/var/www/html/CA-Chatbot/venv/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Údatar1   Ú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 initializationc                  ó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.   r/   zLinit = '{}' can only be used when n_components <= min(n_samples, n_features)é   ©r1   )r    r!   r"   ÚraisesÚ
ValueErrorr   r$   Ú	transformr7   r8   ÚreÚescapeÚformatr   )r&   ÚmsgÚclfr1   s       r'   Útest_parameter_checkingrO   -   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-   rF   )r    r,   r3   r4   r5   r6   r7   r8   r   ÚnormÚdotÚmean)r:   r&   r<   r=   ÚerrorÚsdevs         r'   Útest_initialize_closerV   P   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-   rF   r.   r/   r   r0   )	r    r,   r3   r4   r5   r6   r7   r8   r   )
r:   r;   ÚW0ÚH0ÚWaÚHaÚWarÚHarÚrefÚevls
             r'   Útest_initialize_variantsr`   \   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?   r1   )Nr-   r.   r/   r,   Úalpha_W)ç        rA   Úalpha_H)rb   rA   Ú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   r1   ra   rc   r2   r   )r    Úc_ÚarangeÚfit_transformÚcomponents_r9   )r   r   r1   ra   rc   r&   ÚmodelÚtransfs           r'   Útest_nmf_fit_nn_outputrm   k   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*   é   r/   r   iX  )r1   r2   r   rf   rC   )ro   )r    r,   r3   r4   r5   r6   r$   Úreconstruction_err_)r   r   r:   ÚpnmfÚXs        r'   Útest_nmf_fit_closers   …   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+   ro   r   rE   éè  r*   r   r   )r   r   rB   r   r2   rC   )r   rB   Ú
batch_sizer2   r   ©Úatol)r    r,   r3   r4   Úzerosr5   r6   ÚrangerR   r   ri   rj   rp   r   r   )Ú	n_samplesÚ
n_featuresr   rB   rw   r   r:   ÚW_trueÚW_arrayÚjÚH_trueÚH_arrayrr   rk   rl   Ú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*   rf   ro   rE   r,   r   ç�íµ ÷Æ°>)r   r   r1   r2   rD   rC   rx   )
r    r,   r3   r4   r5   r6   r   ri   rI   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*   rf   ro   rE   r   çü©ñÒMbP?T)r   r2   rD   Úfresh_restarts)
r    r,   r3   r4   r5   r6   r   ri   rI   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   rf   ro   é   Úcustomr�   ©r   r1   r2   rD   ©r<   r=   r   )	r    r,   r4   r5   r6   ÚsqrtrS   ri   rI   )	r   r   r2   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   rf   r‘   r,   rv   )r   r   r1   r2   r   r   ©Údecimal)	r    r,   r4   r5   r6   r   ri   Úinverse_transformr   )r   r2   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   rf   r‘   éô  r/   T)r2   r   r1   rŽ   r�   ç{®Gáz„?)Úrtolry   )	r    r,   r4   r5   r6   r   ri   r�   r   )r:   r&   r7   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+   ru   r   r¢   )r   r2   rD   )r    r,   r3   r4   r5   r6   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   ro   r,   éd   )r   r1   ra   rc   r2   rD   r   r   )r    r,   r3   r4   r5   r6   rh   r   ri   rj   r   )r   r   r¨   ra   rc   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*   rE   r   r   )r   r   i�  )r2   r   r   rC   rx   r   )	r    r,   r3   r4   r5   r6   ri   rI   r   )r   r   r³   r:   r&   rk   ÚA_fit_trÚA_trs           r'   Útest_nmf_sparse_transformr·   I  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   ro   r   r¢   )r1   r   r   ra   rc   r2   rD   F)	r=   Úupdate_Hr1   r   r   ra   rc   r2   rD   )r    r,   r3   r4   r5   r6   rh   r   r   ri   rI   r   )r1   r   ra   rc   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’   rF   z/Negative values in data passed to NMF (input W)z.Array passed to NMF (input H) is full of zerosr   )r    r!   r   rJ   rK   r"   rG   rH   )r&   ÚnnmfrM   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    rR   r   ÚmaximumÚsumÚlogÚsize)	rr   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+   ro   )rb   ç      à?rA   ç      ø?ç       @g      @r*   r   rÆ   r,   r0   é   r›   )r    r,   r3   r4   r6   Úclipr7   r8   rÒ   Ú_beta_divergencer   )rÓ   r|   r}   r   Úbeta_lossesr:   rr   Ú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+   ro   rE   r*   r   rÆ   r›   )r    r,   r3   r4   r6   rÚ   r5   r7   Ú_special_sparse_dotÚnonzeroÚasarrayÚravelr   r   ÚindicesÚindptrÚshape)rÓ   r|   r}   r   r:   rr   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?   z-ignore::sklearn.exceptions.ConvergenceWarningc                 ó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+   ro   rC   rÖ   i9  r,   r*   r0   ©g333333ó¿r   çš™™™™™É?rA   rØ   ç      @r’   Tr   )r1   r¹   r   rB   r   ra   Úl1_ratior2   gH¯¼šò×z>rx   çñhãˆµøä>g-Cëâ6?)r    r,   r3   r4   r6   r5   r7   r8   Úcopyr   r   )rÓ   r|   r}   r   Úalpharò   Ún_iterr:   rr   rÝ   rX   rY   rB   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 )Nrf   ro   rE   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   rv   )r1   r   r   rB   r2   r   )r   r    r9   Úisnan)rr   rB   r<   r=   r»   r   s        €r'   Ú_assert_nmf_no_nanz7test_nmf_negative_beta_loss.<locals>._assert_nmf_no_nanQ  sv   ø€ Ý,ØØØ%ØØØØð
ñ 
ô 
‰ˆˆ1ˆaõ ”6�"œ( 1™+œ+Ñ&Ô&Ð&Ð&Ð&Ý”6�"œ( 1™+œ+Ñ&Ô&Ð&Ð&Ð&Ð&Ð&r?   úAWhen beta_loss <= 0 and X contains zeros, the solver may diverge.)g333333ã¿rb   r   rÅ   )rð   rA   g333333ó?rØ   rñ   )	r    r,   r3   r4   r6   rÚ   r"   rG   rH   )
rÓ   r|   r}   r:   rr   rÝ   rý   rM   rB   r   s
            @r'   Útest_nmf_negative_beta_lossrÿ   D  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(	rB   ç      à¿rb   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   ©rf   ro   )rË   )rB   r2   rþ   r   N)	r    r,   r4   Únormalr   r"   rG   rH   r$   )rB   r:   rr   r7   rM   s        r'   Ú%test_minibatch_nmf_negative_beta_lossr  i  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 )Nrf   ro   rE   r*   rA   rÖ   )r   ra   rò   r2   rb   rØ   r   )r    r,   r3   r4   r5   r6   ri   rj   ÚfinfoÚfloat64ÚepsrË   r   rQ   )r   r   r|   r}   r   r:   rr   rò   Úregulrk   Ú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  w  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Õ   ru   r+   rC   rÖ   rb   r*   r,   r0   rï   r   r   r¦   r’   r   r   T)rB   r1   r   r   ra   r   rD   rò   Úverboser2   r¹   )r    r,   r3   r4   r6   r5   r7   r8   rô   r{   r   rÛ   rÉ   )r   r|   r}   r   rõ   rò   rD   r:   rr   rX   rY   rB   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   rA   )rÌ   g       )r    r,   r4   r5   r6   r7   rÛ   r   )	r:   r|   r}   r   rr   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Õ   ru   F)rô   rÆ   rA   r¢   )ra   rc   rD   r2   r   )r    r,   r4   r6   Úastyper5   r$   rI   Údtyperi   rj   )r   r   Údtype_inÚ	dtype_outrr   r7   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�   )r2   rD   ró   rx   r   )	r    r,   r4   r6   r5   ri   r  Úfloat32r   )r   r   rr   Ú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Õ   ru   )ru   ru   zshould have the same dtype as Xr   r’   rF   ©r=   r<   F)r=   r¹   )r    r,   r4   Úrandom_sampler  r!  r"   rG   Ú	TypeErrorr$   r   )r   r:   rr   r=   r<   s        r'   Ú test_nmf_custom_init_dtype_errorr+  4  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   ro   r   r   )r   rB   r   r2   rD   rb   )r   rB   r2   rD   Úmax_no_improvementrw   Úforget_factor)r    r,   r3   r4   r5   r6   r   r   rè   ri   r   )rB   r:   rr   r7   Úmbnmfr<   ÚmbWs          r'   Ú!test_nmf_minibatchnmf_equivalencer2  D  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ª   ro   r+   r   r’   r   F)r   r1   r2   r   rw   rD   r.  rŽ   ©r   r1   r2   r,   r”   )r    r,   r3   r4   r5   r6   r   r7   r8   r$   r{   Úpartial_fitÚn_steps_r   rj   )r:   rr   r   rw   r   Úmbnmf1Úmbnmf2r<   r=   Úir€   s              r'   Útest_minibatch_nmf_partial_fitr:  `  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‘   rE   )r   c                 ó   — g | ]}d |› �‘ŒS )r7   r   )Ú.0r9  s     r'   ú
<listcomp>z*test_feature_names_out.<locals>.<listcomp>Š  s   € Ð4Ð4Ð4 a˜	˜a˜	˜	Ð4Ð4Ð4r?   N)
r    r,   r4   r5   r6   r   r$   Úget_feature_names_outr   r{   )r2   rr   r7   Únamess       r'   Útest_feature_names_outrA  ƒ  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   )rD   r2   r  )	r    r,   r4   r)  r   ÚsysÚstdoutr   r$   )r&   r7   Ú
old_stdouts      r'   Útest_minibatch_nmf_verboserF  �  s}   € å
Œ	×Ò˜aÑ Ô ×.Ò.¨yÑ9Ô9€AÝ
˜4¨a¸Ð
;Ñ
;Ô
;€CÝ”€JÝ‘”…C„Jð ØˆŒ�‰
Œ
ˆ
à�Œ
ˆ
ˆ
ø�Z�Œ
ÐÐÐÐs   Á*B ÂBc                 ó@  — t           j                             d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        } | dddd¬¦  «        }|                     |||¬	¦  «         |j        |j        d         k    sJ ‚d S )
Nr   r  ©rf   r   ©r   ro   r   r’   r‡   r“   r”   )r    r,   r4   r)  ri   Ú_n_componentsrè   )r   r:   rr   r<   r=   Úests         r'   Útest_nmf_n_components_autorL  ™  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  rH  rI  r’   r   )r<   r=   r1   r   )r    r,   r4   r)  r   rè   )r:   rr   r˜   r—   r<   r=   r»   s          r'   Ú5test_nmf_non_negative_factorization_n_components_autorN  «  s©   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ×Ò˜&Ñ!Ô!€AØ×Ò˜vÑ&Ô&€FØ×Ò˜vÑ&Ô&€FÝ(Ø	ˆV�v H¸6ðñ ô �G€A€qˆ!ð Œ7�f”lÒ"Ð"Ð"Ð"ØŒ7�f”lÒ"Ð"Ð"Ð"Ð"Ð"r?   c                  ó0  — t           j                             d¦  «        } |                      d¦  «        }|                      d¦  «        }t	          ||dd¬¦  «        \  }}}t          ||¦  «         |j        |j        d         |j        d         fk    sJ ‚d S )Nr   r  rI  r   F)r=   r   r¹   )r    r,   r4   r)  r   r   rè   )r:   rr   r�   r<   r=   r»   s         r'   Ú&test_nmf_n_components_auto_no_h_updaterP  ¹  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  rH  rI  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,   r4   r)  r"   r#   ÚRuntimeWarningr   )r:   rr   r˜   r—   s       r'   Útest_nmf_w_h_not_used_warningrS  Ç  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  rI  r   r’   r4  z'Array with wrong first dimension passedr   )ro   r   r(  z(Array with wrong second dimension passed)rf   rE   )	r    r,   r4   r)  r   r"   rG   rH   r$   )r:   rr   r=   r7   s       r'   Ú test_nmf_custom_init_shape_errorrU  æ  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rè   ))r¦   r+   )r+   r¦   )ÚtallÚwide)Úidsc                 ó6  — t           j                             d¦  «        }t          j        |                     |¦  «        ¦  «        }t          d| d|¬¦  «        } |j        |¦  «        }|j        |d         dfk    sJ ‚|j        j        d|d         fk    sJ ‚dS )z;Smoke test NMF with all inits, solvers on tall/wide arrays.r   ro   )r   r1   r2   r   r   N)	r    r,   r4   r5   r)  r   ri   rè   rj   )r1   rè   r   r:   rr   r7   r<   s          r'   Útest_nmf_smokerZ  õ  s�   € õ
 Œ)×
Ò
 Ñ
"Ô
"€CÝ
Œˆs× Ò  Ñ'Ô'Ñ(Ô(€Aå
˜1 4°aÀÐ
GÑ
GÔ
G€CØˆÔ˜!ÑÔ€AàŒ7�u˜Q”x �mÒ#Ð#Ð#Ð#ØŒ?Ô  Q¨¨a¬ MÒ1Ð1Ð1Ð1Ð1Ð1r?   )LrJ   rC  Úior   Únumpyr    r"   Úscipyr   Úsklearn.baser   Úsklearn.decompositionr   r   r   r	   r7   Úsklearn.exceptionsr
   Úsklearn.utils._testingr   r   r   r   Úsklearn.utils.extmathr   Úsklearn.utils.fixesr   r   ÚmarkÚparametrizer(   r>   ÚfilterwarningsrO   rV   r`   rm   rs   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+  r2  r:  rA  rF  rL  rN  rP  rS  rU  rZ  r   r?   r'   ú<module>ri     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ð 4ð 4ð 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ñ	ô ð

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