a
    h8                     @   sB  d Z ddlmZ ddlZddlZddlmZ ddlm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZmZmZmZ ejd ddd	Z!ejd ddd
Z"de!j#_$de"j#_$e	ddedd Z%e	dde	ddeddde	ddd de	dd e%de	ddgd deddd deddd deddd deddd deddgdd deddgdd deddgdd edddedddeddeddd e	dgdedgdgZ&eD ]&Z'e'd v rqe&(ed!e'd" qej)*d#e&d$d% Z+ej)*d#d&d' e&D d(d) Z,ej)*d#d*d' e&D d+d, Z-ej)*d#e&d-d. Z.d/d0 Z/d1d2 Z0ej)*d#d3d' e&D d4d5 Z1ej)*d#e&d6d7 Z2d8d9 Z3d:d; Z4ej)*d#e&d<d= Z5ej)*d#e&d>d? Z6d@dA Z7ej)*d#e&dBdC Z8ej)*d#e&dDdE Z9ej)*d#e&dFdG Z:dHdI Z;dS )Jz+Testing for kernels for Gaussian processes.    )	signatureN)clone)RBFCompoundKernelConstantKernel
DotProductExponentiationExpSineSquaredKernelOperatorMaternPairwiseKernelRationalQuadraticWhiteKernel_approx_fprime)PAIRWISE_KERNEL_FUNCTIONSeuclidean_distancespairwise_kernels)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal   )      )   r   F       @length_scale      @Znoise_level)      ?r   )length_scale_boundsg      $@)Zconstant_valuegQ?fixed)r   r!   r    )r   nu      ?      @      @)r   alpha)r   Zperiodicity)Zsigma_0r   )Zadditive_chi2Zchi2      ?)gammametrickernelc                    s   t    tdd\}}|jd tjd ks0J |jd tjd ksHJ |jd  jjd ksbJ  fdd}t j|d}t||d	 d S )
NTZeval_gradientr   r   r   c                    s     | }|tdd}|S )NFr,   )Zclone_with_thetaX)thetaZkernel_cloneKr+    g/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/gaussian_process/tests/test_kernels.pyeval_kernel_for_thetaT   s    
z3test_kernel_gradient.<locals>.eval_kernel_for_theta绽|=   )r   r-   shaper.   r   r   )r+   r/   
K_gradientr3   ZK_gradient_approxr1   r0   r2   test_kernel_gradientJ   s    r8   c                 C   s   g | ]}t |ttfs|qS r1   )
isinstancer
   r   .0r+   r1   r1   r2   
