
    {Kg                         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
        Zej$                  j'                  ddg      ej$                  j'                  dd      d               Zej$                  j'                  dd      d        Zej$                  j'                  dg d      d        Zej$                  j'                  dd      d        Zej$                  j'                  de      d        Zd Zej$                  j'                  dd      ej$                  j'                  dddg      ej$                  j'                  de      d                      Zej$                  j'                  dd      ej$                  j'                  de      d               Zej$                  j'                  de      d        Zej$                  j'                  de      d         Zd! Zej$                  j'                  d"g d#      ej$                  j'                  dd      d$               Zy)%zTest truncated SVD transformer.    N)PCATruncatedSVD)check_random_state)assert_allcloseassert_array_lessarpack
randomizedmodule)scopec                      t        d      } t        j                  dddd|       }dt        j                  |j
                        z   |j
                  d d  |S )N*   <   7   皙?csr)densityformatrandom_state   )r   sprandomnplogdata)rngXs     r/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/decomposition/tests/test_truncated_svd.pyX_sparser      sG     R
 C
		"b#e#FABFF166N"AFF1IH    solverkind)densesparsec                    |dk(  r| n| j                         }t        dd      }t        d|dd      }|j                  |      d d d df   }|j                  |      d d d df   }t        ||d	
       t	        j
                  |j                        }t	        j
                  |j                        }	t        |d d |	d d d
       t        |dd  |	dd  d       y )Nr#      r   	algorithmr   d   )r'   r   n_oversamples   gMb`?rtol	   gMbP?{Gz?atol)toarrayr   fit_transformr   r   abscomponents_)
r   r    r!   r   svd_asvdXaXrcomp_acomps
             r   test_solversr;      s     H$(*:*:*<Ax0E
rV"C
PC			Q	2A2	&B			1	a!e	$BB&VVE%%&F66#//"DF2AJRat4F12JQRt4r   n_components)
      )   r   c                     |j                   d   }t        |       j                  |      }|j                  | k(  sJ |j                  j                   | |fk(  sJ y )Nr   )shaper   fitr<   r4   )r<   r   
n_featurestsvds       r   test_attributesrE   )   sX    "J%))(3D,,,!!lJ%????r   zalgorithm, n_components))r   r   )r   8   )r	   rF   c                     t        ||      }t        j                  t              5  |j	                  |        d d d        y # 1 sw Y   y xY w)N)r<   r'   )r   pytestraises
ValueErrorrB   )r   r'   r<   rD   s       r   test_too_many_componentsrK   1   s4     \YGD	z	" 
#	"	"s   AAfmt)arrayr   csccoolilc                    |j                   d   }| dk(  r|j                         n t        |d| z                }t        d      }|j	                  |      }|j                   |dfk(  sJ |j                  |      }|j                   |dfk(  sJ y )Nr   r"   to   r<   )rA   r1   getattrr   r2   	transform)rL   r   	n_samplesXfmtrD   Xtranss         r   test_sparse_formatsrZ   ?   s    q!I!$85RWXtcz5R5TDR(D%F<<Ir?***^^D!F<<Ir?***r   algoc                     t        dd|       }|j                  |      }|j                  |      }t        ||j	                         dd       y )N4   r   )r<   r   r'   g?r   )r,   r0   )r   r2   inverse_transformr   r1   )r[   r   rD   XtXinvs        r   test_inverse_transformra   J   sI     RbDID			H	%B!!"%DD(**,4dCr   c                     | j                   d   }| j                  t        j                        }t	        d      }|j                  |      }|j                   ||j                  fk(  sJ y )Nr   r*   rT   )rA   astyper   int64r   r2   r<   )r   rW   XintrD   rY   s        r   test_integersrf   T   sY    q!I??288$DQ'D%F<<It'8'89999r   r=      c                    |dk(  r| n| j                         }t        ||      }|j                  |      }t        d|j                         t        |j                  j                         d       t        j                  | j                         d      j                         }t        j                  |d      }||z  }	t        |j                  |	       y )Nr#   r&                 ?r   axis)	r1   r   r2   r   explained_variance_ratio_sumr   varr   )
r   r!   r<   r    r   r6   X_trtotal_variance	variancestrue_explained_variance_ratios
             r   test_explained_variancert   \   s     H$(*:*:*<A
|v
6CQDc3889 c337793? VVH,,.Q7;;=Nt!$I$-$>!%%%r   c                 ^   |dk(  r| n| j                         }t        d|d      j                  |      }t        d|d      j                  |      }t        |j                  |j                  d d d       |j                  j                         |j                  j                         kD  sJ y )Nr#   r=   )r'   n_iterrg   g{Gzt?r+   )r1   r   rB   r   rm   rn   )r   r!   r    r   svd_10svd_20s         r   (test_explained_variance_components_10_20ry   t   s     H$(*:*:*<A"r:>>qAF"r:>>qAF (((("- 	((,,.1Q1Q1U1U1WWWr   c           	         t         j                  j                  d      }d\  }}|j                  ||      }t	        d| |      j                  |      }|j                  |      }t        t        j                  |j                  dz        t         j                  j                  |d      dz  d       t        |j                  t        j                  t        j                  |dz  d	            d       y )
Nr   )r(   P      r<   r'   r          @fror.   r+   rk   )r   r   RandomStaterandnr   rB   rV   r   rn   singular_values_linalgnormsqrt)r    r   rW   rC   r   pcaX_pcas          r    test_singular_values_consistencyr      s     ))


"C#Iz		)Z(A
Ac
J
N
Nq
QC MM!E
s##S()
		ue$+ bggbffUCZa&@Ar   c                    t         j                  j                  d      }d}d}|j                  ||      }t	        d| |      }|j                  |      }|t        j                  t        j                  |dz  d            z  }|d d dfxx   dz  cc<   |d d d	fxx   d
