
    0Ph8                        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           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+ Z0ej)        *                    d#d, e&D                       d-             Z1ej)        *                    d#e&          d.             Z2d/ Z3d0 Z4ej)        *                    d#e&          d1             Z5ej)        *                    d#e&          d2             Z6d3 Z7ej)        *                    d#e&          d4             Z8ej)        *                    d#e&          d5             Z9ej)        *                    d#e&          d6             Z:d7 Z;dS )8z+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                 z    t                        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      k/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/gaussian_process/tests/test_kernels.pyeval_kernel_for_thetaz3test_kernel_gradient.<locals>.eval_kernel_for_thetaT   s/    ..u55L%000    绽|=   )r   r8   shaper9   r   r   )r2   r;   
K_gradientr=   K_gradient_approxs   `    r<   test_kernel_gradientrD   J   s     6]]F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                    t          |           } | 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>o   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>q   s    !AY'( r>   c                 ,    |                      d          S )NrR   )endswithrT   s    r<   rV   z#test_kernel_theta.<locals>.<lambda>q   s    1::i;P;P r>   c              3   $   K   | ]}|j         V  d S NrN   )rI   hyperparameters     r<   	<genexpr>z$test_kernel_theta.<locals>.<genexpr>s   s%      PP~~"PPPPPPr>   r%   rR   r   r   r   .*   +   rF   )r   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   ^   sM    6]]F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   )r   r8   r   )r2   K_autoK_crosss      r<   test_auto_vs_crossr}      sC     6]]FVAYYFfQllG+++++r>   c                     t          |           } t          j         | t                              }|                     t                    }t	          ||d           d S rz   )r   rh   diagr8   r   )r2   K_call_diagK_diags      r<   test_kernel_diagr      sK    6]]F'&&))$$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                                          }|d d dfxx         dz  cc<   d t          d          |          z  }t          ||           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   copyr   r9   rh   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          t          dz             }t          |d         t          j        |                     d S )Nr   )r   r   )r   r8   r   rh   r   )r2   r;   s     r<   test_kernel_stationaryr      sF     6]]Fq!a%A$,,,,,r>   c                     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 rZ   )r   rG   r	   requires_vector_inputr2   r   k1r   r2   s    r<   test_kernel_input_typer      s    6]]F&.)) 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          |           } 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    6]]F&MMM ]""""f::M****** -":":"<"<<<<<  66666r>   c                 *   t          |           } 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   
  sF   6]]F 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          |           } | t          k    r6 | t                    }t          t          |           }t	          ||            | t          t
                    }t          t          t
          |           }t	          ||           d S )N)r1   )r   rx   r8   r   r   Y)r2   r   r   s      r<   test_kernel_versus_pairwiser   E  s    6]]F &&& VAYYa///!"b))) 
1B	!Qv	.	.	.Bb"%%%%%r>   c           	         t          |           } 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   )r   rk   rf   rG   typer   
n_elementsr   rh   r   r9   rO   r   )r2   indexrr   r[   sizevalues         r<   test_set_get_paramsr   X  s   6]]F 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                 B    t          |           } t          |            d S rZ   )r   reprr   s    r<   test_repr_kernelsr     s    6]]F 	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   flags	writeablerx   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      sg   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 /9d     , , , 7++0 0 ,+0B B B; ; ;* FFGFFF - - - 7++
 
 ,+
( ( (. . . 7++7 7 ,+7" 7++H H ,+H:1 1 1: 7++& & ,+&$ 7++' ' ,+'T 7++  ,+    r>   