a
    ¶Àhlu  ã                
   @   s  d dl Z d dlZd dlmZ d dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZmZmZ d dl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mZm Z  d d
l!m"Z" ej# $d ¡Z%d\Z&Z'e% (e&e'¡Z)dd„ Z*dd„ Z+dd„ Z,dd„ Z-dd„ Z.ej/ 0dg d¢¡ej/ 0dddg¡ej/ 0dddg¡dd„ ƒƒƒZ1ej/ 0dddg¡dd„ ƒZ2d d!„ Z3d"d#„ Z4d$d%„ Z5d&d'„ Z6d(d)„ Z7d*d+„ Z8d,d-„ Z9d.d/„ Z:ej/ 0dg d¢¡ej/ 0dddg¡ej/ 0dddg¡d0d1„ ƒƒƒZ;ej/ 0dddg¡d2d3„ ƒZ<ej/ 0dddg¡ej/ 0dddg¡d4d5„ ƒƒZ=d6d7„ Z>d8d9„ Z?d:d;„ Z@d<d=„ ZAd>d?„ ZBd@dA„ ZCdBdC„ ZDej/ 0dDg d¢¡ej/ 0dEddg¡dFdG„ ƒƒZEej/ 0dDdHdIg¡dJdK„ ƒZFdLdM„ ZGdNdO„ ZHdPdQ„ ZIdRdS„ ZJdTdU„ ZKdVdW„ ZLdXdY„ ZMdZd[„ ZNd\d]„ ZOej/ 0d^d_¡ej/ 0d`ejPejQf¡dadb„ ƒƒZRej/ 0d^d_¡dcdd„ ƒZSej/ 0dd_¡ej/ 0d`ejPejQf¡dedf„ ƒƒZTej/ 0dgdh¡ej/ 0dd_¡ej/ 0diejPejPfejQejQfejUejQfejVejQff¡djdk„ ƒƒƒZWej/ 0dgdh¡ej/ 0dd_¡ej/ 0diejPejPfejQejQfejUejQfejVejQff¡dldm„ ƒƒƒZXej/ 0dndh¡ej/ 0diejPejPfejQejQfejUejQfejVejQff¡dodp„ ƒƒZYej/ 0dndh¡dqdr„ ƒZZej/ 0dndh¡ej/ 0diejPejPfejQejQfejUejQfejVejQff¡dsdt„ ƒƒZ[ej/ 0dndh¡dudv„ ƒZ\ej/j0dwee)j]ƒeƒ edxdydzgd{d|„ d}d~d„ ƒZ^d€d„ Z_dS )‚é    N)Úpartial)Úclone)ÚDictionaryLearningÚMiniBatchDictionaryLearningÚSparseCoderÚdict_learningÚdict_learning_onlineÚsparse_encode)Ú_update_dict)ÚConvergenceWarning)Úcheck_array)Ú
TempMemmapÚassert_allcloseÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)Ú#check_transformer_data_not_an_arrayÚcheck_transformer_generalÚcheck_transformers_unfitted)ÚParallel)é
   é   c            	      C   sŠ   t j d¡} g d¢}t ddgddg¡D ]\\}}|  |t¡}|  |t¡}t |ddg¡D ]*\}}t||||d}|j||fksXJ ‚qXq(d S )Nr   )ÚompÚ
