
    h$,fL                     h    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mZmZ ed        Zy)    )combinationsN)FactorAnalysis)_ortho_rotation)ConvergenceWarning)assert_almost_equalassert_array_almost_equalignore_warningsc                  <	   t         j                  j                  d      } d\  }}}| j                  ||      }| j                  ||      }| j	                  d|      | j                  ||      z  }t        j
                  ||      |z   }g }dD ]  }	t        ||	      }
|
j                  |       |j                  |
       |
j                  |      }|j                  ||fk(  sJ t        |
j                  d   |
j                  |      j                                t        |
j                  |      j                         |
j!                  |             t        j"                  t        j$                  |
j                              }|dkD  sJ d	       t        j&                  |dd
      }|
j)                         }t        j                  t        j*                  ||z
              |j,                  z  }|dk  s
J d|z         t        |t        j.                  |            }
t1        j2                  t4              5  |
j                  |d d d df          d d d         d }|\  }}dD ]  }t         |||       |||              d|_        d|_        t1        j:                  t<              5  |j                  |       d d d        dd|j                  d   fD ]{  }|
_        |
j                  |       |
j)                         }|
jA                         }tC        t        j
                  ||      t        jD                  |j                  d         d       } d}i i }}dD ]6  }	t        ||	      }|jG                  |      ||	<   |j)                         ||	<   8 tI        g dd      D ]C  \  }}t        jJ                  ||   ||         rJ t        jJ                  ||   ||   d      rCJ  t        jL                  g dg dg dg dg      }t        jL                  ddgddgd d!gd"d#gg      }tO        |d d d |f   d$%      jP                  }tC        t        j*                  |      t        j*                  |      d&       y # 1 sw Y   xY w# 1 sw Y   xY w)'Nr   )            )size)
randomizedlapack)n_components
svd_methodg        zLog likelihood dif not increaseg      ?)rowvarbiasg?zMean absolute difference is %f)r   noise_variance_init   c                 @    t        j                  t        | |            S )N)npabsgetattr)xys     Plib/python3.12/site-packages/sklearn/decomposition/tests/test_factor_analysis.pyfztest_factor_analysis.<locals>.fC   s    vvgam$$    )loglike_components_noise_variance_T   )Nvarimax	quartimax)r   rotationr   )atol)gm^?gxֿg1e}Vѿgp1R?)gթ4ܿgJ_JUgvٯ;ݷ?gEq^O)g 5?ḡ]͔g>ȫ?ge<w)g?gq g .>?grzM?gbX9?g9v?g?5^I¿gS?g|?5^?g333333ӿgCl?gMbпr&   )method)decimal))r   randomRandomStaterandngammadotr   fitappend	transformshaper   r"   score_samplessummeanscorealldiffcovget_covariancer   r   onespytestraises
ValueErrormax_iterverbosewarnsr   r   get_precisionr   eyefit_transformr   allclosearrayr   T)rng	n_samples
n_featuresr   WhnoiseXfasr*   faX_tr:   scovmcovr    fa1fa2attrr;   	precisionresultsprojectionsfa_varrot1rot2factors
r_solutionrotateds                                r   test_factor_analysisrb      s.    ))


"C*2'Iz< 			,
+A		)\*A IIajI)CIIi,LLE 	q!uA
C* &I
q	

2ll1oyyY5555BKKOR-=-=a-@-D-D-FGB,,Q/446Dvvbggbkk*+cz<<<z vva#.   "vvbffTD[)*QVV3czB;dBBz%277:;N
 ]]:& 	FF1QU8	 	16% HC> 8Ac4L!C,78 CLCK	(	) 

 Aqwwqz* R&
q	!$$&	!"&&i"8"&&:LbQR Lr[G0 6\FK ..q1$335F6 ##A1E I
d;;wt}gdm<<<{{;t,k$.?aHHHI hh>>>=		
G 
&%5&/E6?KJ ga,&67	JLLGbffWorvvj/A1Mi	 	 s   8R.RR	R)	itertoolsr   numpyr   r>   sklearn.decompositionr   &sklearn.decomposition._factor_analysisr   sklearn.exceptionsr   sklearn.utils._testingr   r   r	   rb    r!   r   <module>rj      s;   
 #   0 B 1  ^N ^Nr!   