o
    ×tBh…%  ã                   @   sX  d dl Zd dlZd dlmZ d dlmZmZm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 d d	lmZ d dlZd
d„ Zdd„ Zej dg d¢¡ej dg d¢¡dd„ ƒƒZd1dd„Zej dg d¢¡ej dg d¢¡dd„ ƒƒZd1dd„Zd d!„ Zd"d#„ Zd$d%„ Z d&d'„ Z!ej d(dg d)¢g¡d*d+„ ƒZ"ej d,d-d.g¡d/d0„ ƒZ#dS )2é    N)Úassert_allclose)ÚKernelDensityÚKDTreeÚNearestNeighbors)Úkernel_norm)Úmake_pipeline)Ú
make_blobs)ÚGridSearchCV)ÚStandardScaler)ÚNotFittedErrorc                 C   s<  t  | d d …d d d …f | d  d¡¡}t||jd |ƒ|jd  }|dkr9|t  d||  ||  ¡ d¡ S |dkrF|||k  d¡ S |dkr]|d	|| ||   ||k   d¡ S |d
krn|t  | | ¡ d¡ S |dkr|d||  ||k   d¡ S |dkrš|t  dt j | | ¡||k   d¡ S tdƒ‚)Né   éÿÿÿÿé   r   Úgaussiang      à¿ÚtophatÚepanechnikovç      ð?ÚexponentialÚlinearÚcosineg      à?zkernel not recognized)	ÚnpÚsqrtÚsumr   ÚshapeÚexpÚcosÚpiÚ
ValueError)ÚYÚXÚkernelÚhÚdÚnorm© r$   úw/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/neighbors/tests/test_kde.pyÚcompute_kernel_slow   s   *$&*r&   c           	      C   sh   t | |||d}| |¡ |¡}tt |¡||td|ƒd tt | |¡¡t |¡|td|ƒd d S )N)r    Ú	bandwidthÚatolÚrtolgH¯¼šò×z>)r(   r)   )	r   ÚfitÚscore_samplesr   r   r   ÚmaxÚscoreÚprod)	r    r'   r(   r)   r   r   Ú	dens_trueÚkdeÚlog_densr$   r$   r%   Úcheck_results%   s    
ÿr2   r    )r   r   r   r   r   r   r'   )ç{®Gáz„?çš™™™™™¹?r   c                 C   sp   d\}}t j d¡}| ||¡}| ||¡}t||| |ƒ}dD ]}dD ]}	dD ]}
t| ||	||||ƒ q'q#qd S )N©éd   é   r   )r   gñhãˆµøä>)gíµ ÷Æ°>r3   )TF)r   ÚrandomÚRandomStateÚrandnr&   r2   )r    r'   Ú	n_samplesÚ
n_featuresÚrngr   r   r/   r)   r(   Úbreadth_firstr$   r$   r%   Útest_kernel_density.   s   ÿÿÿr?   r6   r7   c              	   C   s0  t j d¡}| | |¡}d}dD ]F}t||d |¡}| d¡}|j|jks(J ‚tdd |¡}|j	|dd	\}	}
|d
krGt  
|	|k ¡sFJ ‚q|dkrVt  
|	d| k ¡sVJ ‚qdD ]%}t||d |¡}t t¡ | d¡ W d   ƒ n1 syw   Y  qY| dd¡}tdd |¡}| ¡ jdks–J ‚d S )Nr   çš™™™™™É?)r   r   )r'   r    r6   r   )Ún_neighborsT)Úreturn_distancer   r   é   )r   r   r   r   é   ©r    )r   r   )r   r8   r9   r:   r   r*   Úsampler   r   Ú
kneighborsÚallÚpytestÚraisesÚNotImplementedError)r;   r<   r=   r   r'   r    r0   ÚsampÚnbrsÚdistÚindr$   r$   r%   Útest_kernel_density_samplingA   s.   
€ÿ€rP   Ú	algorithm©ÚautoÚ	ball_treeÚkd_treeÚmetric)Ú	euclideanÚ	minkowskiÚ	manhattanÚ	chebyshevÚ	haversinec                 C   s¬   t j d¡}| dd¡}| dd¡}t| |d}| dkr>|tjvr>t t	¡ | 
|¡ W d   ƒ d S 1 s7w   Y  d S | 
|¡ | |¡}|j|jd d… ksTJ ‚d S )Nr   é
   r   ©rQ   rV   rU   r   )r   r8   r9   r:   r   r   Úvalid_metricsrI   rJ   r   r*   r+   r   )rQ   rV   r=   r   r   r0   Úy_densr$   r$   r%   Ú test_kde_algorithm_metric_choiced   s   "ÿ