z  cc<   t        j                  ||j                        }|j                  |       t        |j                  g dd       y )Nr   r(   n      r}   r~   rk   A`"	@r   X9v@)r   r   rj   g+=r+   )r   r   r   r   r   r2   r   rn   dotr4   rB   r   r   )r    r   rW   rC   r   r   r   	X_hat_pcas           r   test_singular_values_expectedr      s     ))


"CIJ		)Z(A
Ac
JCa E	RWWRVVE3JQ/00E	!Q$K5K	!Q$K5Kucoo.IGGIC((*=EJr   c                 l   | j                         }||j                  d      z
  }t        dd      }t        dddi|}t	        dddi|}|j                  |      }|j                  |      }t        ||d	
       t        |j                  dd	       t        |j                  |j                         y )Nr   rk   r=   r   )r<   r   r'   r   
svd_solverg&.>r+   r/    )	r1   meandictr   r   r2   r   mean_r4   )r   X_denseX_cparamsr6   r   Xt_svdXt_pcas           r   test_truncated_svd_eq_pcar      s      G
GLLaL(
(Cr3F

4
4V
4C

,
,V
,Cs#Fs#FFF.CIIqt,COOS__5r   zalgorithm, tol))r	   ri   )r   gư>)r   ri   c                     |dk(  r| n| j                         }t        ddd||      }|j                  |      }|j                  |      j	                  |      }t        ||       y )Nr#         r   )r<   rv   r   r'   tol)r1   r   r2   rB   rV   r   )r   r'   r   r!   r   r6   X_transformed_1X_transformed_2s           r   test_fit_transformr      sd     H$(*:*:*<A
qrYCC ''*Oggaj**1-OO_5r   ) __doc__numpyr   rH   scipy.sparser#   r   sklearn.decompositionr   r   sklearn.utilsr   sklearn.utils._testingr   r   SVD_SOLVERSfixturer   markparametrizer;   rE   rK   rZ   ra   rf   rt   ry   r   r   r   r   r   r   r   <module>r      s[   %    3 , E& h   L>2!455 6 35  )9:@ ;@   EF+ G+ -D .D: !45"b2;/ 0 3 6* !45;/ 0 6$ ;/ 0, ;/K 0K(6( N !456 66r   