ó
‡ˆ\c           @   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 d d l m Z d d l m Z m Z m Z m Z m Z e j j d	 ƒ j  d	 d
 d3 ƒ Z! e j j d	 ƒ j  d	 d
 d4 ƒ Z" e d d ƒ e d d ƒ Z# e d d ƒ e d d5 ƒ e d d ƒ d e d d d d ƒ d e d d ƒ e# d e d d d g ƒ d e d d d d ƒ d e d d d d ƒ d e d d d d ƒ d e d d d d ƒ d e d d d g d d ƒ d e d d d g d d ƒ d e d d d g d d ƒ e d d d d ƒ e d d d d ƒ e d d ƒ e d d ƒ d e d d g ƒ e d d g ƒ g Z$ x< e	 D]4 Z% e% d6 k rÈq°n  e$ j& e d! d" d# e% ƒ ƒ q°We j' j( d$ e$ ƒ d% „  ƒ Z) e j' j( d$ g  e$ D]* Z* e+ e* e ƒ p:e+ e* e ƒ se* ^ qƒ d& „  ƒ Z, e j' j( d$ g  e$ D] Z* e* e# k rhe* ^ qhƒ d' „  ƒ Z- e j' j( d$ e$ ƒ d( „  ƒ Z. d) „  Z/ d* „  Z0 e j' j( d$ g  e$ D] Z* e* j1 ƒ  rÕe* ^ qÕƒ d+ „  ƒ Z2 d, „  Z3 e j' j( d$ e$ ƒ d- „  ƒ Z4 e j' j( d$ e$ ƒ d. „  ƒ Z5 d/ „  Z6 e j' j( d$ e$ ƒ d0 „  ƒ Z7 e j' j( d$ e$ ƒ d1 „  ƒ Z8 e j' j( d$ e$ ƒ d2 „  ƒ Z9 d S(7   s+   Testing for kernels for Gaussian processes.iÿÿÿÿN(   t	   signature(   t   _approx_fprime(   t   PAIRWISE_KERNEL_FUNCTIONSt   euclidean_distancest   pairwise_kernels(
   t   RBFt   Maternt   RationalQuadratict   ExpSineSquaredt
   DotProductt   ConstantKernelt   WhiteKernelt   PairwiseKernelt   KernelOperatort   Exponentiation(   t   clone(   t   assert_equalt   assert_almost_equalt   assert_not_equalt   assert_array_equalt   assert_array_almost_equali    i   i   i   i   t   length_scaleg       @t   noise_levelg      @t   length_scale_boundsg      à?t   constant_valueg      $@g…ëQ¸Õ?t   fixedt   nug      ø?g      @g      @t   alphat   periodicityt   sigma_0t   additive_chi2t   chi2t   gammag      ð?t   metrict   kernelc            s¤   ˆ  t  d t ƒ\ } } t | j d t  j d ƒ t | j d t  j d ƒ t | j d ˆ  j j d ƒ ‡  f d †  } t ˆ  j | d ƒ } t | | d ƒ d  S(   Nt   eval_gradienti    i   i   c            s%   ˆ  j  |  ƒ } | t d t ƒ} | S(   NR#   (   t   clone_with_thetat   Xt   False(   t   thetat   kernel_clonet   K(   R"   (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   eval_kernel_for_theta<   s    g»½×Ùß|Û=i   (   R%   t   TrueR   t   shapeR'   R   R   (   R"   R)   t
   K_gradientR*   t   K_gradient_approx(    (   R"   sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_kernel_gradient3   s    c         C   sâ  |  j  } |  t d t ƒ\ } } t |  j j ƒ j j ƒ  } g  | D] } | j d k rC | j ^ qC } t	 d „  t
 d „  | ƒ ƒ } t t d „  |  j Dƒ ƒ t | ƒ ƒ xC t |  j ƒ D]2 \ } }	 t | | t j t |  |	 j ƒ ƒ ƒ q» Wxet |  j ƒ D]T\ } }	 |  j ƒ  }
 d |
 |	 j d <|  j } | |
   } | t d t ƒ\ } } t | j d | j  j d d	 ƒ t | j d
 | j d
 d	 ƒ | d k rìt | |  | j  |  ƒ t | d d  | … f | d d  | … f ƒ n  | d	 t |  j ƒ k  rt | | d	 | j  | ƒ t | d | d	 d  … f | d | d  … f ƒ qqWx‚ t |  j ƒ D]q \ } }	 t j d ƒ | | <| |  _  t t |  |	 j ƒ d ƒ t |  |	 j d ƒ t |  j  | t j d ƒ ƒ qiWd  S(   NR#   t   selfc         S   s   |  d t  d ƒ !S(   Ni    t   _bounds(   t   len(   t   s(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   <lambda>U   s    c         S   s   |  j  d ƒ S(   NR1   (   t   endswith(   R3   (    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyR4   V   s    c         s   s   |  ] } | j  Vq d  S(   N(   t   name(   t   .0t   hyperparameter(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pys	   <genexpr>X   s   R   R1   i    i   i   .i*   i+   (   R'   R%   R+   R    t	   __class__t   __init__t
   parameterst   valuesR6   t   mapt   filterR   t   sett   hyperparameterst	   enumeratet   npt   logt   getattrt
   get_paramsR,   R   R2   R   t   setattr(   R"   R'   t   _R-   t	   init_signt   pt   argst
   theta_varst   iR8   t   paramst   kernel_classt
   new_kernelt   K_gradient_new(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_kernel_thetaG   sF    	+		
 	"	c         C   s/   |  t  ƒ } |  t  t  ƒ } t | | d ƒ d  S(   Ni   (   R%   R   (   R"   t   K_autot   K_cross(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_auto_vs_cross   s    c         C   s8   t  j |  t ƒ ƒ } |  j t ƒ } t | | d ƒ d  S(   Ni   (   RB   t   diagR%   R   (   R"   t   K_call_diagt   K_diag(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_kernel_diagŒ   s    c           C   s^   t  t d ƒ d t ƒ d t d ƒ t ƒ ƒ t  d t d ƒ t ƒ t d ƒ d t ƒ ƒ d  S(   Ng       @g      ð?g      @(   R   R   R%   (    (    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt    test_kernel_operator_commutative”   s    c          C   s  d t  d d g ƒ }  |  t ƒ } t j t ƒ } | d  d  … d f c d 9<d t  d ƒ | ƒ } t | | ƒ t j t ƒ } | d  d  … d f c d :<d t  d ƒ | ƒ } t | | ƒ |  j t j d ƒ |  _ t |  j t j d d	 d
 g ƒ ƒ t |  j j	 d	 d
 g ƒ d  S(   Ng      @g      à?g       @i    i   i   i   g      @g      ð?g      @(
   R   R%   RB   t   arrayR   R'   RC   R   t   k2R   (   R"   R)   t   X1t   K1t   X2t   K2(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_kernel_anisotropicŸ   s    "c         C   s1   |  t  t  d ƒ } t | d t j | ƒ ƒ d  S(   Ni   i    (   i    i    (   R%   R   RB   RU   (   R"   R)   (    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_kernel_stationary´   s    c         C   sh   xa t  t |  ƒ t | ƒ ƒ D]C } | j d ƒ r t |  | ƒ } t | | ƒ } t | | ƒ q q Wd  S(   Nt   hyperparameter_(   R?   t   dirt
   startswithRD   R   (   t   kernel1t   kernel2t   attrt   attr_value1t   attr_value2(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   check_hyperparameters_equal½   s
    #c         C   s\   t  |  ƒ } t |  | ƒ t t |  ƒ t | ƒ ƒ t |  j ƒ  | j ƒ  ƒ t |  | ƒ d  S(   N(   R   R   R   t   idRE   Rj   (   R"   t   kernel_cloned(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_kernel_cloneÆ   s
    c         C   sø   d } t  |  ƒ } |  j ƒ  } t t f } d | k rô t |  | ƒ rô | d } t j | ƒ rz | d | d <| | d <n | g d | d <| d | d <| j |   t  | ƒ } t | j ƒ  | j ƒ  ƒ t	 t
 | ƒ t
 | ƒ ƒ t | | ƒ n  d  S(   Ngñhãˆµøä>g     jø@R   i    R   i   (   gñhãˆµøä>g     jø@(   R   RE   R   R   t
   isinstanceRB   t   iterablet
   set_paramsR   R   Rk   Rj   (   R"   t   boundsRl   RM   t   isotropic_kernelsR   t   kernel_cloned_clone(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt"   test_kernel_clone_after_set_params×   s$    

c          C   só   t  d d d d ƒ t ƒ }  t t j |  ƒ t j t j d ƒ ƒ t j t t t d t	 ƒƒ } t  d d d d ƒ t ƒ }  t |  | ƒ d } x^ d d d	 g D]M } t  d | d d ƒ t ƒ } t  d | | d d ƒ t ƒ } t | | ƒ qž Wd  S(
   NR   g      ø?R   g      ð?i    t   squaredg      à?g»½×Ùß|Û=g      @(
   R   R%   R   RB   RU   t   onesR,   t   expR   R&   (   R)   t   K_absexpt   tinyR   R]   R_   (    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_matern_kernelõ   s    &c         C   so   |  t  k r: |  t ƒ } t t d |  ƒ} t | | ƒ n  |  t t ƒ } t t t d |  ƒ} t | | ƒ d  S(   NR!   (   t   kernel_whiteR%   R   R   t   Y(   R"   R]   R_   (    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_kernel_versus_pairwise  s    c         C   sÎ  d } |  j  ƒ  } x¼ |  j D]± } t d t | j ƒ ƒ rR | j d k rR q qR n  | j } | d k rŸ t t j |  j	 | | | !ƒ | | j
 ƒ | | 7} q t t j |  j	 | ƒ | | j
 ƒ | d 7} q Wd } d } xê |  j D]ß } t d t | j ƒ ƒ r| j d k rqç qn  | j } | d k rˆ|  j i | g | | j
 6  t t j |  j	 | | | !ƒ | g | ƒ | | 7} qç |  j i | | j
 6  t t j |  j	 | ƒ | ƒ | d 7} qç Wd  S(   Ni    t   stringR   i   i
   (   RE   R@   Rn   t   typeRq   t
   n_elementsR   RB   Rw   R'   R6   Rp   (   R"   t   indexRM   R8   t   sizet   value(    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_set_get_params  s:    				c         C   s   t  |  ƒ d  S(   N(   t   repr(   R"   (    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   test_repr_kernelsA  s    (   i   i   (   i   i   (   g      à?g       @(   R   R   (:   t   __doc__t   pytestt   numpyRB   t   sklearn.utils.fixesR    t    sklearn.gaussian_process.kernelsR   t   sklearn.metrics.pairwiseR   R   R   R   R   R   R   R	   R
   R   R   R   R   t   sklearn.baseR   t   sklearn.utils.testingR   R   R   R   R   t   randomt   RandomStatet   normalR%   R|   R{   t   kernelsR!   t   appendt   markt   parametrizeR/   R"   Rn   RQ   RT   RX   RY   R`   t   is_stationaryRa   Rj   Rm   Rt   Rz   R}   R„   R†   (    (    (    sJ   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_kernels.pyt   <module>   sj   F(!!$ 	'5$		$			'