
     h^              
          d dl Zd dlZd dlmZ d dlZd dlZd dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ  ej                    Zg d	Zej                            d
e          ej                            d edej        j        d                             d                         Zd Zej                            dddg          ej                            de          d                         Zej                            d
ddg          d             Zej                            dej                            d                                dd           ej!        dddd           d          gddg          ej                            d
e          d                         Z"ej                            d
ddg          d              Z#ej                            d
e          d!             Z$ej                            d
e          d"             Z%ej                            d
e          d#             Z&ej                            d
g d$          ej                            d%ddg          d&                         Z'ej                            d' ej(        g d(g d)g           ej(        g d(g d)g          j)        g          ej                            d*g d+          d,                         Z*ej                            d-d. e+ej        j                  fd e+ej        j                  dz
  fd e+ej        j                  fg          ej                            d'ej        ej        j)        g          d/                         Z,ej                            d
d0d.g          d1             Z-ej                            d
ddg          d2             Z.d3 Z/d4 Z0d5 Z1d6 Z2ej                            d7ej        d8d9fej        d:dfej                            d           3                    d;d<          d=d9fg          d>             Z4ej                            d
e          d?             Z5d@ Z6ej                            d
e          dA             Z7ej                            d
ddg          dB             Z8ej                            d
d.dg          dC             Z9ej                            dDej                            d           :                    dEF          d=d.fej                            d           :                    dGF          d;d.fej                            d           :                    dEF          dHd.fej                            d           :                    dEF          dIdfg          dJ             Z;ej                            d
e          dK             Z<ej                            d
e          dL             Z=ej                            d
e          dM             Z>dN Z?dO Z@dP ZAdQ ZBdR ZCdS ZDdT ZEdU ZFdV ZGdW ZHdX ZIej                            dddg          dY             ZJdS )Z    N)assert_array_equal)assert_allclose)datasets)PCA)	load_iris_assess_dimension)_infer_dimension)fullarpack
randomizedauto
svd_solvern_components   c                    t           j        }t          ||           }|                    |                              |          }|j        d         |k    sJ |                    |          }t          ||           |                    |          }t          ||           |                                }|	                                }t          t          j        ||          t          j        |j        d                   d           d S )Nr   r   r   -q=atol)irisdatar   fit	transformshapefit_transformr   get_covarianceget_precisionnpdoteye)r   r   XpcaX_rX_r2cov	precisions           `/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/sklearn/decomposition/tests/test_pca.pytest_pcar)      s     		A
<J
?
?
?C ''!**

q
!
!C9Q<<'''' QDC
--

CC 



C!!##IBF3	**BF171:,>,>UKKKKKK    c                  2   d} | dz   }t           j                            dd| |f          }t          |           }t	          j                    5  t	          j        dt                     |                    |           d d d            d S # 1 swxY w Y   d S )N
      r   sizer   error)	r   randomuniformr   warningscatch_warningssimplefilterRuntimeWarningr   )r   
n_featuresr"   r#   s       r(   test_no_empty_slice_warningr:   *   s    L!J
	"a|Z&@AAA
<
(
(
(C		 	"	"  g~666


                 s   0BBBcopyTFsolverc                 4   t           j                            d          }d}d}d}d}t          j        |                    ||          t          j        t          j        t          j        dd|                    |                    ||                              }|d d d dfxx         dz  cc<   |j        ||fk    sJ |                    d	                                          d
k    sJ |	                                }t          |d|| dd          }	|	                    |	                                          }
|
j        ||fk    sJ |	                    |          }t          |
|d           t          |
                    dd          t          j        |                     t          |
                    d	          t          j        |          d           |	                                }t          |d||                               |	                                          }	|	                    |          }|j        ||fk    sJ |                    d	                                          t%          j        dd          k    sJ d S )Nr   d   P      2   g      $@      ?   axisgfffffE@T   )r   whitenr;   r   random_stateiterated_powergMb@?rtolr   ddofrE   r   r   F)r   rG   r;   r   gfffffR@皙?)rel)r   r3   RandomStater    randndiaglinspacer   stdr;   r   r   r   r   onesmeanzerosr   pytestapprox)r<   r;   rng	n_samplesr9   r   rankr"   X_r#   
X_whitenedX_whitened2X_unwhiteneds                r(   test_whiteningra   5   s    )


"
"CIJLD 			)T""
rwr{4d3344ciij6Q6QRR	 	A aaa"fIIINIII7y*----- 55a5==%%%% 
B
!  C ""27799--J	<88888--##KJ$7777JNNN22BGL4I4IJJJJOOO++RXl-C-C%PPPP	
B
!%dv  	c"''))nn  ==$$L)\!::::: ##''))V]4T-J-J-JJJJJJJr*   r   r   c                    t           j                            d          }d\  }}|                    ||          }t	          dd          }t	          d| d          }|                    |           |                    |           t          |j        |j        d           t          |j        |j        d           d S )	Nr   r>   r?   r-   r   r   r   r   rH   皙?rJ   )	r   r3   rP   rQ   r   r   r   explained_variance_explained_variance_ratio_r   rZ   r[   r9   r"   pca_full	pca_others          r(   .test_pca_explained_variance_equivalence_solverrk   l   s    
)


"
"C#Iz		)Z((Af555HzJJJILLOOOMM!$i&C$    *+     r*   r"   r>   r?   N   )n_informativerH   zrandom-datazcorrelated-data)idsc                 z   t          d|d          }|                    |           }t          |j        t	          j        |dd                     t          j                            t	          j        | d                    d         }t          |d	          d d         }t          |j        |d
           d S )Nr-   r   rd   r   rL   F)rowvarT)reverse{Gzt?rJ   )
r   r   r   rf   r   varlinalgeigr&   sorted)r"   r   r#   X_pcaexpected_results        r(   %test_pca_explained_variance_empiricalry      s     1!
D
D
DCa  EC+RVE-J-J-JKKKimmBF1U$;$;$;<<Q?O_d;;;BQB?OC+_4HHHHHHr*   c                 N   t           j                            d          }d\  }}|                    ||          }t	          dd|          }t	          d| |          }|                    |           |                    |           t          |j        |j        d           d S )Nr   rc   r-   r   rd   rr   rJ   )r   r3   rP   rQ   r   r   r   singular_values_rh   s          r(   $test_pca_singular_values_consistencyr|      s    
)


"
"C#Iz		)Z((Af3GGGHzLLLILLOOOMM!H-y/IPTUUUUUUr*   c           	         t           j                            d          }d\  }}|                    ||          }t	          d| |          }|                    |          }t          t          j        |j        dz            t           j	        
                    |d          dz             t          |j        t          j        t          j        |dz  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 S )Nr   rc   r-   rd   frorD   )r>   n   rC   A`"	@r   X9v@)r   r   rB   )r   r3   rP   rQ   r   r   r   sumr{   rt   normsqrtr    components_r   )r   rZ   r[   r9   r"   r#   X_transX_hats           r(   test_pca_singular_valuesr      s   
)


