o
    \i8                     @   s<  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 rqe&(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      @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    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s1J  fdd}t j|d}t||d	 d S )
NTeval_gradientr   r   r   c                    s     | }|tdd}|S )NFr2   )clone_with_thetaX)thetakernel_cloneKr1    /var/www/www-root/data/www/176.119.141.140/sports-predictor/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绽|=   )r   r5   shaper6   r   r   )r1   r8   
K_gradientr<   K_gradient_approxr:   r9   r;   test_kernel_gradientJ   s   rB   c                 C   s   g | ]}t |ttfs|qS r:   )
isinstancer
   r   .0r1   r:   r:   r;   
<listcomp>`   s    rF   c                 C   s4  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s;J t| jD ]\}}|| tt| |jksSJ 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  qYt| jD ])\}}td||< || _tt| |jd t| |jd t| j| td qd S )NTr2   c                 S   s   g | ]
}|j d kr|j qS )selfname)rE   pr:   r:   r;   rF   o   s    z%test_kernel_theta.<locals>.<listcomp>c                 S   s   | dt d  S )Nr   _bounds)lensr:   r:   r;   <lambda>q   s    z#test_kernel_theta.<locals>.<lambda>c                 S   s
   |  dS )NrK   )endswithrM   r:   r:   r;   rO   q   s   
 c                 s   s    | ]}|j V  qd S NrH   )rE   hyperparameterr:   r:   r;   	<genexpr>s   s    z$test_kernel_theta.<locals>.<genexpr>r$   rK   r   r   r   .*   +   r:   )r   r6   r5   r   	__class____init__
parametersvaluesmapfiltersethyperparameters	enumeratenploggetattrrI   
get_paramsr?   r   rL   r   setattr)r1   r6   _r@   	init_signargs
theta_varsirR   paramskernel_class
new_kernelK_gradient_newr:   r:   r;   test_kernel_theta^   sF   
 ""&rm   c                 C   s   g | ]}|t kr|qS r:   )kernel_rbf_plus_whiterD   r:   r:   r;   rF      s
    c                 C   s*   t | } | t}| tt}t||d d S Nr   )r   r5   r   )r1   K_autoK_crossr:   r:   r;   test_auto_vs_cross   s   

rr   c                 C   s0   t | } t| t}| t}t||d d S ro   )r   r_   diagr5   r   )r1   K_call_diagK_diagr:   r:   r;   test_kernel_diag   s   
rv   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   r5   r:   r:   r:   r;    test_kernel_operator_commutative   s   "&rw   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   r>   r   r   )g      @r.   r(   r.   r(   )
r   r5   copyr   r6   r_   r`   r   k2r   )r1   r8   X1K1X2K2r:   r:   r;   test_kernel_anisotropic   s   

r~   c                 C   s   g | ]}|  r|qS r:   )is_stationaryrD   r:   r:   r;   rF      s    c                 C   s.   t | } | ttd }t|d t| d S )Nr   )r   r   )r   r5   r   r_   rs   )r1   r8   r:   r:   r;   test_kernel_stationary   s   r   c                 C   sP   t | } 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 rQ   )r   rC   r   requires_vector_inputr1   r
   k1ry   r9   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   r9   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
startswithra   )kernel1kernel2attrattr_value1attr_value2r:   r:   r;   check_hyperparameters_equal   s   


r   c                 C   sR   t | } t | }| |ksJ t| t|ksJ |  | ks"J t| | d S rQ   )r   idrb   r   )r1   kernel_clonedr:   r:   r;   test_kernel_clone   s   r   c                 C   s   t | } d}t | }|  }ttf}d|v rct| |se|d }t|r/|d |d< ||d< n|gd |d< |d |d< |jdi | t |}| | ksRJ t|t|ks\J t	|| d S d S d S )N)gh㈵>g     j@r   r   r"   r   r:   )
r   rb   r	   r   rC   r_   iterable
set_paramsr   r   )r1   boundsr   ri   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   r5   r   r_   rs   onesr?   expr   r   infr   )r8   K_absexpK_rbftinyr%   r{   r}   larger:   r:   r;   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)r0   )r   rn   r5   r   r   Y)r1   r{   r}   r:   r:   r;   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r;tt	| j
|||  ||j  ||7 }qtt	| j
| ||j  |d7 }qd}d}| jD ]V}tdt|jre|jdkreqU|j}|dkr| jdi |j|g| i tt	| j
|||  |g|  ||7 }qU| jdi |j|i tt	| j
| | |d7 }qUd S )Nr   stringr$   r   
   r:   )r   rb   r]   rC   typer   
n_elementsr   r_   r   r6   rI   r   )r1   indexri   rR   sizevaluer:   r:   r;   test_set_get_paramsX  sD   







r   c                 C   s   t | } t|  d S rQ   )r   reprr9   r:   r:   r;   test_repr_kernels  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AttributeErrorr5   )r1   messager:   r:   r;   test_rational_quadratic_kernel  s   
"r   )<__doc__inspectr   numpyr_   r   sklearn.baser    sklearn.gaussian_process.kernelsr   r   r   r   r   r	   r
   r   r   r   r   r   sklearn.metrics.pairwiser   r   r   sklearn.utils._testingr   r   r   r   randomRandomStatenormalr5   r   flags	writeablern   kernelsr0   appendmarkparametrizerB   rm   rr   rv   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r:   r:   r:   r;   <module>   s    8





	2
	
	

	



*
