
    0Ph                         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                            ddg          ej                            dd          d                         Zej                            dd          d             Zej                            dg d          d             Zej                            dd          d             Zej                            de          d             Zd Zej                            dd          ej                            dddg          ej                            de          d                                     Zej                            dd          ej                            de          d                         Zej                            de          d             Zej                            de          d              Zd! Zej                            d"g d#          ej                            dd          d$                         ZdS )%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     n/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/decomposition/tests/test_truncated_svd.pyX_sparser      sN     R
 
 C
	"b#e#FFFABF16NN"AF111IH    solverkind)densesparsec                    |dk    r| n|                                  }t          dd          }t          d|dd          }|                    |          d d d df         }|                    |          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           d S )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000E
rV"C
P
P
PC			Q		2A2	&B			1		aaa!e	$BB&&&&VE%&&F6#/""DF2A2JRaRt4444F122JQRRt444444r   n_components)
      )   r   c                     |j         d         }t          |                               |          }|j        | k    sJ |j        j         | |fk    sJ d S )Nr   )shaper   fitr<   r4   )r<   r   
n_featurestsvds       r   test_attributesrE   )   s_    "J%%))(33D,,,,!lJ%???????r   zalgorithm, n_components))r   r   )r   8   )r	   rF   c                     t          ||          }t          j        t                    5  |                    |            d d d            d S # 1 swxY w Y   d S )N)r<   r'   )r   pytestraises
ValueErrorrB   )r   r'   r<   rD   s       r   test_too_many_componentsrK   1   s     \YGGGD	z	"	"                   s   AAAfmt)arrayr   csccoolilc                 :   |j         d         }| dk    r|                                n t          |d| z                         }t          d          }|                    |          }|j         |dfk    sJ |                    |          }|j         |dfk    sJ d S )Nr   r"   to   r<   )rA   r1   getattrr   r2   	transform)rL   r   	n_samplesXfmtrD   Xtranss         r   test_sparse_formatsrZ   ?   s    q!I!$85RWXtcz5R5R5T5TDR(((D%%F<Ir?****^^D!!F<Ir?******r   algoc                     t          dd|           }|                    |          }|                    |          }t          ||                                dd           d S )N4   r   )r<   r   r'   g?r   )r,   r0   )r   r2   inverse_transformr   r1   )r[   r   rD   XtXinvs        r   test_inverse_transformra   J   sg     RbDIIID			H	%	%B!!"%%DD(**,,4dCCCCCCr   c                     | j         d         }|                     t          j                  }t	          d          }|                    |          }|j         ||j        fk    sJ d S )Nr   r*   rT   )rA   astyper   int64r   r2   r<   )r   rW   XintrD   rY   s        r   test_integersrf   T   se    q!I??28$$DQ'''D%%F<It'89999999r   r=      c                    |dk    r| n|                                  }t          ||          }|                    |          }t          d|j                   t          |j                                        d           t          j        |                                  d                                          }t          j        |d          }||z  }	t          |j        |	           d S )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
6
6
6CQDc38999 c377993??? VH,,..Q777;;==Nt!$$$I$-$>!%%    r   c                    |dk    r| n|                                  }t          d|d                              |          }t          d|d                              |          }t          |j        |j        d d         d           |j                                        |j                                        k    sJ d S )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AAF"r:::>>qAAF (("-    	(,,..1Q1U1U1W1WWWWWWWr   c           	         t           j                            d          }d\  }}|                    ||          }t	          d| |                              |          }|                    |          }t          t          j        |j	        dz            t           j
                            |d          dz  d           t          |j	        t          j        t          j        |dz  d	                    d           d S )
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
J
J
N
Nq
Q
QC MM!E
s#S())
	ue$$+    bgbfUCZa&@&@&@AA     r   c                    t           j                            d          }d}d}|                    ||          }t	          d| |          }|                    |          }|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	                  }|
                    |           t          |j        g dd           d S )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
J
J
JCa  E	RWRVE3JQ///000E	!!!Q$KKK5KKK	!!!Q$KKK5KKKuco..IGGIC(*=*=*=EJJJJJJr   c                    |                                  }||                    d          z
  }t          dd          }t          dddi|}t	          dddi|}|                    |          }|                    |          }t          ||d	
           t          |j        dd	           t          |j        |j                   d S )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333F

4
4
4V
4
4C

,
,
,V
,
,Cs##Fs##FFF....CIqt,,,,COS_55555r   zalgorithm, tol))r	   ri   )r   gư>)r   ri   c                     |dk    r| n|                                  }t          ddd||          }|                    |          }|                    |                              |          }t          ||           d S )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      s     H$$(*:*:*<*<A
qrYC  C ''**Oggajj**1--OO_5555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      sh   % %            3 3 3 3 3 3 3 3 , , , , , , E E E E E E E E& h    L>22!4555 5 65 325  )9::@ @ ;:@        EFF+ + GF+ --D D .-D: : : !455"b22;//  0/ 32 65* !455;//  0/ 65$ ;//  0/, ;//K K 0/K(6 6 6( NNN  !4556 6 65 6 6 6r   