ó
‡ˆ\c        
   @   sÉ  d  Z  d d l Z d d l m Z d d l Z d d l m Z d d l m	 Z	 m
 Z d d l m Z m Z m Z m Z d „  Z e j e j d d	 d
 ƒ ƒ j Z e j d d d d d g ƒ j Z e j e e ƒ j ƒ  d k d e ƒZ e e ƒ j ƒ  Z e j e j d e ƒZ d e e d k  <d e e d k e d k  @<d e e d k <e	 d d d d ƒ Z e	 d d ƒ e e	 d d d d( ƒ e d d) ƒ e	 d d d d* ƒ g Z  g  e  D] Z! e! e k r®e! ^ q®Z" e j# j$ d e  ƒ d „  ƒ Z% e j# j$ d e" ƒ d  „  ƒ Z& e j# j$ d e  ƒ d! „  ƒ Z' e j# j$ d e" ƒ d" „  ƒ Z( e j# j$ d e  ƒ d# „  ƒ Z) d$ „  Z* e j# j$ d e" ƒ d% „  ƒ Z+ e j# j$ d e  ƒ d& „  ƒ Z, e j# j$ d e  ƒ d' „  ƒ Z- d S(+   s,   Testing for Gaussian process classification iÿÿÿÿN(   t   approx_fprime(   t   GaussianProcessClassifier(   t   RBFt   ConstantKernel(   t   assert_truet   assert_greatert   assert_almost_equalt   assert_array_equalc         C   s   t  j |  ƒ S(   N(   t   npt   sin(   t   x(    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   f   s    i    i
   i   g       @g      @g      @g      @g      @t   dtypegffffffÖ¿i   gffffffÖ?i   t   length_scaleg      ð?t   length_scale_boundst   fixedgš™™™™™¹?gü©ñÒMbP?g     @@g{®Gáz„?g      Y@t   kernelc         C   sT   t  d |  ƒ j t t ƒ } t | j t ƒ | j t ƒ d  d  … d f d k ƒ d  S(   NR   i   g      à?(   R   t   fitt   Xt   yR   t   predictt   predict_proba(   R   t   gpc(    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_predict_consistent(   s    c         C   sG   t  d |  ƒ j t t ƒ } t | j | j j ƒ | j |  j ƒ ƒ d  S(   NR   (   R   R   R   R   R   t   log_marginal_likelihoodt   kernel_t   theta(   R   R   (    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_lml_improving0   s    c         C   sD   t  d |  ƒ j t t ƒ } t | j | j j ƒ | j ƒ  d ƒ d  S(   NR   i   (   R   R   R   R   R   R   R   R   (   R   R   (    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_lml_precomputed8   s    c         C   s«   t  d |  ƒ j t t ƒ } | j | j j t ƒ \ } } t t	 j
 t	 j | ƒ d k  | j j | j j d  d  … d f k B| j j | j j d  d  … d f k Bƒ ƒ d  S(   NR   g-Cëâ6?i    i   (   R   R   R   R   R   R   R   t   TrueR   R   t   allt   abst   bounds(   R   R   t   lmlt   lml_gradient(    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_converged_to_local_maximum@   s
    	8c            sh   t  d |  ƒ j t t ƒ ‰  ˆ  j |  j t ƒ \ } } t |  j ‡  f d †  d ƒ } t | | d ƒ d  S(   NR   c            s   ˆ  j  |  t ƒ S(   N(   R   t   False(   R   (   R   (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   <lambda>U   s   	g»½×Ùß|Û=i   (	   R   R   R   R   R   R   R   R    R   (   R   R!   R"   t   lml_gradient_approx(    (   R   sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_lml_gradientM   s    		c    
      C   s-  d \ }  } t  j j d ƒ } | j |  | ƒ d d } t  j | ƒ j d d ƒ t  j d | ƒ j d d ƒ d k } t d d ƒ t d
 d g | d d g | ƒ } t  j } xv t	 d ƒ D]h } t
 d | d | d d ƒ j | | ƒ } | j | j j ƒ }	 t |	 | t  j t  j ƒ j ƒ |	 } q½ Wd  S(   Ni   i   i    i   t   axisi   g      ð?g{®Gáz„?g      Y@R   gü©ñÒMbP?R   g-Cëâ6?i   R   t   n_restarts_optimizert   random_state(   i   i   (   g{®Gáz„?g      Y@(   g-Cëâ6?g      Y@(   R   t   randomt   RandomStatet   randnR	   t   sumt   CR   t   inft   rangeR   R   R   R   R   R   t   finfot   float32t   eps(
   t	   n_samplest
   n_featurest   rngR   R   R   t   last_lmlR)   t   gpR!   (    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_random_starts\   s    >
 c         C   sZ   d „  } t  d |  d | ƒ } | j t t ƒ t | j | j j ƒ | j |  j ƒ ƒ d  S(   Nc   	   	   S   sÍ   t  j j d ƒ } | |  | d t ƒ} } x• t d ƒ D]‡ } t  j | j t  j d | d  d  … d f ƒ t  j d | d  d  … d f ƒ ƒ ƒ } |  | d t ƒ} | | k  r8 | | } } q8 q8 W| | f S(   Ni    t   eval_gradienti2   iþÿÿÿi   (	   R   R+   R,   R$   R1   t
   atleast_1dt   uniformt   maximumt   minimum(	   t   obj_funct   initial_thetaR    R7   t	   theta_optt   func_mint   _R   R   (    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt	   optimizeru   s    +(R   RE   (   R   R   R   t   y_mcR   R   R   R   (   R   RE   R   (    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_custom_optimizerq   s
    	c         C   sp   t  d |  ƒ } | j t t ƒ | j t ƒ } t | j d ƒ d ƒ | j t ƒ } t	 t
 j | d ƒ | ƒ d  S(   NR   i   (   R   R   R   RF   R   t   X2R   R.   R   R   R   t   argmax(   R   R   t   y_probt   y_pred(    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_multi_classˆ   s    c         C   ss   t  d |  ƒ } | j t t ƒ t  d |  d d ƒ } | j t t ƒ | j t ƒ } | j t ƒ } t | | ƒ d  S(   NR   t   n_jobsi   (   R   R   R   RF   R   RH   R   (   R   R   t   gpc_2RJ   t   y_prob_2(    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   test_multi_class_n_jobs•   s    (   gü©ñÒMbP?g     @@(   g{®Gáz„?g      Y@(   gü©ñÒMbP?g     @@(.   t   __doc__t   numpyR   t   scipy.optimizeR    t   pytestt   sklearn.gaussian_processR   t    sklearn.gaussian_process.kernelsR   R   R/   t   sklearn.utils.testingR   R   R   R   R   t
   atleast_2dt   linspacet   TR   RH   t   arrayt   ravelt   intR   t   fXt   emptyt   shapeRF   t   fixed_kernelt   kernelsR   t   non_fixed_kernelst   markt   parametrizeR   R   R   R#   R'   R:   RG   RL   RP   (    (    (    sF   lib/python2.7/site-packages/sklearn/gaussian_process/tests/test_gpc.pyt   <module>   s>   "	!!'	