
    {Kg5                        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<                  j?                  d      jA                  ddd	      Z!ej<                  j?                  d      jA                  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$jM                   ed e%!             " ejN                  jQ                  d"e$      d#        Z)ejN                  jQ                  d"e$D  cg c]  }  e*| eef      s|  c}       d$        Z+ejN                  jQ                  d"e$D  cg c]	  } | e#k7  r|  c}       d%        Z,ejN                  jQ                  d"e$      d&        Z-d' Z.d( Z/ejN                  jQ                  d"e$D  cg c]  } | ja                         s|  c}       d)        Z1ejN                  jQ                  d"e$      d*        Z2d+ Z3d, Z4ejN                  jQ                  d"e$      d-        Z5ejN                  jQ                  d"e$      d.        Z6d/ Z7ejN                  jQ                  d"e$      d0        Z8ejN                  jQ                  d"e$      d1        Z9ejN                  jQ                  d"e$      d2        Z:d3 Z;yc c} w c c} w c c} w )4z+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                 d      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       y )	NTeval_gradientr   r   r   c                 F    j                  |       } |t        d      }|S )NFr4   )clone_with_thetaX)thetakernel_cloneKr2   s      o/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/gaussian_process/tests/test_kernels.pyeval_kernel_for_thetaz3test_kernel_gradient.<locals>.eval_kernel_for_thetaO   s$    ..u5%0    绽|=   )r8   shaper9   r   r   )r2   r;   
K_gradientr=   K_gradient_approxs   `    r<   test_kernel_gradientrD   F   s     1D1MAzA!''!*,,,A!''!*,,,A&,,"4"4Q"7777
 'v||5JER
$5q9r>   c                    | j                   } | t        d      \  }}t        | j                  j                        j
                  j                         }|D cg c]  }|j                  dk7  s|j                    }}t        d t        d |            }t        d | j                  D              t        |      k(  sJ t        | j                        D ]6  \  }}	||   t        j                  t        | |	j                              k(  r6J  t        | j                        D ](  \  }}	| j!                         }
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	kD  r1|d | |j                   d | k(  sJ t%        |dd |f   |dd |f          |d
z   t'        | j                        k  s||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              y c c}w )NTr4   selfc                      | dt        d        S )Nr   _bounds)lenss    r<   <lambda>z#test_kernel_theta.<locals>.<lambda>k   s    !AY(r>   c                 $    | j                  d      S )NrH   )endswithrJ   s    r<   rL   z#test_kernel_theta.<locals>.<lambda>k   s    1::i;Pr>   c              3   4   K   | ]  }|j                     y wN)name).0hyperparameters     r<   	<genexpr>z$test_kernel_theta.<locals>.<genexpr>m   s     P9O~~""9Os   r%   rH   r   r   r   .*   +    )r9   r8   r   	__class____init__
parametersvaluesrQ   mapfiltersethyperparameters	enumeratenploggetattr
get_paramsrA   r   rI   r   setattr)r2   r9   _rB   	init_signpargs
theta_varsirS   paramskernel_class
new_kernelK_gradient_news                 r<   test_kernel_thetarp   Y   s    LLE1D1MAz &**334??FFHI%:Iq6)9AFFID:(&1PRV*WJ P9O9OPPTWU    'v'='=>>Qx266'&.2E2E"FGGGG ? 'v'='=>>""$29~""Y./''!+F+
 'q=>{{1~!1!1!7!7!:Q!>>>>"n&:&:1&=&AAAAq5!9
 0 0! 4444z#rr'2N374KLq53v--..Q>Z%5%5ab%9999z#q1uw,7QR9PQ! ?& 'v'='=>>66":aGFN,?,?@"E++R0FLLORVVBZ8 ?C ;s   K/.K/c                 X     | t               } | t         t               }t        ||d       y Nr   )r8   r   )r2   K_autoK_crosss      r<   test_auto_vs_crossru      s$     AYFQlG+r>   c                     t        j                   | t                    }| j                  t              }t        ||d       y rr   )ra   diagr8   r   )r2   K_call_diagK_diags      r<   test_kernel_diagrz      s/     ''&)$K[[^FVQ/r>   c                      t         t        d      dz   t               dt        d      z   t                     t         dt        d      z  t               t        d      dz  t                     y )Nr   r/   r   )r   r   r8   rW   r>   r<    test_kernel_operator_commutativer|      sV     SC+ncCHna-@A s3x+nc#hna-@Ar>   c                  L   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       y )Nr   r"   r   r   r@   r   r   )g      @r/   r)   r/   r)   )
r   r8   ra   arrayr   r9   rb   r   k2r   )r2   r;   X1K1X2K2s         r<   test_kernel_anisotropicr      s    3Sz?"Fq	A	!Bq!tHMH	xs3x|	B2	!Bq!tHMH	xs3x|	B2 <<"&&)+FLv||RVVO%<=vyy--Sz:r>   c                 p     | t         t         dz         }t        |d   t        j                  |             y )Nr   )r   r   )r8   r   ra   rw   )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                  xs | j                  j                  k(  sJ y y rP   )
isinstancer	   requires_vector_inputr2   r   k1r   r2   s    r<   test_kernel_input_typer      so     &.)++v}}/R/RRRR&.)++II++Nvyy/N/N
 	
 
 *r>   c                      t        t        d      g      } | j                  rJ t        t        d      t        d      g      } | j                  sJ y )Nr   r    r   r   )r   r   r   r   r   s    r<   test_compound_kernel_input_typer      sK    [S9:;F++++[S93C;PQRF''''r>   c                     t        t        |       t        |      z         D ]3  }|j                  d      st        | |      }t        ||      }||k(  r3J  y )Nhyperparameter_)r^   dir
startswithrc   )kernel1kernel2attrattr_value1attr_value2s        r<   check_hyperparameters_equalr      sQ    CL3w</0??,-!'40K!'40K+---	 1r>   c                     t        |       }| |k(  sJ t        |       t        |      k7  sJ | j                         |j                         k(  sJ t        | |       y rP   )r   idrd   r   )r2   kernel_cloneds     r<   test_kernel_cloner      sb     &MM ]"""f:M**** -":":"<<<<  6r>   c                    d}t        |       }| j                         }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        |      }|j                         |j                         k(  sJ t        |      t        |      k7  sJ t        ||       y y y )N)gh㈵>g     j@r   r   r#   r   rW   )
r   rd   r
   r   r   ra   iterable
set_paramsr   r   )r2   boundsr   rl   isotropic_kernelsr   kernel_cloned_clones          r<   "test_kernel_clone_after_set_paramsr      s     F&MM F'):;
6;L(Mn-;;|$%1!_F>",2F()&2^a%7F>",2QJF()   *6*#M2"--/=3K3K3MMMM%&"]*;;;;#M3FG )N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 ]?  } t        |d      t              } t        ||z   d      t              }t        ||       A d} t        |d      t              } t        d      t              }t        ||d       y )Nr'   r/   )r&   r   r   F)squaredr"   r   r?   )r"   r'   r(   d   r   )decimal)r   r8   r   ra   rw   onesrA   expr   r   infr   )r;   K_absexpK_rbftinyr&   r   r   larges           r<   test_matern_kernelr     s(   (#C(+Abggaj"''!''!**=>vv*1a??@H(#C(+Aa*!CS!!$E+"&&s+A.Aa'Au D,Vr,Q/3VrDys3A6!"b) 
 E	+5s	+A	.B	#	q	!Bb"a0r>   c                     | t         k7  r) | t              }t        t        |       }t        ||        | t        t              }t        t        t        |       }t        ||       y )N)r1   )kernel_rbf_plus_whiter8   r   r   Y)r2   r   r   s      r<   test_kernel_versus_pairwiser   9  sS    
 && AYa/!"b) 
1B	!Qv	.Bb"%r>   c           	         d}| j                         }| j                  D ]  }t        dt        |j                              r|j                  dk(  r2|j
                  }|dkD  rBt        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2|j
                  }|dkD  r[ | 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  } y )Nr   stringr%   r   
   rW   )rd   r_   r   typer   
n_elementsr   ra   r   r9   rQ   r   )r2   indexrl   rS   sizevalues         r<   test_set_get_paramsr   K  s   
 E F 00h^%:%: ;<$$/((!8v||EEDL9:F>CVCV<W TMEv||E*+VN4G4G-H QJE 1  EE 00h^%:%: ;<$$/((!8FF!4!4ugn EFv||EEDL9:UGdN TMEF=!4!4e <=v||E': ;UCQJE 1r>   c                     t        |        y rP   )reprr   s    r<   test_repr_kernelsr   u  s     	Lr>   c                      t        ddg      } d}t        j                  t        |      5   | t               d d d        y # 1 sw Y   y xY w)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7F	" 
 
~W	5q	 
6	5	5s   AA)<__doc__inspectr   numpyra   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   r   kernelsr1   appendmarkparametrizerD   r   rp   ru   rz   r|   r   is_stationaryr   r   r   r   r   r   r   r   r   r   r   r   s   0r<   <module>r      s   1
        
  II!##Aq&1II!##Aq&1-0LL SJ'$'#4W
==#3
#C:
&&&d
@@&cc
**&cc
**&cc
**&sCjS
11&sCjS
11&sCjS
113c25ssq cU
), (F**NN>F;< ( 7+: ,:$  F6NN#CD 	.9.9b  F** 	,, 7+0 ,0B;* GFG&v/C/C/EvGF-- 7+
 ,
(. 7+7 ,7  7+H ,H81: 7+& ,&" 7+& ,&R 7+ ,C	tj Gs   %M=
 N
=N
N