lasso_larsÚlasso_cdÚlarsÚ	thresholdé   é   é	   é   )Ú	algorithmÚn_jobs)	ÚnpÚrandomÚRandomStateÚ	itertoolsÚproductÚrandnÚ
n_featuresr	   Úshape)	ÚrngZ
algorithmsÚn_componentsÚ	n_samplesZX_Ú
dictionaryr!   r"   Úcode© r0   új/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/decomposition/tests/test_dict_learning.pyÚtest_sparse_encode_shapes_omp(   s    r2   c                  C   sv   d} t | dd t¡}|jj| tfks*J ‚d} t | dd t¡}|jj| tfksTJ ‚| t¡jtjd | fksrJ ‚d S )Nr   r   ©Úrandom_stater   )r   ÚfitÚXÚcomponents_r*   r)   Ú	transform©r,   Údicor0   r0   r1   Útest_dict_learning_shapes3   s    r;   c                  C   s.   d} t | dd t¡}|jj| tfks*J ‚d S )Né   r   r3   )r   r5   r6   r7   r*   r)   r9   r0   r0   r1   Útest_dict_learning_overcomplete>   s    r=   c                     s  dd„ ‰‡fdd„‰d} d‰d}ˆ| ‰ t jt‡ ‡‡fdd	„d
D ƒƒ }t  dˆd ˆ¡}|ˆd k }d||< d|t  |¡< | dd¡}t t¡( t	|| dd}| 
|¡ W d   ƒ n1 sÀ0    Y  t ¡ 4 t dt¡ t	|| dd}| 
|¡ W d   ƒ n1 s0    Y  d S )Nc                 S   sj   t  d| d | ¡}dt  d| ¡t jd   d|| d |d    t  || d  d|d   ¡ }|S )z1Discrete sub-sampled Ricker (Mexican hat) waveletr   r   r    é   g      Ð?)r#   ÚlinspaceÚsqrtÚpiÚexp)Ú
resolutionÚcenterÚwidthÚxr0   r0   r1   Úricker_functionE   s    ÿþÿz&test_max_iter.<locals>.ricker_functionc                    sp   t  d|d |¡}t  ||f¡}t|ƒD ]\}}ˆ ||| ƒ||< q(|t  t j|d dd¡dd…t jf  }|S )z+Dictionary of Ricker (Mexican hat) waveletsr   r   r    ©ZaxisN)r#   r?   ÚemptyÚ	enumerater@   ÚsumÚnewaxis)rE   rC   r,   ZcentersÚDÚirD   )rG   r0   r1   Úricker_matrixO   s    *z$test_max_iter.<locals>.ricker_matrixr   i   r>   c                 3   s    | ]}ˆ|ˆˆ d  dV  qdS )r   )rE   rC   r,   Nr0   )Ú.0Úw)r,   rC   rO   r0   r1   Ú	<genexpr>_   s   ý
ÿz test_max_iter.<locals>.<genexpr>)r   é2   éd   iô  éè  r   r   é   g      @g      ð¿éÿÿÿÿ)Útransform_algorithmZtransform_max_iterÚerroriÐ  )r#   Zr_Útupler?   Zlogical_notZreshapeÚpytestZwarnsr   r   Úfit_transformÚwarningsÚcatch_warningsÚsimplefilter)rX   ZsubsamplingZD_multir6   Zfirst_quarterÚmodelr0   )r,   rC   rG   rO   r1   Útest_max_iterD   s6    
	üÿ	ÿ(
ÿra   c                  C   sN   d} d}d}t jt|d  tt| |dd W d   ƒ n1 s@0    Y  d S )Nr   r   ú;Positive constraint not supported for 'lars' coding method.©ÚmatchT)ÚalphaÚpositive_code)r[   ÚraisesÚ
ValueErrorr   r6   )r,   re   Úerr_msgr0   r0   r1   Ú*test_dict_learning_lars_positive_parameter}   s
    rj   rX   )r   r   r   rf   FTÚpositive_dictc                 C   s|   d}t || d||dd t¡}| t¡}|r@|jdk ¡ sRJ ‚n|jdk  ¡ sRJ ‚|rh|dk ¡ sxJ ‚n|dk  ¡ sxJ ‚d S )Nr   r   Úcd)rX   r4   rf   rk   Úfit_algorithm)r   r5   r6   r8   r7   ÚallÚany©rX   rf   rk   r,   r:   r/   r0   r0   r1   Útest_dict_learning_positivity…   s$    úù	
