§
    ¨éUgë2  ã            
       ó
  — d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZmZmZ d dlmZ d$d„Zd„ Zd	„ Zed
„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zej                             dd¬¦  «        d„ ¦   «         Zd„ Zd„ Zej                             de	eg¦  «        ej                             dddg¦  «        d„ ¦   «         ¦   «         Z ej                             de	ef¦  «        ej                             dd¦  «        ej                             dej!        ej!        fej"        ej"        fej#        ej"        fej$        ej"        ff¦  «        d„ ¦   «         ¦   «         ¦   «         Z%ej                             de	ef¦  «        ej                             dd¦  «        d„ ¦   «         ¦   «         Z&ej                             de	eg¦  «        d„ ¦   «         Z'd„ Z(d „ Z)d!„ Z*d"„ Z+ej                             de	eg¦  «        d#„ ¦   «         Z,dS )%é    N)Úassert_array_equal)ÚPCAÚMiniBatchSparsePCAÚ	SparsePCA)Úcheck_random_state)Úassert_allcloseÚassert_array_almost_equalÚ!if_safe_multiprocessing_with_blas)Úsvd_flipc                 ó¢  — |d         |d         z  }t          |¦  «        }|                     || ¦  «        }|                     | |¦  «        }g d¢}g d¢}	t          | ¦  «        D ] }
t          j        |¦  «        }||
         d         |	|
         z
  ||
         d         |	|
         z   }}||
         d         |	|
         z
  ||
         d         |	|
         z   }}d|||…         d d …||…f<   |                     ¦   «         ||
d d …f<   Œ¡t          j        ||¦  «        }|d|                     |j        d         |j        d         ¦  «        z  z  }|||fS )Nr   é   ))é   r   )é   é   )é   r   )r   é   r   g      ð?gš™™™™™¹?)r   ÚrandnÚrangeÚnpÚzerosÚravelÚdotÚshape)Ún_componentsÚ	n_samplesÚ
image_sizeÚrandom_stateÚ
n_featuresÚrngÚUÚVÚcentersÚszÚkÚimgÚxminÚxmaxÚyminÚymaxÚYs                    új/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/decomposition/tests/test_sparse_pca.pyÚgenerate_toy_datar,      sU  € Ø˜A” ¨A¤Ñ.€Jå
˜\Ñ
*Ô
*€CØ�	Š	�)˜\Ñ*Ô*€AØ�	Š	�, 
Ñ+Ô+€Aà&Ð&Ð&€GØ	ˆˆ€BÝ�<Ñ Ô ð ð ˆÝŒh�zÑ"Ô"ˆØ˜Q”Z ”] R¨¤UÑ*¨G°A¬J°q¬M¸B¸q¼EÑ,AˆdˆØ˜Q”Z ”] R¨¤UÑ*¨G°A¬J°q¬M¸B¸q¼EÑ,AˆdˆØ'*ˆˆD�ˆIŒ�q�q�q˜$˜t˜)�|Ñ$Ø—)’)‘+”+ˆˆ!ˆQˆQˆQˆ$‰ˆõ 	Œˆq�!‰Œ€AØˆˆs�yŠy˜œ œ Q¤W¨Q¤ZÑ0Ô0Ñ	0Ñ0€AØˆa�ˆ7€Nó    c                  ó„  — t           j                             d¦  «        } |                      dd¦  «        }t	          d| ¬¦  «        }|                     |¦  «        }|j        j        dk    sJ ‚|j        dk    sJ ‚t	          d| ¬¦  «        }|                     |¦  «        }|j        j        d	k    sJ ‚|j        d
k    sJ ‚d S )Nr   é   é
   r   ©r   r   ©r   r0   ©r/   r   é   ©r4   r0   ©r/   r4   )r   ÚrandomÚRandomStater   r   Úfit_transformÚcomponents_r   )r   ÚXÚspcar    s       r+   Útest_correct_shapesr=   .   sÎ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�"�bÑÔ€AÝ !°#Ð6Ñ6Ô6€DØ×Ò˜1ÑÔ€AØÔÔ! WÒ,Ð,Ð,Ð,ØŒ7�gÒÐÐÐå "°3Ð7Ñ7Ô7€DØ×Ò˜1ÑÔ€AØÔÔ! XÒ-Ð-Ð-Ð-ØŒ7�hÒÐÐÐÐÐr-   c                  óJ  — d} t           j                             d¦  «        }t          ddd|¬¦  «        \  }}}t	          dd| d¬¦  «        }|                     |¦  «         t	          dd	d| ¬