"
"C#Iz		)Z((A
1#
F
F
FC""G 
s#Q&'')G)G1)L   C("'"&!!2L2L2L*M*MNNN %Iz		)Z((A
1#
F
F
FC""Grwrvgqjq111222GAAAqDMMMUMMMAAAqDMMMUMMMF7CO,,EGGENNNC(*=*=*=>>>>>r*   c                 R   t           j                            d          }d\  }}|                    ||          dz  }|d dxx         t          j        g d          z  cc<   d|                    d|          z  t          j        g d          z   }t          d|                               |                              |          }|t          j        |dz  	                                          z  }t          t          j        |d         d                   d	d
           d S )Nr   r>   rC   rN   r,   rC         r   r-   r   rB   rr   rJ   )r   r3   rP   rQ   arrayr   r   r   r   r   r   abs)r   rZ   npr"   XtYts          r(   test_pca_check_projectionr      s    )


"
"CDAq		!Q#AcrcFFFbhyyy!!!FFF	syyA	)))!4!4	4B	!
	3	3	3	7	7	:	:	D	DR	H	HB"'2q5++--
 
  BBF2a58$$c555555r*   c                    ddgddgg}t          d| d          }|                    |          }|j        s
J d            t          |                                dd           t          |                                d	d
           d S )NrB   g        r   r   rd   )r-   r   r   r   gQ?rr   rJ   )r   r   r   r   rV   rT   )r   r"   r#   r   s       r(   test_pca_check_projection_listr      s     sc3Z A
