o
    \ip                     @   s  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mZmZ d dlmZmZmZ d dlmZ edd	\ZZee 8 Zee  Zd
d Zdd Zdd Zejdedd Zejdee dd Zdd Z ejdedd Z!dd Z"ejdedd Z#d d! Z$ejded"d# Z%ejd$ej&ej&fej'ej'fe(ej'fgd%d& Z)d'd( Z*ejd)d*d+gd,d- Z+dS ).    N)StringIO)load_digits)BernoulliRBM)assert_allcloseassert_almost_equalassert_array_equal)CSC_CONTAINERSCSR_CONTAINERSLIL_CONTAINERS)assert_all_finiteT)
return_X_yc                  C   sJ   t  } tdddddd}||  t||  ddd	 t| t  d S )
N@   皙?
      	   )n_componentslearning_rate
batch_sizen_iterrandom_state      5r   decimal)Xdigitscopyr   fitr   score_samplesmeanr   )Xrbm r!   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/neural_network/tests/test_rbm.pytest_fit   s   

r#   c                  C   s   t  } tddddd}| jd }ttt||j }t	| |}t
dD ]}|D ]}|| q+q't||  ddd	 t| t  d S )
Nr   r      r   r   r   r   r   r   r   r   r   )r   r   r   shapeintnpceilfloatr   array_splitrangepartial_fitr   r   r   r   )r   r    	n_samples	n_batchesbatch_slicesibatchr!   r!   r"   test_partial_fit%   s   
r3   c                  C   sH   t d d } tddddd}||  || }|| }t|| d S )Nd         *   r   r   r   r   )r   r   r   	transform_mean_hiddensr   )r   rbm1Xt1Xt2r!   r!   r"   test_transform6   s   


r>   csr_containerc                 C   s    | t d d }t | d S )N   )r   r   r   )r?   r   r!   r!   r"   test_small_sparseA   s   rA   sparse_containerc                 C   sz   | t d d }t d d  }tddddd}tddddd}|| || t|| || dd d S )	Nr4   r   r   r   r   r%   r   r   )r   r   r   r-   r   r   r   )rB   X_sparser   r;   rbm2r!   r!   r"   test_small_sparse_partial_fitH   s   


rE   c                     st   t jdtd d  tddddd   d } t  fddtdD d}t	| |d	d
 d S )Nr   r4      r6   r7   r8   c                    s   g | ]
}  d  qS )r   )_sample_hiddens.0r1   r   r;   rngr!   r"   
<listcomp>c   s    z'test_sample_hiddens.<locals>.<listcomp>   r   )
r(   randomRandomStater   r   r   r:   r   r,   r   )hhsr!   rJ   r"   test_sample_hiddens\   s   
"rR   csc_containerc                 C   s   t jd}t dgdgg}tddd|d}|| t|jt dgdggdd	 t||| t jd}| dgdgg}tddd|d}|| t|jt dgdggdd	 t|||	  t|j|j d S )
Nr7                 ?rF   r8   gϾT"?g&r?r@   r   )
r(   rN   rO   arrayr   r   r   components_gibbstoarray)rS   rK   r   r;   rD   r!   r!   r"   test_fit_gibbsh   s"   

rZ   c                  C   sX   t } tddddd}||  || }t| || }t||kjdds*J d S )Nr7   (   r$   r8   rM   )axis)r   r   r   rX   r   r(   allmax)r   r;   	X_sampled
X_sampled2r!   r!   r"   test_gibbs_smoke   s   


ra   lil_containersc                 C   s   t jd}t t dt dg}tddd|d}|| ||dk 	 s+J d|_
||}d|_
|| |}t|| t jdd |t dd	 g W d    d S 1 s_w   Y  d S )
Nr7   i  r   rF   r8   iignore)underr4   )r(   rN   rO   vstackzerosonesr   r   r   r]   r   r   errstatearange)rb   rK   r   r;   d_scores_scorer!   r!   r"   test_score_samples   s   


"rl   c                  C   s:   t ddd} tj}t t_z| t W |t_d S |t_w )NrF   r   )r   verbose)r   sysstdoutr   r   r   )r    
old_stdoutr!   r!   r"   test_rbm_verbose   s   rq   c                 C   sj   t j}t t _| dgdgg}tdddddd}z|| t j }td|s+J W |t _d S |t _w )	NrT   rU   rF   rM   r7   T)r   r   r   r   rm   zS\[BernoulliRBM\] Iteration 1, pseudo-likelihood = -?(\d)+(\.\d+)?, time = (\d|\.)+s)rn   ro   r   r   r   getvaluerematch)rS   rp   r   r    sr!   r!   r"   test_sparse_and_verbose   s   



rv   zdtype_in, dtype_outc                 C   sN   t d d | }tddddd}||}|j|ks%J d|j|jd S )Nr4   r5   r6   r7   r8   z(transform dtype: {} - original dtype: {})r   astyper   fit_transformdtypeformat)dtype_in	dtype_outr   r    Xtr!   r!   r"   test_transformer_dtypes_casting   s   

r~   c                  C   s   t d d tj} tddddd}|| }t d d tj}tddddd}||}t||ddd t|j|jddd t|j	|j	d	dd t|j
|j
d
dd t|j|j d S )Nr4   r5   r6   r7   r8   gư>r   )rtolatolgh㈵>gMbP?)r   rw   r(   float64r   rx   float32r   intercept_hidden_intercept_visible_rW   
h_samples_)X_64rbm_64Xt_64X_32rbm_32Xt_32r!   r!   r"   "test_convergence_dtype_consistency   s   

r   methodr   r-   c                 C   sD   d}t |d}t|| t | }dd t|D }t|| dS )z1Check `get_feature_names_out` for `BernoulliRBM`.r   )r   c                 S   s   g | ]}d | qS )bernoullirbmr!   rH   r!   r!   r"   rL      s    z*test_feature_names_out.<locals>.<listcomp>N)r   getattrr   get_feature_names_outr,   r   )r   r   r    namesexpected_namesr!   r!   r"   test_feature_names_out   s   
r   ),rs   rn   ior   numpyr(   pytestsklearn.datasetsr   sklearn.neural_networkr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   r	   r
   sklearn.utils.validationr   r   _minr^   r#   r3   r>   markparametrizerA   rE   rR   rZ   ra   rl   rq   rv   r   r   r'   r~   r   r   r!   r!   r!   r"   <module>   sJ    