rq   c                 C   sJ   d}t |dd| dd t¡}| r4|jdk ¡ sFJ ‚n|jdk  ¡ sFJ ‚d S )Nr   r   r   rl   )rX   r4   rk   rm   )r   r5   r6   r7   rn   ro   ©rk   r,   r:   r0   r0   r1   Ú'test_dict_learning_lars_dict_positivity¥   s    ûúrs   c                  C   sf   d} t | ddddd t¡}d}| d¡}tjt|d | t¡ W d   ƒ n1 sX0    Y  d S )	Nr   r   r   Trl   )rX   r4   rf   rm   ú9Positive constraint not supported for '{}' coding method.rc   )r   r5   r6   Úformatr[   rg   rh   r8   )r,   r:   ri   r0   r0   r1   Ú'test_dict_learning_lars_code_positivity¶   s    ûú
rv   c                  C   sj   d} t | dddd}| t¡ t¡}tt ||j¡tƒ |jdd | t¡}tt ||j¡tdd	 d S )
Nr<   r   çü©ñÒMbP?r   )rX   Útransform_alphar4   r   ©rX   r    ©Údecimal©	r   r5   r6   r8   r   r#   Údotr7   Ú
set_params©r,   r:   r/   r0   r0   r1   Ú!test_dict_learning_reconstructionÆ   s    ÿ
r€   c                  C   sl   d} t | ddddd}| t¡ t¡}tt ||j¡tƒ |jdd | t¡}tt ||j¡td	d
 d S )Nr<   r   rw   r   rV   ©rX   rx   r4   r"   r   ry   r    rz   r|   r   r0   r0   r1   Ú*test_dict_learning_reconstruction_parallelÖ   s    û
r‚   c               	   C   s”   d} t tƒt}t| ddddd}ttd  | |¡ |¡}W d   ƒ n1 sP0    Y  tt 	||j
¡|dd	 W d   ƒ n1 s†0    Y  d S )
Nr<   r   rw   r   rV   r   )Úcategoryr    rz   )r   r6   r   r   r   r5   r8   r   r#   r}   r7   )r,   ZX_read_onlyr:   r/   r0   r0   r1   Ú(test_dict_learning_lassocd_readonly_dataè   s    
û.ÿr„   c                  C   s~   d} t | dddd}| t¡ ttjdf ¡}tt |¡ƒdksDJ ‚|jdd | ttjdf ¡}tt |¡ƒdkszJ ‚d S )	NrV   r   r>   r   )rX   Ztransform_n_nonzero_coefsr4   r   r   ry   )	r   r5   r6   r8   r#   rL   ÚlenZflatnonzeror~   r   r0   r0   r1   Ú test_dict_learning_nonzero_coefsù   s    ür†   c                  C   sd   d} t | ddd}| t¡ t¡}d|_| t¡}t|d d …d | …f |d d …| d …f  |ƒ d S )Nr   r   r   )rX   r4   T)r   r5   r6   r8   Z
split_signr   )r,   r:   r/   Z
split_coder0   r0   r1   Útest_dict_learning_split	  s    ÿ
(ÿr‡   c               	   C   s’   t j d¡} d}tt|ddd| dd\}}|jt|fks<J ‚|j|tfksNJ ‚t  ||¡jtjksfJ ‚tt|ddd| dd}|j|tfksŽJ ‚d S )	Nr   r   rV   r   rl   T)r,   Ú
batch_sizeÚmax_iterÚmethodr4   Zreturn_codeF)	r#   r$   r%   r   r6   r*   r-   r)   r}   )r+   r,   r/   r.   r0   r0   r1   Ú test_dict_learning_online_shapes  s0    ù
	ù	r‹   c                  C   sF   d} t jt| d  ttdddd W d   ƒ n1 s80    Y  d S )Nrb   rc   rV   r   T)rˆ   r‰   rf   )r[   rg   rh   r   r6   )ri   r0   r0   r1   Ú1test_dict_learning_online_lars_positive_parameter4  s    rŒ   c              
   C   s€   d}t |dd| d||dd t¡}| t¡}|rD|jdk ¡ sVJ ‚n|jdk  ¡ sVJ ‚|rl|dk ¡ s|J ‚n|dk  ¡ s|J ‚d S )Nr   rV   r   r   rl   )rˆ   r‰   rX   r4   rf   rk   rm   )r   r5   r6   r8   r7   rn   ro   rp   r0   r0   r1   Ú-test_minibatch_dictionary_learning_positivity:  s(    ø	÷
r   c              	   C   sN   d}t |dddd| dd t¡}| r8|jdk ¡ sJJ ‚n|jdk  ¡ sJJ ‚d S )Nr   rV   r   r   r   rl   )rˆ   r‰   rX   r4   rk   rm   )r   r5   r6   r7   rn   ro   rr   r0   r0   r1   Ú'test_minibatch_dictionary_learning_lars^  s    ùø
rŽ   c              
   C   s|   t j d¡}d}tt|ddd||| d\}}|rB|dk ¡ sRJ ‚n|dk  ¡ sRJ ‚| rh|dk ¡ sxJ ‚n|dk  ¡ sxJ ‚d S )Nr   r   rV   rl   r   )r,   rˆ   rŠ   re   r4   rk   rf   )r#   r$   r%   r   r6   rn   ro   )rf   rk   r+   r,   r/   r.   r0   r0   r1   Ú$test_dict_learning_online_positivityr  s$    ø