1!
D
D
DC""G=  &  =GLLNNDu5555GKKMM4d333333r*   )r   r   r   rG   c                 r   t           j                            d          }d\  }}|                    ||          }|d d dfxx         dz  cc<   |g dz  }t	          d| |                              |          }|                    |          }|                    |          }t          ||d	           d S )
Nr   )rA   rC   r   gh㈵>)r   r   rC   r-   )r   r   rG   h㈵>rJ   )	r   r3   rP   rQ   r   r   r   inverse_transformr   )	r   rG   rZ   r   r   r"   r#   Y	Y_inverses	            r(   test_pca_inverser      s     )


"
"CDAq		!QAaaadGGGwGGGNA 1F
C
C
C
G
G
J
JCaA%%a((IAyt,,,,,,r*   r   )r   r   r   )r   r   r   z!svd_solver, n_components, err_msg))r   r   2must be between 1 and min\(n_samples, n_features\))r   r   r   )r   r-   zmust be strictly less than min)r   rC   zZn_components=3 must be between 0 and min\(n_samples, n_features\)=2 with svd_solver='full'c                    d}t          ||           }t          j        t          |          5  |                    |           d d d            n# 1 swxY w Y   | dk    rr|}d                    ||          }t          j        t          |          5  t          ||                               |           d d d            d S # 1 swxY w Y   d S d S )Nr-   r   matchr   zgn_components={}L? must be strictly less than min\(n_samples, n_features\)={}L? with svd_solver='arpack')r   rX   raises
ValueErrorr   format)r   r   r   err_msg
smallest_d
pca_fitteds         r(   test_pca_validationr      sf   , J\j999J	z	1	1	1  t               X!""(&z"B"B 	
 ]:W555 	? 	?44488>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? s#   AAA%CCCzsolver, n_components_r   c                 j    t          |          }|                    |            |j        |k    sJ d S )Nr   )r   r   n_components_)r   r<   r   r#   s       r(   test_n_components_noner     s=     
 
 
 CGGDMMM------r*   r   c                     t           j                            d          }d\  }}|                    ||          }t	          d|           }|                    |           |j        dk    sJ d S )Nr   iX  r,   mler   r   )r   r3   rP   rQ   r   r   r   )r   rZ   r[   r9   r"   r#   s         r(   test_n_components_mler   &  sq     )


"
"C#Iz		)Z((A
5Z
8
8
8CGGAJJJ!!!!!!r*   c                 X   t           j                            d          }d\  }}|                    ||          }t	          d|           }d                    |           }t          j        t          |          5  |	                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   z:n_components='mle' cannot be a string with svd_solver='{}'r   )
r   r3   rP   rQ   r   r   rX   r   r   r   )r   rZ   r[   r9   r"   r#   r   s          r(   test_n_components_mle_errorr   1  s     )


"
"C#Iz		)Z((A
5Z
8
8
8CJQQ G 
z	1	1	1  


                 s   <BB#&B#c                  H   t           j                            d          } d\  }}|                     ||          dz  }|d dxx         t          j        g d          z  cc<   t          dd                              |          }|j        dk    sJ |j        d	k    sJ d S )
Nr   r>   r   rN   r,   rC   r   r   r   r-   r   r   r   r   )	r   r3   rP   rQ   r   r   r   r   r   )rZ   r   r   r"   r#   s        r(   test_pca_dimr   @  s    
)