<listcomp>`   s   r<   c                 C   sB  t | } | j}| tdd\}}t| jjj }dd |D }tdd t	dd |}t
dd	 | jD t
|ksvJ t| jD ]&\}}|| tt| |jksJ qt| jD ](\}}|  }	d
|	|jd < | j}
|
f i |	}|tdd\}}|jd |jjd d ksJ |jd |jd d ks4J |dkr|d | |jd | ks^J t|dd |f |dd |f  |d t| jk r||d d  |j|d  ksJ t|d|d d f |d|d f  qt| jD ]T\}}td||< || _tt| |jd t| |jd t| j| td qd S )NTr,   c                 S   s   g | ]}|j d kr|j qS )selfname)r;   pr1   r1   r2   r<   o       z%test_kernel_theta.<locals>.<listcomp>c                 S   s   | dt d  S )Nr   _bounds)lensr1   r1   r2   <lambda>q   rA   z#test_kernel_theta.<locals>.<lambda>c                 S   s
   |  dS )NrB   )endswithrD   r1   r1   r2   rF   q   rA   c                 s   s   | ]}|j V  qd S Nr>   )r;   hyperparameterr1   r1   r2   	<genexpr>s   rA   z$test_kernel_theta.<locals>.<genexpr>r"   rB   r   r   r   .*   +   )r   r.   r-   r   	__class____init__
parametersvaluesmapfiltersethyperparameters	enumeratenploggetattrr?   
get_paramsr6   r   rC   r   setattr)r+   r.   _r7   Z	init_signargsZ
theta_varsirI   paramsZkernel_classZ
new_kernelZK_gradient_newr1   r1   r2   test_kernel_theta^   sB    
  
 "$(r_   c                 C   s   g | ]}|t kr|qS r1   )kernel_rbf_plus_whiter:   r1   r1   r2   r<      s   c                 C   s*   t | } | t}| tt}t||d d S Nr   )r   r-   r   )r+   ZK_autoZK_crossr1   r1   r2   test_auto_vs_cross   s    

rb   c                 C   s0   t | } t| t}| t}t||d d S ra   )r   rV   diagr-   r   )r+   ZK_call_diagZK_diagr1   r1   r2   test_kernel_diag   s    
rd   c                   C   sH   t tdd tdtd t t dtd ttdd t d S )Nr   r(   r   )r   r   r-   r1   r1   r1   r2    test_kernel_operator_commutative   s    "re   c                  C   s   dt ddg } | t}t }|d d df  d9  < dt d| }t|| t }|d d df  d  < dt d| }t|| | jtd | _t| jtg d t| jj	d	d
g d S )Nr   r    r   r   r5   r   r   )g      @r(   r&   r(   r&   )
r   r-   copyr   r.   rV   rW   r   k2r   )r+   r/   ZX1K1ZX2K2r1   r1   r2   test_kernel_anisotropic   s    

rj   c                 C   s   g | ]}|  r|qS r1   )Zis_stationaryr:   r1   r1   r2   r<      rA   c                 C   s.   t | } | ttd }t|d t| d S )Nr   )r   r   )r   r-   r   rV   rc   )r+   r/   r1   r1   r2   test_kernel_stationary   s    rk   c                 C   sL   t | } t| tr$| j| jjks$J t| trH| j| jjp@| jjksHJ d S rH   )r   r9   r   requires_vector_inputr+   r
   Zk1rg   r0   r1   r1   r2   test_kernel_input_type   s    

rm   c                  C   s@   t tddg} | jrJ t tddtddg} | js<J d S )Nr   r   r   r   )r   r   rl   r   r0   r1   r1   r2   test_compound_kernel_input_type   s    
rn   c                 C   sH   t t| t| D ].}|drt| |}t||}||ksJ qd S )NZhyperparameter_)rS   dir
startswithrX   )Zkernel1Zkernel2attrZattr_value1Zattr_value2r1   r1   r2   check_hyperparameters_equal   s
    


rr   c                 C   sR   t | } t | }| |ksJ t| t|ks0J |  | ksDJ t| | d S rH   )r   idrY   rr   )r+   kernel_clonedr1   r1   r2   test_kernel_clone   s    ru   c                 C   s   t | } d}t | }|  }ttf}d|v rt| |s|d }t|r^|d |d< ||d< n|gd |d< |d |d< |jf i | t |}| | ksJ t|t|ksJ t	|| d S )N)gh㈵>g     j@r   r   r!   r   )
r   rY   r	   r   r9   rV   iterable
set_paramsrs   rr   )r+   boundsrt   r^   Zisotropic_kernelsr   Zkernel_cloned_cloner1   r1   r2   "test_kernel_clone_after_set_params
  s"    

ry   c                  C   s   t dddt} tt| ttjd  ttttdd }t dddt} t| | t	ddt}t tj
ddt} t| | t| | d	}d
D ]2}t |ddt}t || ddt}t|| qd}t |ddt}t	ddt}t||dd d S )Nr$   r(   )r#   r   r   F)Zsquaredr    r   r4   )r    r$   r%   d   r   )decimal)r   r-   r   rV   rc   Zonesr6   expr   r   infr   )r/   ZK_absexpZK_rbfZtinyr#   rh   ri   Zlarger1   r1   r2   test_matern_kernel(  s$    


r~   c                 C   sT   t | } | tkr.| t}tt| d}t|| | tt}ttt| d}t|| d S )N)r*   )r   r`   r-   r   r   Y)r+   rh   ri   r1   r1   r2   test_kernel_versus_pairwiseE  s    

r   c                 C   s^  t | } d}|  }| jD ]}tdt|jr:|jdkr:q|j}|dkrvtt	| j
|||  ||j  ||7 }qtt	| j
| ||j  |d7 }qd}d}| jD ]}tdt|jr|jdkrq|j}|dkr$| jf i |j|g| i tt	| j
|||  |g|  ||7 }q| jf i |j|i tt	| j
| | |d7 }qd S )Nr   stringr"   r   
   )r   rY   rT   r9   typerx   Z
n_elementsr   rV   r|   r.   r?   rw   )r+   indexr^   rI   sizevaluer1   r1   r2   test_set_get_paramsX  sB    







r   c                 C   s   t | } t|  d S rH   )r   reprr0   r1   r1   r2   test_repr_kernels  s    r   c                  C   sL   t ddgd} d}tjt|d | t W d    n1 s>0    Y  d S )Nr(   r   zeRationalQuadratic kernel only supports isotropic version, please use a single scalar for length_scale)match)r   pytestZraisesAttributeErrorr-   )r+   messager1   r1   r2   test_rational_quadratic_kernel  s
    r   )<__doc__inspectr   numpyrV   r   Zsklearn.baser   Z sklearn.gaussian_process.kernelsr   r   r   r   r   r	   r
   r   r   r   r   r   Zsklearn.metrics.pairwiser   r   r   Zsklearn.utils._testingr   r   r   r   randomZRandomStatenormalr-   r   flagsZ	writeabler`   Zkernelsr*   appendmarkZparametrizer8   r_   rb   rd   re   rj   rk   rm   rn   rr   ru   ry   r~   r   r   r   r   r1   r1   r1   r2   <module>   s   8





	
2	

	

	



*
