
    sg                     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mZ d Zy)    )combinationsN)FactorAnalysis)_ortho_rotation)ConvergenceWarning)assert_almost_equalassert_array_almost_equalc                 <	   t         j                  j                  |       }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)'N)            )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     c/var/www/html/venv/lib/python3.12/site-packages/sklearn/decomposition/tests/test_factor_analysis.pyfztest_factor_analysis.<locals>.f<   s    vvgam$$    )loglike_components_noise_variance_Tr      )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)global_random_seedrng	n_samples
n_featuresr   WhnoiseXfasr)   faX_tr9   scovmcovr   fa1fa2attrr:   	precisionresultsprojectionsfa_varrot1rot2factors
r_solutionrotateds                                 r   test_factor_analysisrb      s-   
))

 2
3C*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   rb    r    r   <module>rj      s#    #   0 B 1 Q^Nr    