o
    \i>                     @   s  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mZ d dlmZ d d	lmZmZmZmZ d d
lmZ dd Zejdedd Zejdedd Zejdedd Zejdedd Z ejdedd Z!dd Z"ejdddd Z#dd Z$d d! Z%eejdeejddd"d# Z&eejded$d% Z'd&d' Z(ejddejded(d) Z)ejddejded*d+ Z*ejded,d- Z+ejded.d/ Z,ejded0d1 Z-ejded2d3 Z.d4d5 Z/d6d7 Z0ejd8g d9ejded:d; Z1ejded<d= Z2ejd>d?d@dA Z3ejd>d?dBdC Z4dS )D    N)StringIO)assert_array_equal)
block_diag)psi)LatentDirichletAllocation)_dirichlet_expectation_1d_dirichlet_expectation_2d)NotFittedError)assert_allcloseassert_almost_equalassert_array_almost_equal!if_safe_multiprocessing_with_blas)CSR_CONTAINERSc                 C   s6   d}t jd|td}|g| }t| }| |}||fS )N   )r   r   )dtype)npfullintr   )csr_containern_componentsblockblocksX r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/decomposition/tests/test_online_lda.py_build_sparse_array   s   
r   r   c                 C   sR   t | \}}d| }t|||dd}t|dd}||}||}t|| d S )Ng      ?r   )r   doc_topic_priortopic_word_priorrandom_stater   r   )r   r   fit_transformr   )r   r   r   priorlda_1lda_2topic_distr_1topic_distr_2r   r   r   test_lda_default_prior_params$   s   

r&   c                 C   s|   t jd}t| \}}t|dd|d}|| g d}|jD ]}t| dd  d d d }t	t
||v s;J q d S )Nr      batch)r   evaluate_everylearning_methodr   )r   r'      )r         )         r   randomRandomStater   r   fitcomponents_setargsorttuplesortedr   rngr   r   ldacorrect_idx_grps	componenttop_idxr   r   r   test_lda_fit_batch6   s   

rC   c                 C   s~   t jd}t| \}}t|ddd|d}|| g d}|jD ]}t| dd  d d d }t	t
||v s<J q!d S )	Nr         $@r'   online)r   learning_offsetr)   r*   r   r+   r2   r3   r4   r=   r   r   r   test_lda_fit_onlineJ   s   

rG   c           	      C   s   t jd}t| \}}t|dd|d}tdD ]}|| qg d}|jD ]}t|	 dd  d d d }t
t||v sBJ q'd S )	Nr   rD   d   r   rF   total_samplesr   r   r+   r2   r3   r   r5   r6   r   r   rangepartial_fitr8   r9   r:   r;   r<   	r   r>   r   r   r?   ir@   crB   r   r   r   test_lda_partial_fit_   s   
rQ   c                 C   s~   t jd}t| \}}t|d|d}||  g d}|jD ]}t|	 dd  d d d }t
t||v s<J q!d S )Nr   r(   r   r*   r   r+   r2   r3   )r   r5   r6   r   r   r7   toarrayr8   r9   r:   r;   r<   r=   r   r   r   test_lda_dense_inputt   s   
rT   c                  C   s   t jd} | jddd}d}t|| d}||}|dk s"J tt j|dd	t 	|j
d  |j|d
d}t|||jdd	d d t jf   d S )Nr   r.      
   sizer   r   g        r'   axisF)	normalize)r   r5   r6   randintr   r    anyr   sumonesshape	transformnewaxis)r>   r   r   r?   X_transX_trans_unnormalizedr   r   r   test_lda_transform   s   
 rf   method)rE   r(   c                 C   sL   t jd}|jddd}td| |d}||}||}t||d d S )Nr   rW   )2   rV   rX   r.   rR   r-   )r   r5   r6   r]   r   r    rb   r   )rg   r>   r   r?   X_fitrd   r   r   r   test_lda_fit_transform   s   

rj   c                  C   sT   t dd} t }d}tjt|d ||  W d    d S 1 s#w   Y  d S )N)r.   rW         z^Negative values in data passedmatch)r   r   r   pytestraises
ValueErrorr7   )r   r?   regexr   r   r   test_lda_negative_input   s   "rr   c                  C   sb   t jd} | jddd}t }d}tjt|d || W d    d S 1 s*w   Y  d S )Nr   r-   rU   rX   z}This LatentDirichletAllocation instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rl   )	r   r5   r6   r]   r   rn   ro   r	   
perplexity)r>   r   r?   rq   r   r   r   test_lda_no_component_error   s   "rt   c           	      C   s~   t |\}}tjd}t|d| d|d}|| g d}|jD ]}t| dd  d d d }t	t
||v s<J q!d S )Nr   r,   r'   )r   n_jobsr*   r)   r   r+   r2   r3   )r   r   r5   r6   r   r7   r8   r9   r:   r;   r<   )	rg   r   r   r   r>   r?   r@   rP   rB   r   r   r   test_lda_multi_jobs   s   

rv   c           	      C   s   t jd}t| \}}t|ddd|d}tdD ]}|| qg d}|jD ]}t|	 dd  d d d }t
t||v sCJ q(d S )	Nr   r,         @   )r   ru   rF   rJ   r   r+   r2   r3   rK   rN   r   r   r   test_lda_partial_fit_multi_jobs   s    
ry   c                  C   s   t jd} | dd}| dd}t jjd|dfd}t|dd| d	}|| | jd|d
 |fd}tjtdd |	|| W d    n1 sLw   Y  | jd||d
 fd}tjtdd |	|| W d    d S 1 suw   Y  d S )Nr   r   r/   rW   r-   rX   rw   rV   rI   r'   zNumber of samplesrl   zNumber of topics)
