
    Ug5                     b   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" e	d           ed          z   Z# e	d           e	d           ed          d e	dd          z  d e	d          z  e#d e	ddg          z  d edd          z  d edd          z  d edd          z  d edd          z  d eddgd          z  d eddgd          z  d eddgd          z   edd           edd           ed           ed          dz   e	dg           edg          gZ$eD ]'Z%e%dv re$&                     ed e%!                     (ej'        (                    d"e$          d#             Z)ej'        (                    d"d$ e$D                       d%             Z*ej'        (                    d"d& e$D                       d'             Z+ej'        (                    d"e$          d(             Z,d) Z-d* Z.ej'        (                    d"d+ e$D                       d,             Z/ej'        (                    d"e$          d-             Z0d. Z1d/ Z2ej'        (                    d"e$          d0             Z3ej'        (                    d"e$          d1             Z4d2 Z5ej'        (                    d"e$          d3             Z6ej'        (                    d"e$          d4             Z7ej'        (                    d"e$          d5             Z8d6 Z9dS )7z+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          @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                 \      t           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}t           j        |d          }t	          ||d           d S )	NTeval_gradientr   r   r   c                 V                         |           } |t          d          }|S )NFr4   )clone_with_thetaX)thetakernel_cloneKr2   s      j/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/gaussian_process/tests/test_kernels.pyeval_kernel_for_thetaz3test_kernel_gradient.<locals>.eval_kernel_for_thetaO   s/    ..u55L%000    绽|=   )r8   shaper9   r   r   )r2   r;   