¦  «        }|                     |¦  «         t          |j        |j        ¦  «         d S )Nr   r   r   r0   ©r   r   ©r   Úlars©r   ÚmethodÚalphar   Úcd)r   rC   r   rD   )r   r7   r8   r,   r   Úfitr	   r:   )rD   r   r*   Ú_Ú	spca_larsÚ
spca_lassos         r+   Útest_fit_transformrJ   <   s§   € Ø€EÝ
Œ)×
Ò
 Ñ
"Ô
"€CÝ  2 v¸CÐ@Ñ@Ô@�G€A€qˆ!Ý q°¸uÐSTÐUÑUÔU€IØ‡M‚M�!ÑÔÐõ ¨°$ÀQÈeÐTÑTÔT€JØ‡N‚N�1ÑÔÐÝ˜jÔ4°iÔ6KÑLÔLÐLÐLÐLr-   c                  óÆ  — d} t           j                             d¦  «        }t          ddd|¬¦  «        \  }}}t	          dd| d¬¦  «        }|                     |¦  «         |                     |¦  «        }t	          dd	d| d¬
¦  «                             |¦  «        }|                     |¦  «        }t          j        |j        dk    ¦  «        rJ ‚t          ||¦  «         d S )Nr   r   r   r0   r?   r@   rA   rB   r   )r   Ún_jobsrC   rD   r   )
r   r7   r8   r,   r   rF   Ú	transformÚallr:   r	   )rD   r   r*   rG   rH   ÚU1r<   ÚU2s           r+   Útest_fit_transform_parallelrQ   I   sè   € à€EÝ
Œ)×
Ò
 Ñ
"Ô
"€CÝ  2 v¸CÐ@Ñ@Ô@�G€A€qˆ!Ý q°¸uÐSTÐUÑUÔU€IØ‡M‚M�!ÑÔÐØ	×	Ò	˜QÑ	Ô	€BåØ˜q¨°uÈ1ðñ ô ç	‚cˆ!�f„fð 	ð 
�Š˜Ñ	Ô	€BÝŒv�iÔ+¨qÒ0Ñ1Ô1Ð1Ð1Ð1Ý˜b "Ñ%Ô%Ð%Ð%Ð%r-   c                  ó  — t           j                             d¦  «        } t          ddd| ¬¦  «        \  }}}d|d d …df<   t	          d¬¦  «        }t          j        t          j        |                     |¦  «        ¦  «        ¦  «        rJ ‚d S )Nr   r   r0   r?   r@   r   ©r   )r   r7   r8   r,   r   ÚanyÚisnanr9   )r   r*   rG   Ú	estimators       r+   Útest_transform_nanrW   Z   sŠ   € õ Œ)×
Ò
 Ñ