r`   c                 C   s   d S )Nr$   )r;   r<   r$   r$   r%   Útest_kde_scorey   s   ra   c                  C   sÎ  t j d¡} t t¡ tdd | ¡ W d   ƒ n1 sw   Y  t t¡ tdd | ¡ W d   ƒ n1 s;w   Y  t t¡ tdd | ¡ W d   ƒ n1 sXw   Y  t t¡ tdd | ¡ W d   ƒ n1 suw   Y  t t¡ tddd	 | ¡ W d   ƒ n1 s“w   Y  tƒ }t t¡ |jt j d¡t j d¡d
 W d   ƒ n1 sºw   Y  t t¡ |jt j d¡t j d¡ d
 W d   ƒ d S 1 sàw   Y  d S )N)éÈ   r\   Úblah)rQ   r   )r'   rE   )rV   rU   r]   ©Úsample_weightrb   )r   r8   rI   rJ   r   r   r*   )r   r0   r$   r$   r%   Útest_kde_badargs   s.   ÿÿÿÿÿ ÿ""ÿrf   c                  C   sv   t ddddgddgddggd\} }ttdddtddƒ}tg d	¢d
}t||d}| | ¡ |jd dks9J ‚d S )Nr4   r   r   )Úcluster_stdÚrandom_stateÚcentersF)Ú	with_meanÚwith_stdr   rE   )çü©ñÒMbP?r3   r4   r   r\   )Úkerneldensity__bandwidth)Ú
param_gridrm   )r   r   r
   r   Údictr	   r*   Úbest_params_)r   Ú_Úpipe1ÚparamsÚsearchr$   r$   r%   Útest_kde_pipeline_gridsearch”   s   $
þ
ru   c               	   C   sª  d} d}t  | d¡}dD ]Æ}t j d¡}| | |¡}dd|jdd  t j¡ }t j||dd}|| }| ||¡}	d	D ]•}
d
D ]}|
dksK|t	j
v rÐt|
|d}|j||d | |	¡}|jdd}| |¡ | |	¡}|jdd}t||ƒ t||ƒ |j||d | |	¡}|jdd}| |¡ | |	¡}|jdd}t||ƒ t||ƒ t  t  || ¡¡}|dks¹J ‚| ¡ }|j||| d | |	¡}t||ƒ q@q<qd S )Ni  é   ç      @)r   r   r\   r   r   r\   )ÚaxisrR   )rW   rX   rY   rZ   rU   r]   rd   iÒ  )rh   rl   )r   Úfullr8   r9   Úrandr   ÚastypeÚint8Úrepeatr   r^   r   r*   r+   rF   r   r,   Úabs)r;   Ú	size_testÚweights_neutralr"   r=   r   ÚweightsÚX_repetitionsÚn_samples_testÚtest_pointsrQ   rV   r0   Úscores_const_weightÚsample_const_weightÚscores_no_weightÚsample_no_weightÚscores_weightre   Úscores_ref_samplingÚsample_ref_samplingÚdiffÚscale_factorÚscores_scaled_weightr$   r$   r%   Útest_kde_sample_weights¡   sP   











€àÿùr   c                  C   sd   t ƒ } t g d¢d¡}g d¢}d}tjt|d | j||d W d   ƒ d S 1 s+w   Y  d S )N©r   g       @rw   ©r   r   )r4   gš™™™™™É¿ç333333Ó?z1Negative values in data passed to `sample_weight`)Úmatchrd   )r   r   ÚreshaperI   rJ   r   r*   )r0   Údatare   Úexpected_errr$   r$   r%   Útest_sample_weight_invalidÐ   s   "ÿr—   re   )r4   r@   r’   c                 C   sz   t ƒ }t g d¢d¡}|j||d t ddgd¡}| |¡}t|  d¡ƒ}t ||¡ t 	|¡}| |¡}t
||ƒ d S )Nr   r‘   rd   gš™™™™™ñ?gÍÌÌÌÌÌ @zdump.pkl)r   r   r”   r*   r+   ÚstrÚjoinÚjoblibÚdumpÚloadr   )Útmpdirre   r0   r•   r   ÚscoresÚ	file_pathÚscores_pickledr$   r$   r%   Útest_picklingÛ   s   


r¡   Úmethodr+   rF   c                 C   s\   t j d¡}| dd¡}tƒ }t t¡ t|| ƒ|ƒ W d   ƒ d S 1 s'w   Y  d S )Nr   r\   r   )	r   r8   r9   r:   r   rI   rJ   r   Úgetattr)r¢   r=   r   r0   r$   r$   r%   Útest_check_is_fittedð   s   "ÿr¤   r5   )$Únumpyr   rI   Úsklearn.utils._testingr   Úsklearn.neighborsr   r   r   Úsklearn.neighbors._ball_treer   Úsklearn.pipeliner   Úsklearn.datasetsr   Úsklearn.model_selectionr	   Úsklearn.preprocessingr
   Úsklearn.exceptionsr   rš   r&   r2   ÚmarkÚparametrizer?   rP   r`   ra   rf   ru   r   r—   r¡   r¤   r$   r$   r$   r%   Ú<module>   sB    	ÿ
#ÿ
/
