
    Q3jx                        d Z ddlZddlZddlmZmZ ddlmZ ddl	m
Z
mZ ddl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)_sparse_random_arrayarpack
randomizedmodule)scopec                      t        d      } t        ddd|       }dt        j                  |j                        z   |j                  d d  |S )N*   )<   7   皙?csr)densityformatrng   )r   r   nplogdata)r   Xs     [/DATA/.local/lib/python3.12/site-packages/sklearn/decomposition/tests/test_truncated_svd.pyX_sparser      sA     R
 CXs5cJA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%   random_state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;   r3   )r;   r   
n_featurestsvds       r   test_attributesrD   )   sX    "J%))(3D,,,!!lJ%????r   zalgorithm, n_components))r	   r   )r	   8   )r
   rE   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
ValueErrorrA   )r   r%   r;   rC   s       r   test_too_many_componentsrJ   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;   )r@   r0   getattrr   r1   	transform)rK   r   	n_samplesXfmtrC   Xtranss         r   test_sparse_formatsrY   ?   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+   r/   )r   r1   inverse_transformr   r0   )rZ   r   rC   XtXinvs        r   test_inverse_transformr`   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)   rS   )r@   astyper   int64r   r1   r;   )r   rV   XintrC   rX   s        r   test_integersre   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)	r0   r   r1   r   explained_variance_ratio_sumr   varr   )
r   r   r;   r   r   r5   X_trtotal_variance	variancestrue_explained_variance_ratios
             r   test_explained_variancers   \   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_iterrf   g{Gzt?r*   )r0   r   rA   r   rl   rm   )r   r   r   r   svd_10svd_20s         r   (test_explained_variance_components_10_20rx   t   s     H$(*:*:*<A"r:>>qAF"r:>>qAF (((("- 	((,,.1Q1Q1U1U1WWWr   c           	         t         j                  j                  |      }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 )
N)r&   P      r;   r%   r'          @fror-   r*   r   rj   )r   randomRandomStaterandnr   rA   rU   r   rm   singular_values_linalgnormsqrt)r   global_random_seedr   rV   rB   r   pcaX_pcas           r    test_singular_values_consistencyr      s     ))

 2
3C#Iz		)Z(A
Ac
J
N
Nq
QC MM!E
s##S()
		ue$+ bggbffUCZa&@Ar   c                    t         j                  j                  |      }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&   n      r|   r}   r   rj   A`"	@r   X9v@)r   r   ri   g+=r*   )r   r   r   r   r   r1   r   rm   dotr3   rA   r   r   )	r   r   r   rV   rB   r   r   r   	X_hat_pcas	            r   test_singular_values_expectedr      s     ))

 2
3C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   rj   r<   r   )r;   r'   r%   r	   
svd_solverg&.>r*   r.    )	r0   meandictr   r   r1   r   mean_r3   )r   X_denseX_cparamsr5   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, normalizer))r
   rh   auto)r
   rh   QR)r
   rh   LU)r
   rh   none)r	   gư>r   )r	   rh   r   c                     |dk(  r| n| j                         }t        ddd|||      }|j                  |      }|j                  |      j	                  |      }t        ||       y )Nr!         r   )r;   ru   r'   r%   power_iteration_normalizertol)r0   r   r1   rA   rU   r   )	r   r%   r   r   
normalizerr   r5   X_transformed_1X_transformed_2s	            r   test_fit_transformr      sk     H$(*:*:*<A
#-C ''*Oggaj**1-OO_5r   )__doc__numpyr   rG   sklearn.decompositionr   r   sklearn.utilsr   sklearn.utils._testingr   r   sklearn.utils.fixesr   SVD_SOLVERSfixturer   markparametrizer:   rD   rJ   rY   r`   re   rs   rx   r   r   r   r   r   r   r   <module>r      s]   %   3 , E 4& 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(  
 !456 6
6r   