"Ô
"€CÝ  2 v¸CÐ@Ñ@Ô@�G€A€qˆ!Ø€A€a€a€aˆ€d�GÝ qÐ)Ñ)Ô)€IÝŒv•b”h˜y×6Ò6°qÑ9Ô9Ñ:Ô:Ñ;Ô;Ð;Ð;Ð;Ð;Ð;r-   c                  óT  — t           j                             d¦  «        } t          ddd| ¬¦  «        \  }}}t	          dd| ¬¦  «        }|                     |¦  «        }t	          dd| ¬¦  «        }|                     |¦  «                             |¦  «        }t          ||¦  «         d S )	Nr   r   éA   r?   r@   rA   )r   rC   r   rE   )	r   r7   r8   r,   r   r9   rF   rM   r	   )r   r*   rG   rH   rO   rI   rP   s          r+   Útest_fit_transform_tallrZ   d   s£   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CÝ  2 v¸CÐ@Ñ@Ô@�G€A€qˆ!Ý q°ÀcÐJÑJÔJ€IØ	×	 Ò	  Ñ	#Ô	#€BÝ¨°$ÀSÐIÑIÔI€JØ	�Š˜Ñ	Ô	×	$Ò	$ QÑ	'Ô	'€BÝ˜b "Ñ%Ô%Ð%Ð%Ð%r-   c                  óÌ  — t           j                             d¦  «        } |                      dd¦  «        }|                      dd¦  «        }t	          d||d| ¬¦  «        }|                     |                      dd¦  «        ¦  «         |t           j                             |dd¬¦  «        z  }t          |j	        d ¬	¦  «        d         j	        }t          |j        |¦  «         d S )
Nr   é   r   é   )r   ÚU_initÚV_initÚmax_iterr   r   T)ÚaxisÚkeepdims)ÚuÚv)r   r7   r8   r   r   rF   ÚlinalgÚnormr   ÚTr   r:   )r   r^   r_   ÚmodelÚexpected_componentss        r+   Útest_initializationrj   n   sÐ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ�YŠY�q˜!‰_Œ_€FØ�YŠY�q˜!‰_Œ_€FÝØ˜v¨f¸qÈsðñ ô €Eð 
‡I‚Iˆc�iŠi˜˜1‰oŒoÑÔÐà ¥2¤9§>¢>°&¸qÈ4 >Ñ#PÔ#PÑPÐÝ"Ð%8Ô%:¸dÐCÑCÔCÀAÔFÔHÐÝ�EÔ%Ð':Ñ;Ô;Ð;Ð;Ð;r-   c                  óˆ  — t           j                             d¦  «        } |                      dd¦  «        }t	          dd| ¬¦  «        }|                     |¦  «        }|j        j        dk    sJ ‚|j        dk    sJ ‚t	          d	d| ¬¦  «        }|                     |¦  «        }|j        j        d
k    sJ ‚|j        dk    sJ ‚d S )Nr   r/   r0   r   r   )r   r`   r   r2   r3   r4   r5   r6   )r   r7   r8   r   r   r9   r:   r   )r   r;   Úpcar    s       r+   Útest_mini_batch_correct_shapesrm   |   sÐ   € Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ�	Š	�"�bÑÔ€AÝ
¨!°aÀcÐ
JÑ
JÔ
J€CØ×Ò˜!ÑÔ€AØŒ?Ô  GÒ+Ð+Ð+Ð+ØŒ7�gÒÐÐÐå
¨"°qÀsÐ
KÑ
KÔ
K€CØ×Ò˜!ÑÔ€AØŒ?Ô  HÒ,Ð,Ð,Ð,ØŒ7�hÒÐÐÐÐÐr-   Tz"skipping mini_batch_fit_transform.)Úreasonc                  óJ  — d} t           j                             d¦  «        }t          ddd|¬¦  «        \  }}}t	          dd| ¬¦  «                             |¦  «        }|                     |¦  «        }t          j        dk    rvdd l	}|j
        j        }d |j
        _        	 t	          dd	| d¬
¦  «        }|                     |¦  «                             |¦  «        }	||j
        _        nL# ||j
        _        w xY wt	          dd	| d¬
¦  «        }|                     |¦  «                             |¦  «        }	t          j        |j        dk    ¦  «        rJ ‚t          ||	¦  «         t	          dd| d¬¦  «                             |¦  «        }
t          |
j        |j        ¦  «         d S )Nr   r   r   r0   r?   r@   )r   r   rD   Úwin32r   )r   rL   rD   r   rE   rB   )r   r7   r8   r,   r   rF   rM   ÚsysÚplatformÚjoblibÚparallelÚmultiprocessingrN   r:   r	   )rD   r   r*   rG   rH   rO   rs   Ú_mpr<   rP   rI   s              r+   Útest_mini_batch_fit_transformrw   ‹   s§  € à€EÝ
Œ)×
Ò
 Ñ
"Ô
"€CÝ  2 v¸CÐ@Ñ@Ô@�G€A€qˆ!Ý"°ÀÈÐOÑOÔO×SÒSÐTUÑVÔV€IØ	×	Ò	˜QÑ	Ô	€Bå
„|�wÒÐØˆˆˆàŒoÔ-ˆØ*.ˆŒÔ'ð	2Ý%Ø q°ÀAðñ ô ˆDð —’˜!‘”×&Ò& qÑ)Ô)ˆBà.1ˆFŒOÔ+Ð+ø¨cˆFŒOÔ+Ð1Ð1Ð1Ð1å!¨q¸À%ÐVWÐXÑXÔXˆØ�XŠX�a‰[Œ[×"Ò" 1Ñ%Ô%ˆÝŒv�iÔ+¨qÒ0Ñ1Ô1Ð1Ð1Ð1Ý˜b "Ñ%Ô%Ð%å#Ø˜t¨5¸qðñ ô ç	‚cˆ!�f„fð õ ˜jÔ4°iÔ6KÑLÔLÐLÐLÐLs   Â ;C( Ã(C6c                  ó8  — d} t           j                             d¦  «        }t          ddd|¬¦  «        \  }}}t	          dd| |¬¦  «        }|                     |¦  «        }|                     |d d	…         ¦  «        }t          |d         |d         ¦  «         d S )
Nr   r   r   éè  r?   r@   rA   rB   r0   )r   r7   r8   r,   r   r9   rM   r   )rD   r   r*   rG   rH   Úresults_trainÚresults_tests          r+   Útest_scaling_fit_transformr|   «   sœ   € Ø€EÝ
Œ)×
Ò
 Ñ
"Ô
"€CÝ  4¨¸cÐBÑBÔB�G€A€qˆ!Ý q°¸uÐSVÐWÑWÔW€IØ×+Ò+¨AÑ.Ô.€MØ×&Ò& q¨¨"¨¤vÑ.Ô.€LÝ�M !Ô$ l°1¤oÑ6Ô6Ð6Ð6Ð6r-   c                  óà  — t           j                             d¦  «        } t          ddd| ¬¦  «        \  }}}t          ddd| ¬¦  «        \  }}}t	          ddd¬¦  «        }t          d¬	¦  «        }|                     |¦  «         |                     |¦  «         |                     |¦  «        }|                     |¦  «        }t          t          j	        |j
                             |j
        j        ¦  «        ¦  «        t          j        d¦  «        d
¬¦  «         |t          j        |dd d …f         ¦  «        z  }|t          j        |dd d …f         ¦  «        z  }t          ||¦  «         d S )Nr   r   ry   r?   r@   r0   r   )rD   Úridge_alphar   rS   gñhãˆµøä>)Úatol)r   r7   r8   r,   r   r   rF   rM   r   Úabsr:   r   rg   ÚeyeÚsign)r   r*   rG   ÚZr<   rl   Úresults_test_pcaÚresults_test_spcas           r+   Útest_pca_vs_spcar†   µ   s[  € Ý
Œ)×
Ò
 Ñ
"Ô
"€CÝ  4¨¸cÐBÑBÔB�G€A€qˆ!Ý  2 v¸CÐ@Ñ@Ô@�G€A€qˆ!Ý˜1¨!¸!Ð<Ñ<Ô<€DÝ
˜1Ð
Ñ
Ô
€CØ‡G‚GˆA�J„J€JØ‡H‚HˆQ�K„K€KØ—}’} QÑ'Ô'ÐØŸš qÑ)Ô)ÐÝÝ
ŒˆtÔ×#Ò# C¤OÔ$5Ñ6Ô6Ñ7Ô7½¼À¹¼Èðñ ô ð ð �œÐ 0°°A°A°A°Ô 6Ñ7Ô7Ñ7ÐØ�œÐ!2°1°a°a°a°4Ô!8Ñ9Ô9Ñ9ÐÝÐ$Ð&7Ñ8Ô8Ð8Ð8Ð8r-   ÚSPCAr   r   c                 óô   — t           j                             d¦  «        }d\  }}|                     ||¦  «        } | |¬¦  «                             |¦  «        }|�|j        |k    sJ ‚d S |j        |k    sJ ‚d S )Nr   ©r/   r0   rS   )r   r7   r8   r   rF   Ún_components_)r‡   r   r   r   r   r;   rh   s          r+   Útest_spca_n_components_r‹   Ç   s�   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ"Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€AàˆD˜lÐ+Ñ+Ô+×/Ò/°Ñ2Ô2€EàÐØÔ" lÒ2Ð2Ð2Ð2Ð2Ð2àÔ" jÒ0Ð0Ð0Ð0Ð0Ð0r-   rC   )rA   rE   zdata_type, expected_typec                 ó$  — d\  }}}t           j                             d¦  «        }|                     ||¦  «                             |¦  «        } | ||¬¦  «        }	|	                     |¦  «        }
|
j        |k    sJ ‚|	j        j        |k    sJ ‚d S )N©r/   r0   r   r   )r   rC   )r   r7   r8   r   Úastyper9   Údtyper:   )r‡   rC   Ú	data_typeÚexpected_typer   r   r   r   Úinput_arrayrh   Útransformeds              r+   Útest_sparse_pca_dtype_matchr”   Ö   sž   € ð +4Ñ'€Iˆz˜<Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ—)’)˜I zÑ2Ô2×9Ò9¸)ÑDÔD€KØˆD˜l°6Ð:Ñ:Ô:€EØ×%Ò% kÑ2Ô2€KàÔ Ò-Ð-Ð-Ð-ØÔÔ" mÒ3Ð3Ð3Ð3Ð3Ð3r-   c                 óä  — d}d}d\  }}}t           j                             d¦  «        }|                     ||¦  «        } | |||d¬¦  «        }	|	                     |                     t           j        ¦  «        ¦  «        }
 | |||d¬¦  «        }|                     |                     t           j        ¦  «        ¦  «        }t          ||
|¬¦  «         t          |j	        |	j	        |¬¦  «         d S )Nçü©ñÒMbP?r   r�   r   )r   rD   rC   r   )Úrtol)
r   r7   r8   r   r9   rŽ   Úfloat32Úfloat64r   r:   )r‡   rC   r—   rD   r   r   r   r   r’   Úmodel_32Útransformed_32Úmodel_64Útransformed_64s                r+   Ú%test_sparse_pca_numerical_consistencyrž   í   s   € ð €DØ€EØ*3Ñ'€Iˆz˜<Ý
Œ)×
Ò
 Ñ
"Ô
"€CØ—)’)˜I zÑ2Ô2€KàˆtØ!¨°vÈAðñ ô €Hð ×+Ò+¨K×,>Ò,>½r¼zÑ,JÔ,JÑKÔK€NàˆtØ!¨°vÈAðñ ô €Hð ×+Ò+¨K×,>Ò,>½r¼zÑ,JÔ,JÑKÔK€Nå�N N¸Ð>Ñ>Ô>Ð>Ý�HÔ(¨(Ô*>ÀTÐJÑJÔJÐJÐJÐJr-   c                 óf  ‡— t           j                             d¦  «        }d\  }}|                     ||¦  «        } | d¬¦  «                             |¦  «        }|                     ¦   «         }| j                             ¦   «         Št          ˆfd„t          d¦  «        D ¦   «         |¦  «         dS )z'Check feature names out for *SparsePCA.r   r‰   r]   rS   c                 ó   •— g | ]}‰› |› �‘Œ	S © r¡   )Ú.0ÚiÚestimator_names     €r+   ú
<listcomp>z/test_spca_feature_names_out.<locals>.<listcomp>  s$   ø€ ÐAÐAÐA°1˜>Ð.¨1Ð.Ð.ÐAÐAÐAr-   N)
r   r7   r8   r   rF   Úget_feature_names_outÚ__name__Úlowerr   r   )r‡   r   r   r   r;   rh   Únamesr¤   s          @r+   Útest_spca_feature_names_outrª     s¬   ø€ õ Œ)×
Ò
 Ñ
"Ô
"€CØ"Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€AàˆD˜aÐ Ñ Ô ×$Ò$ QÑ'Ô'€EØ×'Ò'Ñ)Ô)€Eà”]×(Ò(Ñ*Ô*€NÝÐAÐAÐAÐA½¸a¹¼ÐAÑAÔAÀ5ÑIÔIÐIÐIÐIr-   c                  ó,  — t           j                             d¦  «        } d\  }}|                      ||¦  «        }d}t	          j        t          |¬¦  «        5  t          d¬¦  «                             |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zECheck that we raise a warning for the deprecation of `max_iter=None`.r   r‰   z@`max_iter=None` is deprecated in version 1.4 and will be removed)ÚmatchN)r`   )	r   r7   r8   r   ÚpytestÚwarnsÚFutureWarningr   rF   )r   r   r   r;   Úwarn_msgs        r+   Ú#test_spca_max_iter_None_deprecationr±     sÑ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ"Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€AàQ€HÝ	Œ•m¨8Ð	4Ñ	4Ô	4ð 1ð 1Ý DÐ)Ñ)Ô)×-Ò-¨aÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1ð 1ð 1s   Á$B	Â	BÂBc                 óî  — t           j                             | ¦  «        }d\  }}|                     ||¦  «        }t	          dd| ¬¦  «                             |¦  «        }t	          dd| ¬¦  «                             |¦  «        }|j        |j        k     sJ ‚t	          ddd| ¬¦  «                             |¦  «        }t	          ddd| ¬¦  «                             |¦  «        }|j        |j        k     sJ ‚d	S )
z@Check that `tol` and `max_no_improvement` act as early stopping.)é2   r0   éd   g      à?)r`   Útolr   r–   g�íµ ÷Æ°>r   )r`   rµ   Úmax_no_improvementr   N)r   r7   r8   r   r   rF   Ún_iter_)Úglobal_random_seedr   r   r   r;   Úmodel_early_stoppedÚmodel_not_early_stoppeds          r+   Útest_spca_early_stoppingr»     s#  € å
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ"Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€Aõ -Ø˜#Ð,>ðñ ô ç	‚cˆ!�f„fð õ 1Ø˜$Ð-?ðñ ô ç	‚cˆ!�f„fð ð Ô&Ð)@Ô)HÒHÐHÐHÐHõ -Ø˜$°1ÐCUðñ ô ç	‚cˆ!�f„fð õ 1Ø˜$°3ÐEWðñ ô ç	‚cˆ!�f„fð ð Ô&Ð)@Ô)HÒHÐHÐHÐHÐHÐHr-   c                 ó@  — t           j                             | ¦  «        }|                     dd¦  «        }d}t	          |dd¬¦  «                             |¦  «        }t          |dddd¬¦  «                             |¦  «        }t          |j        |j        ¦  «         d	S )
z¤Check the equivalence of the components found by PCA and SparsePCA.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/23932
    r³   r]   r   Ú