r   c                  C   sÒ   d} dd l }ddlm} |j}z’|ƒ |_t| dddddd}| t¡ t| dddddd	}| t¡ t| ddddd
}| t¡ tt| ddddd tt| ddddd W ||_n||_0 |jj	| t
fksÎJ ‚d S )Nr   r   )ÚStringIOrV   r   çš™™™™™¹?)rˆ   r‰   ÚverboseÚtolr4   r    )rˆ   r‰   r’   Úmax_no_improvementr4   )rˆ   r‰   r’   r4   )r,   rˆ   re   r’   r4   )ÚsysÚior   Ústdoutr   r5   r6   r   r7   r*   r)   )r,   r•   r   Z
old_stdoutr:   r0   r0   r1   Ú#test_dict_learning_online_verbosityŒ  sR    ÿ
ú

ÿ
úú	r˜   c                  C   s6   d} t | dddd}| t¡ |jj| tfks2J ‚d S )Nr   rV   r   ©rˆ   r‰   r4   ©r   r5   r6   r7   r*   r)   r9   r0   r0   r1   Ú*test_dict_learning_online_estimator_shapesÁ  s    ÿ
r›   c                  C   s2   d} t | dddd t¡}|jj| tfks.J ‚d S )Nr<   rV   r   r   r™   rš   r9   r0   r0   r1   Ú&test_dict_learning_online_overcompleteÊ  s    ÿþrœ   c                  C   sD   d} t j d¡}| | t¡}t| dd|dd t¡}t|j	|ƒ d S )Nr<   r   rV   )rˆ   r‰   Ú	dict_initr4   )
r#   r$   r%   r(   r)   r   r5   r6   r   r7   )r,   r+   ÚVr:   r0   r0   r1   Ú(test_dict_learning_online_initializationÒ  s    
ÿþrŸ   c                  C   sF   d} t j d¡}| | t¡}|jdd t| dd|ddd t¡ d S )Nr<   r   F)ÚwriterV   r   )rˆ   r‰   r   r4   Úshuffle)	r#   r$   r%   r(   r)   Zsetflagsr   r5   r6   )r,   r+   rž   r0   r0   r1   Ú1test_dict_learning_online_readonly_initializationÜ  s    úùr¢   c                  C   sò   d} t j d¡}| | t¡}|t j|d ddd d …t jf  }t| dddd|d ddd		 t	¡}t| d|dd
}t
dƒD ]&}t	D ]}| |t jd d …f ¡ q€qxt  tt	|jdddk¡r¾J ‚t|j|jdd |j|j  krèdksîn J ‚d S )Nr<   r   r    r   rH   r   Fç        )r‰   rˆ   re   r¡   r   r”   r“   r4   )re   r   r4   ©re   rz   rT   )r#   r$   r%   r(   r)   rK   rL   r   r5   r6   ÚrangeZpartial_fitrn   r	   r7   r   Zn_steps_)r,   r+   rž   Zdict1Zdict2rN   Úsampler0   r0   r1   Ú%test_dict_learning_online_partial_fitë  s4    $÷
öÿr§   c                  C   sn   d} t j d¡}| | t¡}|t j|d ddd d …t jf  }dD ]$}tt||d}|j	t
| fksDJ ‚qDd S )Nr<   r   r    r   rH   ©r   r   r   r   r   ©r!   )r#   r$   r%   r(   r)   rK   rL   r	   r6   r*   r-   )r,   r+   rž   Úalgor/   r0   r0   r1   Útest_sparse_encode_shapes	  s    $r«   rª   Úpositivec                 C   sz   d}t j d¡}| |t¡}|t j|d ddd d …t jf  }tt|| |d}|rf|dk 	¡ svJ ‚n|dk  
¡ svJ ‚d S )Nr<   r   r    r   rH   ©r!   r¬   )r#   r$   r%   r(   r)   rK   rL   r	   r6   rn   ro   )rª   r¬   r,   r+   rž   r/   r0   r0   r1   Útest_sparse_encode_positivity  s    $r®   r   r   c                 C   s   d}t j d¡}| |t¡}|t j|d ddd d …t jf  }d}| | ¡}tj	t
|d  tt|| dd	 W d   ƒ n1 s‚0    Y  d S )
Nr<   r   r    r   rH   rt   rc   Tr­   )r#   r$   r%   r(   r)   rK   rL   ru   r[   rg   rh   r	   r6   )rª   r,   r+   rž   ri   r0   r0   r1   Ú)test_sparse_encode_unavailable_positivity!  s    $
r¯   c                  C   s€   d} t j d¡}| | t¡}|t j|d ddd d …t jf  }ttdd}dD ]*}t	t||d	}t	|||d	}t
||ƒ qPd S )
NrT   r   r    r   rH   ÚF)Úorderr¨   r©   )r#   r$   r%   r(   r)   rK   rL   r   r6   r	   r   )r,   r+   rž   ZXfrª   ÚaÚbr0   r0   r1   Útest_sparse_encode_input-  s    $r´   c                  C   sŒ   d} t j d¡}| | t¡}|t j|d ddd d …t jf  }tt|dd}t  	|dk¡r`J ‚t  
t  t  ||¡t d ¡¡dk sˆJ ‚d S )	Nr<   r   r    r   rH   rw   r¤   r‘   )r#   r$   r%   r(   r)   rK   rL   r	   r6   rn   r@   r}   )r,   r+   rž   r/   r0   r0   r1   Útest_sparse_encode_error9  s    $rµ   c                  C   sJ   t j d¡} |  dd¡}|  dd¡}ttƒ||dd d}|jdksFJ ‚d S )Nr   rT   é@   r    r   )r!   Zn_nonzero_coefs)rT   r    )r#   r$   r%   r(   r   r	   r*   )r+   r6   rM   r/   r0   r0   r1   Ú)test_sparse_encode_error_default_sparsityC  s
    r·   c                  C   s’   d} t j d¡}| | t¡}|t j|d ddd d …t jf  }t|ddd t	¡}t  