"
"CDAq		!Q#AcrcFFFbh'''FFF
5V
4
4
4
8
8
;
;Cu$$$$!!!!!!r*   c                     d\  } t           j                            d          }|                    |           dz  |                    d          t          j        g d          z  z   t          j        g d          z   }t          | d          }|                    |           |j        t          j        fd	t          d|           D                       }|d         |	                                d
z  z
  k    sJ d S )N  r   r   rN   r   r   )r   r   rF   r      r   r   c                 2    g | ]}t          |          S  r   ).0kr   spects     r(   
<listcomp>z$test_infer_dim_1.<locals>.<listcomp>X  s&    GGGa$UAq11GGGr*   {Gz?)
r   r3   rP   rQ   r   r   r   rf   rangemax)r   rZ   r"   r#   llr   r   s        @@r(   test_infer_dim_1r   K  s     DAq
)


"
"C		!Q#
))Aq//BH___55
5	6
(???
#
#	$ 
 1
0
0
0CGGAJJJ#E	GGGGG5A;;GGG	H	HBa526688dQh&&&&&&&r*   c                     d\  } }t           j                            d          }|                    | |          dz  }|d dxx         t          j        g d          z  cc<   |ddxx         t          j        g d          z  cc<   t          |d	          }|                    |           |j        }t          ||           d
k    sJ d S )Nr   r   rN   r,   r      r   r   rF   r-   r.   r   r   r   	r   r3   rP   rQ   r   r   r   rf   r
   r   r   rZ   r"   r#   r   s         r(   test_infer_dim_2r   \  s     DAq
)


"
"C		!Q#AcrcFFFbh'''FFFbeHHH)))***HHH
1
0
0
0CGGAJJJ#EE1%%))))))r*   c                     d\  } }t           j                            d          }|                    | |          dz  }|d dxx         t          j        g d          z  cc<   |ddxx         t          j        g d          z  cc<   |dd	xx         d
t          j        g d          z  z  cc<   t          |d          }|                    |           |j        }t          ||           d
k    sJ d S )Nr   r   rN   r,   r   r   r   r@   (   r-   )r.   r   r.   r   r.   r   r   r   r   s         r(   test_infer_dim_3r   j  s   DAq
)


"
"C		!Q#AcrcFFFbh'''FFFbeHHH)))***HHHbeHHHBH///0000HHH
1
0
0
0CGGAJJJ#EE1%%))))))r*   z'X, n_components, n_components_validatedgffffff?r-   r   r   r   g      ?c                     t          |d          }|                    |            |j        t          j        |          k    sJ |j        |k    sJ d S )Nr   r   )r   r   r   rX   rY   r   )r"   r   n_components_validatedr#   s       r(   $test_infer_dim_by_explained_variancer   w  s^     <F
;
;
;CGGAJJJv}\:::::: 6666666r*   c                    d\  }}t           j                            d          }|                    ||          dz  t          j        g d          z   }t          d|           }|                    |           |                    |          }dt          j        dt           j	        z  t          j
        d          z  d	z            z  |z  }t          ||z  dd
           |                    |                    ||          dz  t          j        g d          z             }||k    sJ t          dd|           }|                    |           |                    |          }||k    sJ d S )N)r   rC   r   rN   r   r-   r   g      r   g|Gz?re   rJ   g?T)r   rG   r   )r   r3   rP   rQ   r   r   r   scorelogpiexpr   )	r   r   r   rZ   r"   r#   ll1hll2s	            r(   test_pca_scorer     sJ    DAq
)


"
"C		!Q# 3 33A
1
4
4
4CGGAJJJ
))A,,Crva"%i"&))+f45559AC!GQT****
))CIIaOOc)BHYYY,?,??
@
@C9999
1Tj
A
A
ACGGAJJJ
))A,,C999999r*   c                     d\  } }t           j                            d          }|                    | |          |                    | d          t          j        g d          z  z   t          j        g d          z   }|                    | |          |                    | d          t          j        g d          z  z   t          j        g d          z   }t          j        |          }t          |          D ]@}t          |d          }|                    |           |	                    |          ||<   A|
                                dk    sJ d S )N)   rC   r   r   r   )r   r   rF   r   r   )r   r3   rP   rQ   r   rW   r   r   r   r   argmax)r   r   rZ   Xlr   r   r   r#   s           r(   test_pca_score3r     s'   DAq
)


