ó
‡ˆ\c           @   sÇ  d  d l  Z d  d l m Z d  d l m Z m Z m Z d  d l m Z d  d l m	 Z	 m
 Z
 d  d l m Z d  d l m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z d  d l m Z m Z m Z e j j d ƒ Z e j d d ƒ Z e j d d ƒ Z e e j d d ƒ d d … e j f :Z e e j d d ƒ d d … e j f :Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d S(   iÿÿÿÿN(   t
   csr_matrix(   t   assert_array_equalt   assert_equalt   assert_true(   t   assert_not_equal(   t   assert_array_almost_equalt   assert_raises(   t   assert_less_equal(   t   assert_warns_message(   t   kernel_metrics(   t
   RBFSampler(   t   AdditiveChi2Sampler(   t   SkewedChi2Sampler(   t   Nystroem(   t   polynomial_kernelt
   rbf_kernelt   chi2_kerneli    t   sizei,  i2   t   axisi   c          C   sû  t  d  d  … t j d  d  … f }  t t j d  d  … d  d  … f } d |  | |  | } | j d d ƒ } t d d ƒ } | j t  ƒ } | j t ƒ } t j | | j	 ƒ } t
 | | d ƒ | j t t  ƒ ƒ } | j t t ƒ ƒ }	 t | | j ƒ t | |	 j ƒ t j ƒ  }
 d |
 d <t t | j |
 ƒ t d d ƒ } t t | j t  ƒ d d d g } xJ | D]B } t d | ƒ } t | j d  ƒ | j t  ƒ t | j d  ƒ qiWd	 } t d d d
 | ƒ } t | j | ƒ | j t  ƒ t | j | ƒ d  S(   Ni   R   t   sample_stepsi   i   iÿÿÿÿi    i   g333333Ó?t   sample_interval(   i    i    (   t   Xt   npt   newaxist   Yt   sumR   t   fit_transformt	   transformt   dott   TR   R    R   t   At   copyR   t
   ValueErrort   fitR   R   t   NoneR   t   sample_interval_(   t   X_t   Y_t   large_kernelt   kernelR   t   X_transt   Y_transt   kernel_approxt
   X_sp_transt
   Y_sp_transt   Y_negt   sample_steps_availableR   R   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   test_additive_chi2_sampler   s<    ""
	c    
      C   s†  d }  |  d t  d <t |  d  d  … t j d  d  … f } t  |  t j d  d  … d  d  … f } t j | ƒ d t j | ƒ d t j d ƒ t j | | ƒ } t j | j d d ƒ ƒ } t d |  d d d	 d
 ƒ } | j t ƒ } | j	 t  ƒ } t j
 | | j ƒ } t | | d ƒ t t j | ƒ j ƒ  d ƒ t t j | ƒ j ƒ  d ƒ t  j ƒ  }	 |  d |	 d <t t | j	 |	 ƒ d  S(   Ng¸…ëQ¸ž?g       @i    R   i   t
   skewednesst   n_componentsiè  t   random_statei*   i   s   NaNs found in the Gram matrixs)   NaNs found in the approximate Gram matrix(   i    i    (   i    i    (   R   R   R   R   t   logt   expR   R   R   R   R   R   R   R   t   isfinitet   allR   R   R    (
   t   ct   X_ct   Y_ct
   log_kernelR'   R   R(   R)   R*   R-   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   test_skewed_chi2_samplerS   s(    &&.	c          C   sÕ   d }  t  t t d |  ƒ} t d |  d d d d ƒ } | j t ƒ } | j t ƒ } t j | | j ƒ } | | } t	 t j
 t j | ƒ ƒ d ƒ t j
 | d | ƒt	 t j | ƒ d	 ƒ t	 t j | ƒ d
 ƒ d  S(   Ng      $@t   gammaR1   iè  R2   i*   g{®Gáz„?t   outgš™™™™™¹?gš™™™™™©?(   R   R   R   R
   R   R   R   R   R   R   t   abst   meant   max(   R<   R'   t   rbf_transformR(   R)   R*   t   error(    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   test_rbf_sampler{   s    
c          C   s•   d d g d d g d d g g }  t  ƒ  j |  ƒ j |  ƒ t ƒ  j |  ƒ j |  ƒ t ƒ  j |  ƒ j |  ƒ t |  ƒ }  t ƒ  j |  ƒ j |  ƒ d  S(   Ni   i   i   i   i   i   (   R   R!   R   R   R
   R    (   R   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   test_input_validationŽ   s    !c          C   s|  t  j j d ƒ }  |  j d d
 ƒ } t d | j d ƒ j | ƒ } t | ƒ } t t  j	 | | j
 ƒ | ƒ t d d d |  ƒ } | j | ƒ j | ƒ } t | j | j d d f ƒ d „  } t d d d	 | d |  ƒ } | j | ƒ j | ƒ } t | j | j d d f ƒ t ƒ  } x^ | D]V } t d d d	 | d |  ƒ } | j | ƒ j | ƒ } t | j | j d d f ƒ qWd  S(   Ni    R   i
   i   R1   i   R2   c         S   s   t  j |  | j ƒ S(   N(   R   R   R   (   R   R   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   linear_kernel©   s    R'   (   i
   i   (   R   t   randomt   RandomStatet   uniformR   t   shapeR   R   R   R   R   R!   R   R   R	   (   t   rndR   t   X_transformedt   Kt   transRE   t   kernels_availablet   kern(    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   test_nystroem_approximationš   s"    		c          C   sÒ   t  j j d ƒ }  |  j d d
 ƒ } t d d ƒ } | j | ƒ } t | d d  ƒ} t  j | | j	 ƒ } t
 | | ƒ t d d d d ƒ } | j | ƒ } t | d d	 ƒ} t  j | | j	 ƒ } t
 | | ƒ d  S(   Ni*   R   i
   i   R1   R<   R'   t   chi2i   (   i
   i   (   R   RF   RG   RH   R   R   R   R"   R   R   R   R   (   RJ   R   t   nystroemRK   RL   t   K2(    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt    test_nystroem_default_parameters·   s    c          C   sÄ   t  j j d ƒ }  |  j d d ƒ } t  j | g d ƒ } d } t d | d | j d ƒ j | ƒ } | j | ƒ } t	 | d | ƒ} t
 | t  j | | j ƒ ƒ t  j t  j t ƒ ƒ sÀ t ‚ d  S(   Ni    i
   i   i   id   R<   R1   (   R   RF   RG   t   randt   vstackR   RI   R!   R   R   R   R   R   R6   R5   R   t   AssertionError(   t   rngR   R<   t   NRK   RL   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   test_nystroem_singular_kernelË   s    %c       	   C   s“   t  j j d ƒ }  |  j d d ƒ } t | d d d d ƒ} t d	 d
 d | j d d d d d ƒ } | j | ƒ } t t  j	 | | j
 ƒ | ƒ d  S(   Ni%   R   i
   i   t   degreegÍÌÌÌÌÌ@t   coef0gš™™™™™¹?R'   t
   polynomialR1   i    (   i
   i   (   R   RF   RG   RH   R   R   RI   R   R   R   R   (   RJ   R   RL   RR   RK   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt    test_nystroem_poly_kernel_paramsÛ   s    c    
   	   C   s  t  j j d ƒ }  d } |  j d | d f ƒ } d „  } g  } t | ƒ } t d | d | d d	 i | d
 6ƒ j | ƒ t t | ƒ | | d d ƒ d „  } d } i d d 6i d d 6i d d 6f } x6 | D]. } t d | |  }	 t	 t
 | |	 j | ƒ qÑ Wd  S(   Ni*   i
   R   i   c         S   s#   | j  d ƒ t j |  | ƒ j ƒ  S(   s&   Histogram kernel that writes to a log.i   (   t   appendR   t   minimumR   (   t   xt   yR3   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   logging_histogram_kernelí   s    R'   R1   i   t   kernel_paramsR3   i   c         S   s   t  j |  | j ƒ S(   N(   R   R   R   (   R   R   (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyRE   ù   s    s*   Passing gamma, coef0 or degree to NystroemR<   R\   R[   (   R   RF   RG   RH   t   listR   R!   R   t   lenR   t   DeprecationWarning(
   RJ   t	   n_samplesR   Rc   t
   kernel_logRE   t   msgt   paramst   paramt   ny(    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   test_nystroem_callableç   s     	
	$(   i,  i2   (   i,  i2   ((   t   numpyR   t   scipy.sparseR    t   sklearn.utils.testingR   R   R   R   R   R   R   R   t   sklearn.metrics.pairwiseR	   t   sklearn.kernel_approximationR
   R   R   R   R   R   R   RF   RG   RX   t   random_sampleR   R   R   R   R/   R;   RC   RD   RP   RT   RZ   R^   Rn   (    (    (    sF   lib/python2.7/site-packages/sklearn/tests/test_kernel_approximation.pyt   <module>   s4   ))	:	(						