randomizedr   )r   Ú
svd_solverr   rA   )r   rC   r~   rD   r   N)	r   r7   r8   r   r   rF   r   r   r:   )r¸   r   r;   r   rl   r<   s         r+   Ú$test_equivalence_components_pca_spcar¿   9  s±   € õ Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�	Š	�"�aÑÔ€Aà€LÝ
Ø!ØØðñ ô ÷ 
‚cˆ!�f„fð	 õ
 Ø!ØØØØðñ ô ÷ 
‚cˆ!�f„fð 	õ �C”O TÔ%5Ñ6Ô6Ð6Ð6Ð6r-   c                  ó†  — t           j                             d¦  «        } d\  }}|                      ||¦  «        }d}t	          |ddd¬¦  «        }t          |d¬¦  «        }|                     |¦  «        }|                     |¦  «        }t          |                     |¦  «        |                     |¦  «        ¦  «         dS )zDCheck that `inverse_transform` in `SparsePCA` and `PCA` are similar.r   ©r0   r\   r   çê-�™—q=©r   rD   r~   r   r1   N)	r   r7   r8   r   r   r   r9   r   Úinverse_transform)	r   r   r   r;   r   r<   rl   ÚX_trans_spcaÚX_trans_pcas	            r+   Ú!test_sparse_pca_inverse_transformrÇ   S  sÎ   € å
Œ)×
Ò
 Ñ