"
"C	1a399Q??RXiii-@-@@	@28IIICVCV	VB	1a399Q??RXiii-@-@@	@28IIICVCV	VB	!B1XX  qV444		"199;;!r*   c                     t          j        d          \  }}t          d| d          }|                    |           t	          j        |j        |j        z
  dk              sJ d S )NT
return_X_yr@   r   rd   )r   load_digitsr   r   r   allrf   noise_variance_)r   r"   _r#   s       r(   test_pca_sanity_noise_variancer     sj     4000DAq
2*1
E
E
ECGGAJJJ63*S-@@QFGGGGGGGr*   c                 B   t          j        d          \  }}t          ddd          }t          d| d          }|                    |           |                    |           t	          |                    |          |                    |          d           d S )	NTr   r@   r   r   rd   r   rJ   )r   r   r   r   r   r   )r   r"   r   ri   rj   s        r(   "test_pca_score_consistency_solversr     s     4000DAqvAFFFH
KKKILLOOOMM!HNN1%%yq'9'9EEEEEEr*   c                    d\  }}t           j                            d          }|                    ||          dz  t          j        g d          z   }t          ||           }|                    |           |j        dk    sJ |                    |           |                    |j	                   |j        dk    sJ |                    |j	                   d S )Nr   r   rN   r   r   )
r   r3   rP   rQ   r   r   r   r   r   T)r   r   r   rZ   r"   r#   s         r(   'test_pca_zero_noise_variance_edge_casesr     s     DAq
)


"
"C		!Q# 3 33A
1
4
4
4CGGAJJJ!#### IIaLLLGGACLLL!#### IIacNNNNNr*   z#data, n_components, expected_solver)r   rA   r/   )r,   rA   rA   r,   c                     t          |d          }t          ||d          }|                    |            |                    |            t          |j        |j                   d S )Nr   )r   rH   rd   )r   r   r   r   )r   r   expected_solverpca_autopca_tests        r(   test_pca_svd_solver_autor     ss     1===H!oA  H LLLLH((*>?????r*   c                    t           j                            d                              dd          }t          j                            |          }t          j                            |          sJ t          d|           }t          j
        t                    5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   r   r   rC   r   )r   r3   rP   randspsparse
csr_matrixissparser   rX   r   	TypeErrorr   )r   r"   r#   s      r(   test_pca_sparse_inputr     s    
	a  %%a++A
	QA9a     
1
4
4
4C	y	!	!  


                 s   CCCc           	         t           j                            d          }|                    dd          }t          j        d          }t          d          D ]6}t          d| |          }|                    |          d         ||d d f<   7t          |t          j	        |dd d f         d          
                    dd                     d S )Nr   r,   )r   r-   r   r-   rd   )r   r3   rP   r   rW   r   r   r   r   tilereshape)r   rZ   r"   transformed_Xir#   s         r(   test_pca_deterministic_outputr     s    
)


"
"CRAHW%%M2YY 6 6qZcJJJ!//2215adM27=AAA+>#C#C#K#KBPQ#R#RSSSSSr*   c                 B    t          |            t          |            d S )N)"check_pca_float_dtype_preservation$check_pca_int_dtype_upcast_to_doubler   s    r(   test_pca_dtype_preservationr    s$    &z222(44444r*   c                    t           j                            d                              dd                              t           j        d          }|                    t           j                  }t          d| d                              |          }t          d| d                              |          }|j	        j
        t           j        k    sJ |j	        j
        t           j        k    sJ |                    |          j
        t           j        k    sJ |                    |          j
        t           j        k    sJ t          |j	        |j	        d	           d S )
