o
    tBht5                     @   s<  d 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mZmZmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZ ej d!dd	d
Z"ej d!dd	dZ#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 rqe%'ed!e&d" qee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 Z/ej()d#d3d' e%D d4d5 Z0ej()d#e%d6d7 Z1d8d9 Z2d:d; Z3ej()d#e%d<d= Z4ej()d#e%d>d? Z5d@dA Z6ej()d#e%dBdC Z7ej()d#e%dDdE Z8ej()d#e%dFdG Z9dHdI Z:dS )Jz+Testing for kernels for Gaussian processes.    N)	signature)_approx_fprime)PAIRWISE_KERNEL_FUNCTIONSeuclidean_distancespairwise_kernels)RBFMaternRationalQuadraticExpSineSquared
DotProductConstantKernelWhiteKernelPairwiseKernelKernelOperatorExponentiationCompoundKernel)clone)assert_almost_equalassert_array_equalassert_array_almost_equalassert_allclosefails_if_pypy   )      )   r          @length_scale      @noise_level)      ?r   )length_scale_boundsg      $@)constant_valuegQ?fixed)r   r#   r"   )r   nu      ?      @      @)r   alpha)r   periodicity)sigma_0r   )additive_chi2chi2      ?)gammametrickernelc                    s    t dd\}}|jd t jd ksJ |jd t jd ks J |jd  jjd ks-J  fdd}t j|d}t||d	 d S )
NTeval_gradientr   r   r   c                    s     | }|tdd}|S )NFr3   )clone_with_thetaX)thetakernel_cloneKr2    /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/gaussian_process/tests/test_kernels.pyeval_kernel_for_thetaT   s   
z3test_kernel_gradient.<locals>.eval_kernel_for_theta绽|=   )r6   shaper7   r   r   )r2   r9   
K_gradientr=   K_gradient_approxr;   r:   r<   test_kernel_gradientJ   s   rC   c                 C   s   g | ]}t |ttfs|qS r;   )
isinstancer   r   .0r2   r;   r;   r<   
<listcomp>`   s    rG   c                 C   s,  | j }| tdd\}}t| jjj }dd |D }tdd tdd |}t	dd	 | j
D t	|ks7J t| j
D ]\}}|| tt| |jksOJ q<t| j
D ]\}}|  }	d
|	|jd < | j}
|
di |	}|tdd\}}|jd |j jd d ksJ |jd |jd d ksJ |dkr|d | |j d | ksJ 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  qUt| j
D ])\}}td||< || _ tt| |jd t| |jd t| j | td qd S )NTr3   c                 S   s   g | ]
}|j d kr|j qS )selfname)rF   pr;   r;   r<   rG   n   s    z%test_kernel_theta.<locals>.<listcomp>c                 S   s   | dt d  S )Nr   _bounds)lensr;   r;   r<   <lambda>p   s    z#test_kernel_theta.<locals>.<lambda>c                 S   s
   |  dS )NrL   )endswithrN   r;   r;   r<   rP   p   s   
 c                 s   s    | ]}|j V  qd S NrI   )rF   hyperparameterr;   r;   r<   	<genexpr>r   s    z$test_kernel_theta.<locals>.<genexpr>r%   rL   r   r   r   .*   +   r;   )r7   r6   r   	__class____init__
parametersvaluesmapfiltersethyperparameters	enumeratenploggetattrrJ   
get_paramsr@   r   rM   r   setattr)r2   r7   _rA   	init_signargs
theta_varsirS   paramskernel_class
new_kernelK_gradient_newr;   r;   r<   test_kernel_theta^   sD   
 ""&rn   c                 C   s   g | ]}|t kr|qS r;   )kernel_rbf_plus_whiterE   r;   r;   r<   rG      s
    c                 C   s"   | t }| t t }t||d d S Nr   )r6   r   )r2   K_autoK_crossr;   r;   r<   test_auto_vs_cross   s   
rs   c                 C   s(   t | t}| t}t||d d S rp   )r`   diagr6   r   )r2   K_call_diagK_diagr;   r;   r<   test_kernel_diag   s   
rw   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   r6   r;   r;   r;   r<    test_kernel_operator_commutative   s   "&rx   c                  C   s   dt ddg } | t}tt}|d d df  d9  < dt d| }t|| 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   r?   r   r   )g      @r/   r)   r/   r)   )
r   r6   r`   arrayr   r7   ra   r   k2r   )r2   r9   X1K1X2K2r;   r;   r<   test_kernel_anisotropic   s   



r   c                 C   s   g | ]}|  r|qS r;   )is_stationaryrE   r;   r;   r<   rG      s    c                 C   s&   | t t d }t|d t| d S )Nr   )r   r   )r6   r   r`   rt   )r2   r9   r;   r;   r<   test_kernel_stationary   s   r   c                 C   sH   t | tr| j| jjksJ t | tr | j| jjp| jjks"J d S d S rR   )rD   r   requires_vector_inputr2   r   k1rz   r:   r;   r;   r<   test_kernel_input_type   s   

