o
    Ó\i&  ã                   @   sj  d dl 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mZ d dlmZ d dlmZ d dlmZ d d	lmZ d
d„ Zdd„ Zej dg d¢¡ej dg d¢¡dd„ ƒƒZd2dd„Zej dg d¢¡ej dg d¢¡dd„ ƒƒZd2d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-d.„ ƒZ"ej dg d/¢¡d0d1„ ƒZ#dS )3é    N)Ú
make_blobs)ÚNotFittedError)ÚGridSearchCV)ÚKDTreeÚKernelDensityÚNearestNeighbors)Úkernel_norm)Úmake_pipeline)ÚStandardScaler)Úassert_allclosec                 C   s˜  |dkr|j d d|j d d   }n|dkr.|j d |j d d  d d|j d d   }t | d d …d d d …f | d  d¡¡}t||j d |ƒ|j d  }|dkrg|t d	||  ||  ¡ d¡ S |d
krt|||k  d¡ S |dkr‹|d|| ||   ||k   d¡ S |dkrœ|t | | ¡ d¡ S |dkr¯|d||  ||k   d¡ S |dkrÈ|t dtj | | ¡||k   d¡ S tdƒ‚)NÚscottr   éÿÿÿÿé   é   Ú	silvermané   Úgaussiang      à¿ÚtophatÚepanechnikovç      ð?ÚexponentialÚlinearÚcosineg      à?zkernel not recognized)	ÚshapeÚnpÚsqrtÚsumr   ÚexpÚcosÚpiÚ
ValueError)ÚYÚXÚkernelÚhÚdÚnorm© r'   ú/var/www/www-root/data/www/176.119.141.140/sports-predictor/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    
ÿr5   r#   )r   r   r   r   r   r   r*   )ç{®Gáz„?çš™™™™™¹?r   r   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íµ ÷Æ°>r6   )TF)r   ÚrandomÚRandomStateÚrandnr)   r5   )r#   r*   Ú	n_samplesÚ
n_featuresÚrngr"   r!   r2   r,   r+   Úbreadth_firstr'   r'   r(   Útest_kernel_density2   s   ÿÿÿrB   r9   r:   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#   r9   r   )Ún_neighborsT)Úreturn_distancer   r   é   )r   r   r   r   r   ©r#   )r   r   )r   r;   r<   r=   r   r-   Úsampler   r   Ú
kneighborsÚallÚpytestÚraisesÚNotImplementedError)r>   r?   r@   r"   r*   r#   r3   ÚsampÚnbrsÚdistÚindr'   r'   r(   Útest_kernel_density_samplingE   s.   
€ÿ€rR   Ú	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jt	dd | 
|¡ W d   ƒ d S 1 s9w   Y  d S | 
|¡ | |¡}|j|jd d… ksVJ ‚d S )	Nr   é
   r   ©rS   rX   rW   zinvalid metric)Úmatchr   )r   r;   r<   r=   r   r   Úvalid_metricsrK   rL   r    r-   r.   r   )rS   rX   r@   r"   r!   r3   Úy_densr'   r'   r(   Ú test_kde_algorithm_metric_choiceh   s   "ÿ

rc   c                 C   s   d S )Nr'   )r>   r?   r'   r'   r(   Útest_kde_score}   s   rd   c                  C   sž   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 sHw   Y  d S )N)éÈ   r^   ©Úsample_weightre   )r   rK   rL   r    r-   r   r;   )r3   r'   r'   r(   Útest_kde_sample_weights_error…   s    ÿ""ÿrh   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 )Nr7   r   r   )Úcluster_stdÚrandom_stateÚcentersF)Ú	with_meanÚwith_stdr   rG   )çü©ñÒMbP?r6   r7   r   r^   )Úkerneldensity__bandwidth)Ú
param_gridro   )r   r	   r
   r   Údictr   r-   Úbest_params_)r"   Ú_Úpipe1ÚparamsÚsearchr'   r'   r(   Útest_kde_pipeline_gridsearch   s   $
þ
rw   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^   )ÚaxisrT   )rY   rZ   r[   r\   rW   r_   rf   iÒ  )rj   rn   )r   Úfullr;   r<   Úrandr   ÚastypeÚint8Úrepeatr   ra   r   r-   r.   rH   r   r/   Úabs)r>   Ú	size_testÚweights_neutralr%   r@   r"   ÚweightsÚX_repetitionsÚn_samples_testÚtest_pointsrS   rX   r3   Úscores_const_weightÚsample_const_weightÚscores_no_weightÚsample_no_weightÚscores_weightrg   Úscores_ref_samplingÚsample_ref_samplingÚdiffÚscale_factorÚscores_scaled_weightr'   r'   r(   Útest_kde_sample_weightsš   sP   











€àÿùr‘   rg   )r7   rC   g333333Ó?c                 C   sz   t ƒ }t g d¢d¡}|j||d t ddgd¡}| |¡}t|  d¡ƒ}t ||¡ t 	|¡}| |¡}t
||ƒ d S )N)r   g       @ry   )r   r   rf   gš™™™™™ñ?gÍÌÌÌÌÌ @zdump.pkl)r   r   Úreshaper-   r.   ÚstrÚjoinÚjoblibÚdumpÚloadr   )Útmpdirrg   r3   Údatar"   ÚscoresÚ	file_pathÚscores_pickledr'   r'   r(   Útest_picklingÉ   s   


r   Úmethodr.   rH   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   r;   r<   r=   r   rK   rL   r   Úgetattr)rž   r@   r"   r3   r'   r'   r(   Útest_check_is_fittedÞ   s   "ÿr    )r   r   r7   c           	      C   sÞ   d\}}t j d¡}| ||¡}t| d |¡}| d¡}| |¡}|j|jks*J ‚|j|fks2J ‚| dkrE|jd d|jd d   }n| d	kra|jd |jd d
  d d|jd d   }n| }|j	t
 |¡ksmJ ‚d S )Nr8   r   )r*   r9   r   r   r   r   r   r   )r   r;   r<   r=   r   r-   rH   r.   r   Ú
bandwidth_rK   Úapprox)	r*   r>   r?   r@   r"   r3   rN   Úkde_scr$   r'   r'   r(   Útest_bandwidthê   s   

0r¤   r8   )$r•   Únumpyr   rK   Úsklearn.datasetsr   Úsklearn.exceptionsr   Úsklearn.model_selectionr   Úsklearn.neighborsr   r   r   Úsklearn.neighbors._ball_treer   Úsklearn.pipeliner	   Úsklearn.preprocessingr
   Úsklearn.utils._testingr   r)   r5   ÚmarkÚparametrizerB   rR   rc   rd   rh   rw   r‘   r   r    r¤   r'   r'   r'   r(   Ú<module>   sD    	ÿ
#ÿ
/