Nr   r   r   Fr;   rC   rd   g-C6*?rJ   )r   r3   rP   r   astypefloat64float32r   r   r   dtyper   r   )r   X_64X_32pca_64pca_32s        r(   r   r     s0   9  ##((q1188%8PPD;;rz""DaJQGGGKKDQQFaJQGGGKKDQQF#rz1111#rz1111D!!'2:5555D!!'2:5555
 F&(:FFFFFFr*   c                    t           j                            d                              ddd          }|                    t           j        d          }|                    t           j        d          }t          d| d                              |          }t          d| d                              |          }|j	        j
        t           j        k    sJ |j	        j
        t           j        k    sJ |                    |          j
        t           j        k    sJ |                    |          j
        t           j        k    sJ t          |j	        |j	        d	           d S )
Nr   r   )r   r   Fr  rC   rd   g-C6?rJ   )r   r3   rP   randintr  int64int32r   r   r   r  r  r   r   )r   X_i64X_i32r  r  s        r(   r  r    s6   I!!!$$,,Qi@@ELLL..ELLL..EaJQGGGKKERRFaJQGGGKKERRF#rz1111#rz1111E""(BJ6666E""(BJ6666F&(:FFFFFFr*   c                  &   t          d          \  } }t                                          | |          }|j                                        d         }t          |                              | |          }|j        | j        d         k    sJ d S )NTr   r1   r   )r   r   r   rg   cumsumr   r   )r"   ypca1r   pca2s        r(   5test_pca_n_components_mostly_explained_variance_ratior  0  s     %%%DAq5599Q??D188::2>LL)))--a33D++++++r*   c                      t          j        g d          } d}dD ]F}t          j        t          d          5  t          | ||           d d d            n# 1 swxY w Y   Gd S )Nr   KH9r  r  r,   )r   r   z"should be in \[1, n_features - 1\]r   )r   r   rX   r   r   r	   )spectrumr[   r\   s      r(   test_assess_dimension_bad_rankr  <  s    x00011HI 9 9]:-RSSS 	9 	9hi888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	99 9s   AA	A	c                      t          j        g d          } t          | dd          t           j         k    sJ dD ]$}t          | |d          t           j         k    sJ %t	          | d          dk    sJ d S )Nr  r   r,   r\   r[   )r-   rC   )r   r   r	   infr
   )r  r\   s     r(   test_small_eigenvalues_mler"  E  s     x00011HXA<<<wFFFF @ @ 444?????Hb))Q......r*   c                      t          j        dddddd          \  } }t          d                              |           }|j        dk    sJ d S )Nr   r      *   )r9   rm   
n_repeatedn_redundantn_clusters_per_classrH   r   r1   )r   make_classificationr   r   r   r"   r   r#   s      r(   test_mle_redundant_datar+  R  sk     '  DAq 5
!
!
!
%
%a
(
(C!!!!!!r*   c                      t          j        ddd          \  } }t          dd          }t          j        t
          d	          5  |                    |            d d d            d S # 1 swxY w Y   d S )
Nr      r%  )r[   r9   rH   r   r   r   z?n_components='mle' is only supported if n_samples >= n_featuresr   )r   r)  r   rX   r   r   r   r*  s      r(   test_fit_mle_too_few_samplesr.  a  s     '"RTUUUDAq
5V
4
4
4C	O
 
 
   	


	                 s   A**A.1A.c                  4   d\  } }t           j                            d                              | |          }t          j        |d d d df         d          |d d df<   t          dd          }|                    |           |j        |dz
  k    sJ d S )	N)r   r,   r   r.   rD   r   r   r   r   )r   r3   rP   rQ   rV   r   r   r   )r[   n_dimr"   pca_skls       r(   test_mle_simple_caser2  n  s      Iu
	a  &&y%88AwqCRCyr***AaaaeH%F+++GKKNNN EAI------r*   c                     d\  } }t          j        | |f          }t           j                            |d          \  }}}t	          |dd          t          j        |dz
            d           t          j        t          |d|                     sJ t          d|          D ]$}t          |||           t           j	         k    sJ %d S )	N)	   r   T)full_matricesr   r   r   r   r-   )