"Ô
"€CØ!Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€Aà€LÝØ!¨¸EÐPQðñ ô €Dõ ˜<°aÐ
8Ñ
8Ô
8€CØ×%Ò% aÑ(Ô(€LØ×#Ò# AÑ&Ô&€KÝØ×Ò˜|Ñ,Ô,¨c×.CÒ.CÀKÑ.PÔ.Pñô ð ð ð r-   c                 ó  — t           j                             d¦  «        }d\  }}|                     ||¦  «        }|} | |ddd¬¦  «        }|                     |¦  «        }t          |                     |¦  «        |¦  «         dS )z^Check the `transform` and `inverse_transform` round trip with no loss of
    information.
    r   rÁ   rÂ   rÃ   N)r   r7   r8   r   r9   r   rÄ   )r‡   r   r   r   r;   r   r<   rÅ   s           r+   Ú+test_transform_inverse_transform_round_triprÉ   e  s”   € õ
 Œ)×
Ò
 Ñ
"Ô
"€CØ!Ñ€IˆzØ�	Š	�)˜ZÑ(Ô(€Aà€LØˆ4Ø!¨¸EÐPQðñ ô €Dð ×%Ò% aÑ(Ô(€LÝ�D×*Ò*¨<Ñ8Ô8¸!Ñ<Ô<Ð<Ð<Ð<r-   )N)-rq   Únumpyr   r­   Únumpy.testingr   Úsklearn.decompositionr   r   r   Úsklearn.utilsr   Úsklearn.utils._testingr   r	   r
   Úsklearn.utils.extmathr   r,   r=   rJ   rQ   rW   rZ   rj   rm   ÚmarkÚskipifrw   r|   r†   Úparametrizer‹   r˜   r™   Úint32Úint64r”   rž   rª   r±   r»   r¿   rÇ   rÉ   r¡   r-   r+   ú<module>rÕ      s˜  ðð €