|dk¡rfJ ‚t  t  t  ||¡t	 d ¡¡d	k sŽJ ‚d S )
Nr<   r   r    r   rH   r   rw   ©r.   rX   rx   r‘   )r#   r$   r%   r(   r)   rK   rL   r   r8   r6   rn   r@   r}   )r,   r+   rž   Úcoderr0   r0   r1   Útest_sparse_coder_estimatorK  s    $ÿþrº   c                  C   sè   d} t j d¡}| | t¡}|t j|d ddd d …t jf  }t|ddd}t|ƒ}t	|ƒt	|ƒksjJ ‚t j
 |j|j¡ t	|jƒt	|jƒks”J ‚|j|jks¤J ‚|j|jks´J ‚t j tt¡ t j¡}t j
 | |¡| |¡¡ d S )	Nr<   r   r    r   rH   r   rw   r¸   )r#   r$   r%   r(   r)   rK   rL   r   r   ÚidZtestingr   r.   Zn_components_Ún_features_in_Úrandr-   ÚastypeÚfloat32r8   )r,   r+   rž   r¹   ZclonedÚdatar0   r0   r1   Ú!test_sparse_coder_estimator_cloneW  s    $ÿrÁ   c                  C   sb   t j d¡} d\}}|  ||¡}tdƒd|  }t j ||¡ t j¡}t|ddd}| |¡ d S )Né	  )é(   r¶   g    €„>ArV   r   r    )rX   r"   )	r#   r$   r%   r½   Úintr¾   r¿   r   r\   )r+   r,   r)   Ú	init_dictr-   rÀ   Úscr0   r0   r1   Útest_sparse_coder_parallel_mmapi  s    rÇ   c                  C   sp   t j d¡} d\}}|  ||¡}t|ƒ}t|jj|ƒ t|jj|ƒ t	tdd}||jj|ƒ t