r   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   r   r   r:   r;   r;   r<   test_compound_kernel_input_type   s   
r   c                 C   sH   t t| t| D ]}|dr!t| |}t||}||ks!J q
d S )Nhyperparameter_)r]   dir
startswithrb   )kernel1kernel2attrattr_value1attr_value2r;   r;   r<   check_hyperparameters_equal   s   


r   c                 C   sJ   t | }| |ks
J t| t|ksJ |  | ksJ t| | d S rR   )r   idrc   r   )r2   kernel_clonedr;   r;   r<   test_kernel_clone   s
   r   c                 C   s   d}t | }|  }ttf}d|v r_t| |sa|d }t|r+|d |d< ||d< n|gd |d< |d |d< |jdi | t |}| | ksNJ t|t|ksXJ t	|| d S d S d S )N)gh㈵>g     j@r   r   r#   r   r;   )
r   rc   r
   r	   rD   r`   iterable
set_paramsr   r   )r2   boundsr   rj   isotropic_kernelsr   kernel_cloned_cloner;   r;   r<   "test_kernel_clone_after_set_params  s"   

r   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 ]}t |ddt}t || ddt}t|| qLd}t |ddt}t	ddt}t||dd d S )Nr'   r/   )r&   r   r   F)squaredr"   r   r>   )r"   r'   r(   d   r   )decimal)r   r6   r   r`   rt   onesr@   expr   r   infr   )r9   K_absexpK_rbftinyr&   r|   r~   larger;   r;   r<   test_matern_kernel!  s$   


r   c                 C   sL   | t kr| t}tt| d}t|| | tt}ttt| d}t|| d S )N)r1   )ro   r6   r   r   Y)r2   r|   r~   r;   r;   r<   test_kernel_versus_pairwise>  s   

r   c                 C   sT  d}|   }| jD ]@}tdt|jr|jdkrq	|j}|dkr7tt| j	|||  ||j
  ||7 }q	tt| j	| ||j
  |d7 }q	d}d}| jD ]V}tdt|jra|jdkraqQ|j}|dkr| jdi |j
|g| i tt| j	|||  |g|  ||7 }qQ| jdi |j
|i tt| j	| | |d7 }qQd S )Nr   stringr%   r   
   r;   )rc   r^   rD   typer   
n_elementsr   r`   r   r7   rJ   r   )r2   indexrj   rS   sizevaluer;   r;   r<   test_set_get_paramsP  sB   







r   c                 C   s   t |  d S rR   )reprr:   r;   r;   r<   test_repr_kernelsz  s   r   c                  C   sN   t ddgd} d}tjt|d | t W d    d S 1 s w   Y  d S )Nr/   r   zeRationalQuadratic kernel only supports isotropic version, please use a single scalar for length_scale)match)r	   pytestraisesAttributeErrorr6   )r2   messager;   r;   r<   test_rational_quadratic_kernel  s   
"r   );__doc__r   numpyr`   inspectr    sklearn.gaussian_process.kernelsr   sklearn.metrics.pairwiser   r   r   r   r   r	   r
   r   r   r   r   r   r   r   sklearn.baser   sklearn.utils._testingr   r   r   r   r   randomRandomStatenormalr6   r   ro   kernelsr1   appendmarkparametrizerC   rn   rs   rw   rx   r   r   r   r   r   r   r   r   r   r   r   r   r;   r;   r;   r<   <module>   s    4	




	1
	
	


	



)