r   r5   r6   r]   r   r7   rn   ro   rp   _perplexity_precomp_distr)r>   r   	n_samplesr   r?   invalid_n_samplesinvalid_n_componentsr   r   r   test_lda_preplexity_mismatch   s&   
"r~   c           
      C   s   t |\}}t|d| ddd}t|d| ddd}|| |j|dd}|| |j|dd}||ks6J |j|dd}|j|dd}	||	ksJJ d S )	Nr'   rH   r   r   max_iterr*   rJ   r   rW   Fsub_samplingT)r   r   r7   rs   )
rg   r   r   r   r"   r#   perp_1perp_2perp_1_subsamplingperp_2_subsamplingr   r   r   test_lda_perplexity   s.   

r   c                 C   sh   t |\}}t|d| ddd}t|d| ddd}|| ||}|| ||}||ks2J d S )Nr'   rH   r   r   rW   )r   r   r    score)rg   r   r   r   r"   r#   score_1score_2r   r   r   test_lda_score  s(   



r   c                 C   sN   t | \}}t|ddddd}|| ||}|| }t|| d S )Nr'   r(   rH   r   r   )r   r   r7   rs   rS   r   )r   r   r   r?   r   r   r   r   r   test_perplexity_input_format:  s   

r   c                 C   sd   t | \}}t|ddd}|| |j|dd}||}td|t|j  }t	|| d S )NrW   r   )r   r   r   Fr   rk   )
r   r   r7   rs   r   r   expr_   datar   )r   r   r   r?   perplexity_1r   perplexity_2r   r   r   test_lda_score_perplexityL  s   

r   c                 C   sF   t | \}}t|ddddd}|| |j}||}t|| d S )Nr'   r(   r   )r   r   r*   r   r)   )r   r   r7   bound_rs   r   )r   r   r   r?   perplexity1perplexity2r   r   r   test_lda_fit_perplexity[  s   

r   c                 C   sR   t d}|| |fD ]}tdd|}t|jjddt |jjd  qdS )z+Test LDA on empty document (all-zero rows).)r.   r-   i  )r   r   rZ   r'   N)	r   zerosr   r7   r   r8   r_   r`   ra   )r   Zr   r?   r   r   r   test_lda_empty_docsr  s   
r   c               	   C   s   t ddd} t | }t| d| t|t t| tt |  dd | dd} tt	| t| tt j| dd	d
d
t j
f  ddd d
S )z9Test Cython version of Dirichlet expectation calculation.irW   i'  r   gҶOɃ;)atolrH   r'   rZ   Ngdy=gA:)>)rtolr   )r   logspace
empty_liker   r
   r   r   r_   reshaper   rc   )xexpectationr   r   r   test_dirichlet_expectation}  s   
&&
r   c                 C   s   t |\}}t|dd| |dd}t }tj|}	t_z
|| W |	t_n|	t_w | d}
| d}||
ks=J ||ksCJ d S )Nr   r(   r   )r   r   r*   verboser)   r   
rs   )r   r   r   sysstdoutr7   getvaluecount)r   r)   expected_linesexpected_perplexitiesr   r   r   r?   outold_outn_linesn_perplexityr   r   r   check_verbosity  s$   r   z;verbose,evaluate_every,expected_lines,expected_perplexities))Fr'   r   r   )Fr   r   r   )Tr   r   r   )Tr'   r   r   )Tr,   r   r'   c                 C   s   t | |||| d S )N)r   )r   r)   r   r   r   r   r   r   test_verbosity  s   
r   c                 C   s@   t | \}}t|d|}| }tdd t|D | dS )z6Check feature names out for LatentDirichletAllocation.)r   c                 S   s   g | ]}d | qS )latentdirichletallocationr   ).0rO   r   r   r   
<listcomp>  s    z.test_lda_feature_names_out.<locals>.<listcomp>N)r   r   r7   get_feature_names_outr   rL   )r   r   r   r?   namesr   r   r   test_lda_feature_names_out  s   r   r*   )r(   rE   c                 C   s^   t jd}|jddj|dd}tdd| d}|| |jj|ks%J |j	j|ks-J dS )	z2Check data type preservation of fitted attributes.r   rU   rX   F)copyr.   r   r   r*   N)
r   r5   r6   uniformastyper   r7   r8   r   exp_dirichlet_component_)r*   global_dtyper>   r   r?   r   r   r   test_lda_dtype_match  s   
r   c                 C   st   t j|}|jdd}|t j}td|| d|}td|| d|}t|j	|j	 t|
||
| dS )z>Check numerical consistency between np.float32 and np.float64.rU   rX   r.   r   N)r   r5   r6   r   r   float32r   r7   r
   r8   rb   )r*   global_random_seedr>   X64X32lda_64lda_32r   r   r   test_lda_numerical_consistency  s   r   )5r   ior   numpyr   rn   numpy.testingr   scipy.linalgr   scipy.specialr   sklearn.decompositionr   &sklearn.decomposition._online_lda_fastr   r   sklearn.exceptionsr	   sklearn.utils._testingr
   r   r   r   sklearn.utils.fixesr   r   markparametrizer&   rC   rG   rQ   rT   rf   rj   rr   rt   rv   ry   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s    





	







