o
    Ó\iJ  ã                   @   s¬  d Z ddlZddlZddlmZ ddlmZm	Z	 ddl
mZ ddlmZmZ ddgZejdd	d
d„ ƒZej ddg¡ej dd¡dd„ ƒƒZej dd¡dd„ ƒZej dg d¢¡dd„ ƒZej dd¡dd„ ƒZej de¡dd„ ƒZd d!„ Zej dd¡ej dd"d#g¡ej de¡d$d%„ ƒƒƒZej dd¡ej de¡d&d'„ ƒƒZej de¡d(d)„ ƒZej de¡d*d+„ ƒZd,d-„ Zej d.g d/¢¡ej dd¡d0d1„ ƒƒZdS )2zTest truncated SVD transformer.é    N)ÚPCAÚTruncatedSVD)Úcheck_random_state)Úassert_allcloseÚassert_array_lessÚarpackÚ
randomizedÚmodule)Úscopec                  C   s:   t dƒ} tjdddd| d}dt |j¡ |jd d …< |S )Né*   é<   é7   çš™™™™™É?Úcsr)ÚdensityÚformatÚrandom_stateé   )r   ÚspÚrandomÚnpÚlogÚdata)ÚrngÚX© r   ú/var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/decomposition/tests/test_truncated_svd.pyÚX_sparse   s   r   ÚsolverÚkind)ÚdenseÚsparsec           
      C   sÊ   |dkr| n|   ¡ }tddd}td|ddd}| |¡d d …d d…f }| |¡d d …d d…f }t||d	d
 t |j¡}t |j¡}	t|d d… |	d d… dd
 t|dd … |	dd … dd d S )Nr!   é   r   ©Ú	algorithmr   éd   )r$   r   Ún_oversamplesé   gü©ñÒMb`?©Úrtolé	   gü©ñÒMbP?ç{®Gáz„?©Úatol)Útoarrayr   Úfit_transformr   r   ÚabsÚcomponents_)
r   r   r   r   Úsvd_aÚsvdÚXaÚXrÚcomp_aÚcompr   r   r   Útest_solvers   s   "r8   Ún_components)é
   é   é)   r   c                 C   s>   |j d }t| ƒ |¡}|j| ksJ ‚|jj | |fksJ ‚d S )Nr   )Úshaper   Úfitr9   r1   )r9   r   Ú
n_featuresÚtsvdr   r   r   Útest_attributes)   s   
rA   zalgorithm, n_components))r   r   )r   é8   )r   rB   c                 C   sF   t ||d}t t¡ | | ¡ W d   ƒ d S 1 sw   Y  d S )N)r9   r$   )r   ÚpytestÚraisesÚ
ValueErrorr>   )r   r$   r9   r@   r   r   r   Útest_too_many_components1   s   	"ÿrF   Úfmt)Úarrayr   ÚcscÚcooÚlilc                 C   sp   |j d }| dkr| ¡ nt|d|  ƒƒ }tdd}| |¡}|j |dfks(J ‚| |¡}|j |dfks6J ‚d S )Nr   r    Útoé   ©r9   )r=   r.   Úgetattrr   r/   Ú	transform)rG   r   Ú	n_samplesÚXfmtr@   ÚXtransr   r   r   Útest_sparse_formats?   s   
 


rT   Úalgoc                 C   s:   t dd| d}| |¡}| |¡}t|| ¡ ddd d S )Né4   r   )r9   r   r$   gš™™™™™¹?r   )r)   r-   )r   r/   Úinverse_transformr   r.   )rU   r   r@   ÚXtÚXinvr   r   r   Útest_inverse_transformJ   s   

rZ   c                 C   sB   | j d }|  tj¡}tdd}| |¡}|j ||jfksJ ‚d S )Nr   r'   rN   )r=   Úastyper   Úint64r   r/   r9   )r   rQ   ÚXintr@   rS   r   r   r   Útest_integersT   s
   


r^   r:   é   c           
      C   s‚   |dkr| n|   ¡ }t||d}| |¡}td|jƒ t|j ¡ dƒ tj|   ¡ dd ¡ }tj|dd}|| }	t|j|	ƒ d S )Nr!   r#   ç        ç      ð?r   ©Úaxis)	r.   r   r/   r   Úexplained_variance_ratio_Úsumr   Úvarr   )
r   r   r9   r   r   r3   ÚX_trÚtotal_varianceÚ	variancesÚtrue_explained_variance_ratior   r   r   Útest_explained_variance\   s   
þrk   c                 C   sr   |dkr| n|   ¡ }td|dd |¡}td|dd |¡}t|j|jd d… dd |j ¡ |j ¡ ks7J ‚d S )Nr!   r:   )r$   Ún_iterr_   g{®Gázt?r(   )r.   r   r>   r   rd   re   )r   r   r   r   Úsvd_10Úsvd_20r   r   r   Ú(test_explained_variance_components_10_20t   s   ýro   c                 C   sŽ   t j |¡}d\}}| ||¡}td| |d |¡}| |¡}tt  |j	d ¡t j
 |d¡d dd t|j	t  t j|d dd	¡dd d S )
N)r%   éP   é   ©r9   r$   r   ç       @Úfror+   r(   r   rb   )r   r   ÚRandomStateÚrandnr   r>   rP   r   re   Úsingular_values_ÚlinalgÚnormÚsqrt)r   Úglobal_random_seedr   rQ   r?   r   ÚpcaÚX_pcar   r   r   Ú test_singular_values_consistencyˆ   s   
ý
ÿr~   c           	      C   s´   t j |¡}d}d}| ||¡}td| |d}| |¡}|t  t j|d dd¡ }|d d …df  d9  < |d d …d	f  d
9  < t  ||j	¡}| 
|¡ t|jg d¢dd d S )Nr%   én   é   rr   rs   r   rb   ç‰A`åÐ"	@r   çX9´Èv¾@)r   r‚   ra   g›+¡†›„=r(   )r   r   ru   rv   r   r/   rz   re   Údotr1   r>   r   rw   )	r   r{   r   rQ   r?   r   r|   r}   Ú	X_hat_pcar   r   r   Útest_singular_values_expectedŸ   s   

r…   c                 C   sŒ   |   ¡ }||jdd }tddd}tdddi|¤Ž}tdddi|¤Ž}| |¡}| |¡}t||d	d
 t|jdd	d t|j|jƒ d S )Nr   rb   r:   r   )r9   r   r$   r   Ú
svd_solverg•Ö&è.>r(   r,   r   )	r.   ÚmeanÚdictr   r   r/   r   Úmean_r1   )r   ÚX_denseÚX_cÚparamsr3   r|   ÚXt_svdÚXt_pcar   r   r   Útest_truncated_svd_eq_pca´   s   

r   zalgorithm, tol))r   r`   )r   gíµ ÷Æ°>)r   r`   c                 C   sN   |dkr| n|   ¡ }tddd||d}| |¡}| |¡ |¡}t||ƒ d S )Nr!   é   é   r   )r9   rl   r   r$   Útol)r.   r   r/   r>   rP   r   )r   r$   r’   r   r   r3   ÚX_transformed_1ÚX_transformed_2r   r   r   Útest_fit_transformÈ   s   
ÿ
r•   ) Ú__doc__Únumpyr   rC   Úscipy.sparser!   r   Úsklearn.decompositionr   r   Úsklearn.utilsr   Úsklearn.utils._testingr   r   ÚSVD_SOLVERSÚfixturer   ÚmarkÚparametrizer8   rA   rF   rT   rZ   r^   rk   ro   r~   r…   r   r•   r   r   r   r   Ú<module>   sT    


þ



	

ÿ