|jj|ƒ d S )NrÂ   )rÃ   r>   T)Zreadonly_memmap)r#   r$   r%   r½   r   r   Ú	__class__Ú__name__r   r   r   )r+   r,   r)   rÅ   rÆ   Z check_transformer_general_memmapr0   r0   r1   Ú$test_sparse_coder_common_transformer|  s    ÿrÊ   c                  C   s6   t  g d¢g d¢g¡} t| ƒ}|j| jd ks2J ‚d S )N)r   r    r>   r   )r#   Úarrayr   r¼   r*   )ÚdrÆ   r0   r0   r1   Útest_sparse_coder_n_features_inŒ  s    rÍ   c                  C   s¦   t j d¡} t  ddgddgg¡}t  ddgdd	gg¡}t  ||¡|  d
d
¡ }| ¡ }t|||ƒ t  |j|¡}t  |j|¡}| ¡ }t|||||ƒ t	||ƒ d S )Nr   g      à?g      à¿r‘   gÍÌÌÌÌÌì?g      ð?r£   g333333ã?gš™™™™™é?r    )
r#   r$   r%   rË   r}   r(   Úcopyr
   ÚTr   )r+   r/   r.   r6   Z
newd_batchÚAÚBZnewd_onliner0   r0   r1   Útest_update_dict’  s    rÒ   r!   )r   r   r   r   r   Ú	data_typec                 C   sH   d}t j d¡}| |t¡}tt | ¡| | ¡|d}|j| ksDJ ‚d S )Né   r   r©   )	r#   r$   r%   r(   r)   r	   r6   r¾   Údtype)rÓ   r!   r,   r+   r.   r/   r0   r0   r1   Útest_sparse_encode_dtype_match©  s    ÿrÖ   c                 C   sn   d}d}t j d¡}| |t¡}tt t j¡| t j¡| d}tt t j	¡| t j	¡| d}t
|||d d S )Nç-Cëâ6?rÔ   r   r©   ©Úrtol)r#   r$   r%   r(   r)   r	   r6   r¾   r¿   Úfloat64r   )r!   rÙ   r,   r+   r.   Zcode_32Zcode_64r0   r0   r1   Ú(test_sparse_encode_numerical_consistency¹  s    ÿÿrÛ   c                 C   sP   d}t j d¡}| |t¡}t| | ¡|d}| t | ¡¡}|j	| ksLJ ‚d S )NrÔ   r   ry   )
r#   r$   r%   r(   r)   r   r¾   r8   r6   rÕ   )rÓ   rX   r,   r+   r.   r¹   r/   r0   r0   r1   Útest_sparse_coder_dtype_matchË  s    
ÿrÜ   rm   )r   rl   zdata_type, expected_typec                 C   sN   t d||dd}| t | ¡¡ |jj|ks0J ‚| t | ¡¡j|ksJJ ‚d S )Nr   r   )r,   rm   rX   r4   )r   r5   r6   r¾   r7   rÕ   r8   ©rÓ   Úexpected_typerm   rX   Údict_learnerr0   r0   r1   Ú$test_dictionary_learning_dtype_matchÝ  s    ürà   c              	   C   st   t dd||dddd}| t | ¡¡ |jj|ks6J ‚| t | ¡¡j|ksPJ ‚|jj|ks`J ‚|jj|kspJ ‚d S )Nr   r   rT   r‘   r   )r,   rˆ   rm   rX   r‰   r“   r4   )	r   r5   r6   r¾   r7   rÕ   r8   Z_AZ_BrÝ   r0   r0   r1   Ú.test_minibatch_dictionary_learning_dtype_matchü  s    ù	rá   rŠ   c                 C   sN   t j d¡}d}tt | ¡|d||d\}}}|j|ks<J ‚|j|ksJJ ‚d S )Nr   r   r   ©r,   re   r4   rŠ   )r#   r$   r%   r   r6   r¾   rÕ   )rÓ   rÞ   rŠ   r+   r,   r/   r.   Ú_r0   r0   r1   Útest_dict_learning_dtype_match!  s    ûrä   c           	      C   sì   d}d}d}t t tj¡||d| d\}}}t t tj¡||d| d\}}}tt ||¡t ||¡|d tt t 	|¡¡t t 	|¡¡|d tt |d ¡t |d ¡|d t 
|dk¡dksÈJ ‚t |dk¡t |dk¡ksèJ ‚d S )	Ngíµ ÷Æ°>rV   r    r   râ   rØ   r£   çš™™™™™©?)r   r6   r¾   r#   rÚ   r¿   r   ÚmatmulrK   ÚabsÚmeanÚcount_nonzero)	rŠ   rÙ   r,   re   ÚU_64ÚV_64rã   ÚU_32ÚV_32r0   r0   r1   Ú(test_dict_learning_numerical_consistency:  s,    
û
û&"rî   c                 C   sN   t j d¡}d}tt | ¡|dd||d\}}|j|ks<J ‚|j|ksJJ ‚d S )Nr   r   r   r   )r,   re   rˆ   r4   rŠ   )r#   r$   r%   r   r6   r¾   rÕ   )rÓ   rÞ   rŠ   r+   r,   r/   r.   r0   r0   r1   Ú%test_dict_learning_online_dtype_match^  s    ú
rï   c                 C   sø   d}d}d}t t tj¡|d|dd| dd d	\}}t t tj¡|d|dd| dd d	\}}tt ||¡t ||¡|d	 tt t 	|¡¡t t 	|¡¡|d	 tt |d
 ¡t |d
 ¡|d	 t 
|dk¡dksÔJ ‚t |dk¡t |dk¡ksôJ ‚d S )Nr×   rV   r   rU   r   r   r£   )r,   r‰   re   rˆ   r4   rŠ   r“   r”   rØ   r    rå   )r   r6   r¾   r#   rÚ   r¿   r   ræ   rK   rç   rè   ré   )rŠ   rÙ   r,   re   rê   rë   rì   rí   r0   r0   r1   Ú/test_dict_learning_online_numerical_consistencyx  s<    
÷

÷
&"rð   Ú	estimatorrV   r   )rˆ   r‰   c                 C   s   | j jS )N)rÈ   rÉ   )rF   r0   r0   r1   Ú<lambda>«  ó    rò   )Zidsc                    sH   |   t¡ tjd }|  ¡ }| jj ¡ ‰ t|‡ fdd„t|ƒD ƒƒ dS )z1Check feature names for dict learning estimators.r   c                    s   g | ]}ˆ › |› ‘qS r0   r0   )rP   rN   ©Zestimator_namer0   r1   Ú
<listcomp>¶  ró   z.test_get_feature_names_out.<locals>.<listcomp>N)	r5   r6   r*   Zget_feature_names_outrÈ   rÉ   Úlowerr   r¥   )rñ   r,   Zfeature_names_outr0   rô   r1   Útest_get_feature_names_out¤  s    

þr÷   c                 C   sT   |   tjjdttdd¡ tj d¡}| 	dd¡}t
ddddd	d
d}| |¡ d S )Nr   rT   )Z
max_nbytesr   r   r   r    rl   rS   T)r,   r4   r"   rm   r‰   r’   )ÚsetattrÚsklearnÚdecompositionZ_dict_learningr   r   r#   r$   r%   r(   r   r5   )Zmonkeypatchr+   ZX_trainrß   r0   r0   r1   Ú%test_cd_work_on_joblib_memmapped_dataº  s     
ýú
rû   )`r&   r]   Ú	functoolsr   Únumpyr#   r[   rù   Zsklearn.baser   Zsklearn.decompositionr   r   r   r   r   r	   Z$sklearn.decomposition._dict_learningr
   Zsklearn.exceptionsr   Zsklearn.utilsr   Zsklearn.utils._testingr   r   r   r   r   Zsklearn.utils.estimator_checksr   r   r   Zsklearn.utils.parallelr   r$   r%   Z
rng_globalr-   r)   r(   r6   r2   r;   r=   ra   rj   ÚmarkZparametrizerq   rs   rv   r€   r‚   r„   r†   r‡   r‹   rŒ   r   rŽ   r   r˜   r›   rœ   rŸ   r¢   r§   r«   r®   r¯   r´   rµ   r·   rº   rÁ   rÇ   rÊ   rÍ   rÒ   r¿   rÚ   rÖ   rÛ   rÜ   Zint32Zint64rà   rá   rä   rî   rï   rð   rÏ   r÷   rû   r0   r0   r0   r1   Ú<module>   s"   9þ
þ
5	



ÿ
ÿ
ÿÿ



üþ	ÿ



üþ	



üþ	
#



üþ	
+
ýù	