K_gradientr=   K_gradient_approxs   `    r<   test_kernel_gradientrD   F   s     F1D111MAzA!'!*,,,,A!'!*,,,,A&,"4Q"77777    
 'v|5JERR
$5q99999r>   c                 J    g | ] }t          |t          t          f          |!S  )
isinstancer   r	   .0r2   s     r<   
<listcomp>rJ   [   s=       6NN#CDD	  r>   c                    | j         } | t          d          \  }}t          | j        j                  j                                        }d |D             }t          d t          d |                    }t          d | j
        D                       t          |          k    sJ t          | j
                  D ]8\  }}||         t          j        t          | |j                            k    sJ 9t          | j
                  D ];\  }}|                                 }	d|	|j        dz   <   | j        }
 |
di |	} |t          d          \  }}|j        d	         |j         j        d	         d
z   k    sJ |j        d         |j        d         d
z   k    sJ |d	k    rA|d |         |j         d |         k    sJ t%          |dd |f         |dd |f                    |d
z   t'          | j
                  k     rG||d
z   d          |j         |d          k    sJ t%          |d|d
z   d f         |d|d f                    =t          | j
                  D ]\  }}t          j        d          ||<   || _         t)          t          | |j                  d           t+          | |j        d           t)          | j         |         t          j        d                     d S )NTr4   c                 2    g | ]}|j         d k    |j         S )selfname)rI   ps     r<   rJ   z%test_kernel_theta.<locals>.<listcomp>i   s&    :::q6)9)9AF)9)9)9r>   c                 2    | dt          d                    S )Nr   _bounds)lenss    r<   <lambda>z#test_kernel_theta.<locals>.<lambda>k   s    !AY'( r>   c                 ,    |                      d          S )NrR   )endswithrT   s    r<   rV   z#test_kernel_theta.<locals>.<lambda>k   s    1::i;P;P r>   c              3   $   K   | ]}|j         V  d S NrN   )rI   hyperparameters     r<   	<genexpr>z$test_kernel_theta.<locals>.<genexpr>m   s%      PP~~"PPPPPPr>   r%   rR   r   r   r   .*   +   rF   )r9   r8   r   	__class____init__
parametersvaluesmapfiltersethyperparameters	enumeratenploggetattrrO   
get_paramsrA   r   rS   r   setattr)r2   r9   _rB   	init_signargs
theta_varsir[   paramskernel_class
new_kernelK_gradient_news                r<   test_kernel_thetarv   Y   sB    LEF1D111MAz &*344?FFHHI::I:::D((&1P1PRV*W*W J PP9OPPPPPTWU U     'v'=>> H H>Qx26'&.2E"F"FGGGGGGG 'v'=>> R R>""$$29~"Y./'!\++F++
 'Jq===>{1~!1!7!:Q!>>>>>"n&:1&=&AAAAAq55!9
 0! 44444z#rr'2N374KLLLq53v-....Q>Z%5abb%99999z#q1uww,7QRR9PQQQ 'v'=>> 9 9>6"::aGFN,?@@"EEE+R000FLORVBZZ88889 9r>   c                 (    g | ]}|t           k    |S rF   )kernel_rbf_plus_whiterH   s     r<   rJ   rJ      s0       *** 	 +**r>   c                 t     | t                     } | t           t                     }t          ||d           d S Nr   )r8   r   )r2   K_autoK_crosss      r<   test_auto_vs_crossr}      s8     VAYYFfQllG+++++r>   c                     t          j         | t                              }|                     t                    }t          ||d           d S rz   )rh   diagr8   r   )r2   K_call_diagK_diags      r<   test_kernel_diagr      sB     '&&))$$K[[^^FVQ/////r>   c                  6   t           t          d          dz   t                     dt          d          z   t                               t           dt          d          z  t                     t          d          dz  t                               d S )Nr   r/   r   )r   r   r8   rF   r>   r<    test_kernel_operator_commutativer      s|     SC++ncCHHna-@-@AAA s3xx++nc#hhna-@-@AAAAAr>   c                  z   dt          ddg          z  }  | t                    }t          j        t                    }|d d dfxx         dz  cc<   d t          d          |          z  }t	          ||           t          j        t                    }|d d dfxx         dz  cc<   d t          d          |          z  }t	          ||           | j        t          j        d          z   | _        t          | j        t          j        g d                     t          | j        j	        d	d
g           d S )Nr   r"   r   r   r@   r   r   )g      @r/   r)   r/   r)   )
r   r8   rh   arrayr   r9   ri   r   k2r   )r2   r;   X1K1X2K2s         r<   test_kernel_anisotropicr      s   3Sz??"Fq		A	!Bqqq!tHHHMHHH	xs3xx||	B2	!Bqqq!tHHHMHHH	xs3xx||	B2 <"&))+FLv|RVOOO%<%<===vy-Sz:::::r>   c                 :    g | ]}|                                 |S rF   )is_stationaryrH   s     r<   rJ   rJ      s)    FFF&v/C/C/E/EFvFFFr>   c                      | t           t           dz             }t          |d         t          j        |                     d S )Nr   )r   r   )r8   r   rh   r   )r2   r;   s     r<   test_kernel_stationaryr      s;    
 	q!a%A$,,,,,r>   c                     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 rZ   )rG   r	   requires_vector_inputr2   r   k1r   r2   s    r<   test_kernel_input_typer      s     &.)) S+v}/RRRRR&.)) 
+I+Nvy/N
 
 
 

 

 
r>   c                      t          t          d          g          } | j        rJ t          t          d          t          d          g          } | j        sJ d S )Nr   r    r   r   )r   r   r   r   r   s    r<   test_compound_kernel_input_typer      si    [S999:;;F++++[S9993C;P;P;PQRRF''''''r>   c                     t          t          |           t          |          z             D ]?}|                    d          r(t          | |          }t          ||          }||k    sJ @d S )Nhyperparameter_)re   dir
startswithrj   )kernel1kernel2attrattr_value1attr_value2s        r<   check_hyperparameters_equalr      sy    CLL3w<</00 . .??,-- 	.!'400K!'400K+----	. .r>   c                     t          |           }| |k    sJ t          |           t          |          k    sJ |                                 |                                k    sJ t          | |           d S rZ   )r   idrk   r   )r2   kernel_cloneds     r<   test_kernel_cloner      s     &MMM ]""""f::M****** -":":"<"<<<<<  66666r>   c                    d}t          |           }|                                 }t          t          f}d|v rt	          | |          s|d         }t          j        |          r|d         |d<   ||d<   n|gdz  |d<   |dz  |d<    |j        di | t          |          }|                                |                                k    sJ t          |          t          |          k    sJ t          ||           d S d S d S )N)gh㈵>g     j@r   r   r#   r   rF   )
r   rk   r
   r   rG   rh   iterable
set_paramsr   r   )r2   boundsr   rr   isotropic_kernelsr   kernel_cloned_clones          r<   "test_kernel_clone_after_set_paramsr      s;    F&MMM  F'):;
6;L(M(Mn-;|$$ 	7%1!_F>",2F())&2^a%7F>",2QJF()  **6***#M22"--//=3K3K3M3MMMMM%&&"]*;*;;;;;#M3FGGGGG  r>   c                      t          dd          t                    } t          t          j        |           t          j        t          j        d                              t          j        t          t          t          d                     } t          dd          t                    } t          | |            t          d          t                    } t          t          j
        d          t                    } t          | |           t          | |           d	}d
D ]S} t          |d          t                    } t          ||z   d          t                    }t          ||           Td} t          |d          t                    } t          d          t                    }t          ||d           d S )Nr'   r/   )r&   r   r   F)squaredr"   r   r?   )r"   r'   r(   d   r   )decimal)r   r8   r   rh   r   onesrA   expr   r   infr   )r;   K_absexpK_rbftinyr&   r   r   larges           r<   test_matern_kernelr     s   (#C(((++Abgajj"'!'!**=*=>>>v*1a????@@H(#C(((++Aa***!CS!!!!$$E+"&s+++A..Aa'''Au D * *,Vr,,,Q//3VrDys333A66!"b))))E	+5s	+	+	+A	.	.B	#			q	!	!Bb"a000000r>   c                    | t           k    r6 | t                    }t          t          |           }t          ||            | t          t                    }t          t          t          |           }t          ||           d S )N)r1   )rx   r8   r   r   Y)r2   r   r   s      r<   test_kernel_versus_pairwiser   9  s|    
 &&& VAYYa///!"b))) 
1B	!Qv	.	.	.Bb"%%%%%r>   c           	         d}|                                  }| j        D ]}t          dt          |j                            r|j        dk    r0|j        }|dk    rCt          t          j        | j	        |||z                      ||j
                            ||z  }t          t          j        | j	        |                   ||j
                            |dz  }d}d}| j        D ]}t          dt          |j                            r|j        dk    r0|j        }|dk    rT | j        di |j
        |g|z  i t          t          j        | j	        |||z                      |g|z             ||z  } | j        di |j
        |i t          t          j        | j	        |                   |           |dz  }d S )Nr   stringr%   r   
   rF   )rk   rf   rG   typer   
n_elementsr   rh   r   r9   rO   r   )r2   indexrr   r[   sizevalues         r<   test_set_get_paramsr   K  s   
 E  F 0  h^%: ; ;<< 	$//(!88v|EEDL$89::F>CV<W   TMEEv|E*++VN4G-H   QJEEEE 0  h^%: ; ;<< 	$//(!88FFF!4ugn EFFFv|EEDL$89::UGdN   TMEEF==!4e <===v|E': ; ;UCCCQJEE r>   c                 $    t          |            d S rZ   )reprr   s    r<   test_repr_kernelsr   u  s     	LLLLLr>   c                      t          ddg          } d}t          j        t          |          5   | t                     d d d            d S # 1 swxY w Y   d S )Nr/   r   zeRationalQuadratic kernel only supports isotropic version, please use a single scalar for length_scale)match)r   pytestraisesAttributeErrorr8   )r2   messages     r<   test_rational_quadratic_kernelr   |  s    S#J777F	" 
 
~W	5	5	5  q			                 s   AAA):__doc__inspectr   numpyrh   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normalr8   r   rx   kernelsr1   appendmarkparametrizerD   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rF   r>   r<   <module>r      sQ   1 1
                                                     
            I!##Aq&11I!##Aq&11---0L0L0LL CSCJ'''N$'''##4W
=
=
==##3


##C:
&
&
&&&&d
@
@
@@&&cc
*
*
**&&cc
*
*
**&&cc
*
*
**&&sCjS
1
1
11&&sCjS
1
1
11&&sCjS
1
1
113c222N555JsJsq CcU
F), ( = =F***NN>>F;;;<<<< 7++: : ,+:$     .9 .9 .9b     , , , 7++0 0 ,+0B B B; ; ;* FFGFFF - - - 7++
 
 ,+
( ( (. . . 7++7 7 ,+7  7++H H ,+H81 1 1: 7++& & ,+&" 7++& & ,+&R 7++  ,+    r>   