r   rU   rt   svdr   rW   isfiniter	   r   r!  )r[   r9   r"   r   sr\   s         r(   test_assess_dimesion_rank_oner9  y  s     Iz
J'((AimmATm22GAq!AabbE28JN33%@@@@;(iHHHIIIIIa$$ @ @ D)44?????@ @r*   c                  J   t           j                            d          } d}|                     d|          }t	          dd|d                              |          }t	          dd                              |          }t	          dd	d
                              |          }t          t          j        |j                  t          j        |j                             t          t          j        |j                  t          j        |j                             dS )zCheck that exposing and setting `n_oversamples` will provide accurate results
    even when `X` as a large number of features.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/20589
    r   r>   r   r   r   )r   r   n_oversamplesrH   r   r   r   rd   N)	r   r3   rP   rQ   r   r   r   r   r   )rZ   r9   r"   pca_randomizedri   
pca_arpacks         r(   %test_pca_randomized_svd_n_oversamplesr>    s    )


"
"CJ		%$$A  	  
 
c!ff  f55599!<<H!qIIIMMaPPJBF8/00"&9O2P2PQQQBF>566z?U8V8VWWWWWr*   c                      t          d                              t          j                  } |                                 }t          d t          d          D             |           dS )z Check feature names out for PCA.r-   r1   c                     g | ]}d | S )r#   r   )r   r   s     r(   r   z*test_feature_names_out.<locals>.<listcomp>  s    444a	a		444r*   N)r   r   r   r   get_feature_names_outr   r   )r#   namess     r(   test_feature_names_outrC    s^    
1



!
!$)
,
,C%%''E44588444e<<<<<r*   c                 b   t           j                            d          }|                    dd          }t	                                          |          }|j        |j        z  }t          j        |dd          	                                }t           j
                            ||           dS )z9Check the accuracy of PCA's internal variance calculationr   r   r   r   rL   N)r   r3   rP   rQ   r   r   rf   rg   rs   r   testingr   )r;   rZ   r"   r#   pca_vartrue_vars         r(   test_variance_correctnessrH    s     )


"
"C		$A
%%))A,,C%(EEGvaaa(((,,..HJw11111r*   )Knumpyr   scipyr   numpy.testingr   rX   r5   sklearn.utils._testingr   sklearnr   sklearn.decompositionr   sklearn.datasetsr   sklearn.decomposition._pcar	   r
   r   PCA_SOLVERSmarkparametrizer   r   r   r)   r:   ra   rk   r3   rP   rQ   r)  ry   r|   r   r   r   r   r   r   r   minr   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r   r   r   r  r   r  r  r  r"  r+  r.  r2  r9  r>  rC  rH  r   r*   r(   <module>rU     s'	           , , , , , ,   2 2 2 2 2 2       % % % % % % & & & & & & 8 8 8 8 8 8 7 7 7 7 7 7x666 {33q$)/!2D)E)EFFL L GF 43L(   $//;//1K 1K 0/ 0/1Kj ,'?@@  A@* 
	a  &&sB//$$S"BQOOOPQR 
)*    {33I I 43 I ,'?@@V V A@V {33? ? 43?: {336 6 436 {334 4 434 'G'G'GHHE4=11- - 21 IH-  
XRXyyy))),--xrxIII8N/O/O/QR  '    ? ?!  &?, 	TY_%%&	33ty''!+,	ss49?++,  $)TY[!9::. . ;: . '788" " 98" ,'?@@  A@" " "' ' '"* * *
* 
* 
* -	D!	D!			q	!	!	&	&q"	-	-sA6 7 7 7 {33  43*   {33H H 43H ,'?@@F F A@F '=>>  ?>* )			q	!	!	)	)z	)	:	:CH			q	!	!	)	)x	)	8	8!VD			q	!	!	)	)z	)	:	:BG			q	!	!	)	)z	)	:	:BM @ @ @ {33  43 {33T T 43T {335 5 435
G G G&G G G"	, 	, 	,9 9 9
/ 
/ 
/" " "
 
 
. . .
@ 
@ 
@X X X4= = = $//2 2 0/2 2 2r*   