€
€
à Ð Ð Ð Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð
 +Ð *Ð *Ð *Ð *Ð *ðð ð ð ð4ð ð ð
Mð 
Mð 
Mð #ð&ð &ñ #Ô"ð&ð <ð <ð <ð&ð &ð &ð<ð <ð <ðð ð ð „×Ò�DÐ!EÐÑFÔFðMð Mñ GÔFðMð>7ð 7ð 7ð9ð 9ð 9ð$ „×Ò˜ )Ð-?Ð!@ÑAÔAØ„×Ò˜¨$°¨Ñ3Ô3ð
1ð 
1ñ 4Ô3ñ BÔAð
1ð „×Ò˜ )Ð-?Ð!@ÑAÔAØ„×Ò˜ >Ñ2Ô2Ø„×ÒØà	Œ�R”ZÐ Ø	Œ�R”ZÐ Ø	Œ�2”:ÐØ	Œ�2”:Ðð	ñô ð	4ð 	4ñô ñ 3Ô2ñ BÔAð	4ð „×Ò˜ )Ð-?Ð!@ÑAÔAØ„×Ò˜ >Ñ2Ô2ðKð Kñ 3Ô2ñ BÔAðKð, „×Ò˜ )Ð-?Ð!@ÑAÔAð
Jð 
Jñ BÔAð
Jð1ð 1ð 1ðIð Ið Ið47ð 7ð 7ð4ð ð ð$ „×Ò˜ )Ð-?Ð!@ÑAÔAð=ð =ñ BÔAð=ð =ð =r-   