o
    i                     @   s\   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d ZdS )	    )combinationsN)FactorAnalysis)_ortho_rotation)ConvergenceWarning)assert_almost_equalassert_array_almost_equalc              	   C   sn  t j| }d\}}}|||}|||}|jd|d||| }t ||| }g }	dD ]}
t||
d}|| |	| |	|}|j
||fksPJ t|jd ||  t|| || t t |j}|dks{J dt j|dd	d
}| }t t || |j }|dk sJ d| t|t |d}tt ||d d d df  W d    n1 sw   Y  q0dd }|	\}}dD ]}t|||||| qd|_d|_tt || W d    n1 sw   Y  dd|j
d fD ]#}||_|| | }|  }t!t ||t "|j
d d q
d}i i }}dD ]}
t||
d}|#|||
< | ||
< q7t$g ddD ]!\}}t %|| || rfJ t j%|| || ddsuJ qUt &g dg dg dg dg}t &ddgdd gd!d"gd#d$gg}t'|d d d |f d%d&j(}t!t |t |dd' d S )(N)            )size)Z
randomizedZlapack)n_componentsZ
svd_methodg        zLog likelihood dif not increaseg      ?)ZrowvarZbiasg?zMean absolute difference is %f)r   Znoise_variance_init   c                 S   s   t t| |S )N)npabsgetattr)xy r   j/home/kim/smarthome/.venv/lib/python3.10/site-packages/sklearn/decomposition/tests/test_factor_analysis.pyf<   s   ztest_factor_analysis.<locals>.f)loglike_Zcomponents_Znoise_variance_Tr      )NvarimaxZ	quartimax)r   Zrotationr
   )Z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   randomZRandomStateZrandngammadotr   fitappend	transformshaper   r   Zscore_samplessummeanZscorealldiffcovZget_covariancer   r   ZonespytestZraises
ValueErrorZmax_iterverboseZwarnsr   r   Zget_precisionr   eyeZfit_transformr   Zallclosearrayr   T)Zglobal_random_seedrngZ	n_samplesZ
n_featuresr   WhnoiseXZfasr   faZX_tr'   ZscovZmcovr   Zfa1Zfa2attrr(   	precisionresultsZprojectionsZfa_varZrot1Zrot2ZfactorsZ
r_solutionZrotatedr   r   r   test_factor_analysis   s   





$
"r8   )	itertoolsr   numpyr   r)   Zsklearn.decompositionr   Z&sklearn.decomposition._factor_analysisr   Zsklearn.exceptionsr   Zsklearn.utils._testingr   r   r8   r   r   r   r   <module>   s   