ó
‡ˆ\c           @   s3  d  d l  m Z d  d l 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 d  d l	 m Z m Z m Z d  d l 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 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% 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/ d  d  l" m0 Z0 d  d! l" m1 Z1 d  d" l" m2 Z2 d  d# l" m3 Z3 d  d$ l" m4 Z4 d  d% l" m5 Z5 d  d& l" m6 Z6 d  d' l" m7 Z7 d  d( l" m8 Z8 d  d) l" m9 Z9 d  d* l" m: Z: d  d+ l" m; Z; d  d, l< m= Z= d  d- l> m? Z? d  d l Z d. „  Z@ e jA jB d/ e5 ƒ d0 „  ƒ ZC e jA jB d1 e. e2 g ƒ d2 „  ƒ ZD d3 „  ZE i e jF d4 d5 ƒ jG d6 ƒ d7 6d4 d8 6ZH d9 „  ZI e jA jB d: e. d; i  f e. e eH f e. d< eH f e2 d= i d4 d> 6f e2 eI i d? d@ 6f g ƒ dA „  ƒ ZJ dB „  ZK e jA jB d/ dC dD dE d= dF dG dH g ƒ dI „  ƒ ZL dJ „  ZM dK „  ZN e jA jB dL e! e6 ƒ ƒ dM „  ƒ ZO dN „  ZP dO „  ZQ dP „  ZR dQ „  ZS e jA jB dR dS „  dT „  dU „  dV „  dW „  g ƒ dX „  ƒ ZT e jA jB d d\ „  eU d] f d^ „  eU d_ f d` „  eU da f db „  eV dc f dd „  eV de f df „  eV dg f g ƒ dh „  ƒ ZW d; di „ ZX e jA jB d/ d ƒ dl „  ƒ ZY e dm „  ƒ ZZ dn „  Z[ do „  Z\ dp „  Z] dq „  Z^ dr „  Z_ e jA jB ds e% e( e) e* e+ e, f ƒ dt „  ƒ Z` e jA jB ds e% e( e) e* e+ e, f ƒ du „  ƒ Za dv „  Zb dw „  Zc dx „  Zd e jA jB dy dF e% f dz e, f g ƒ d{ „  ƒ Ze d| „  Zf d} „  Zg d~ „  Zh d „  Zi d€ „  Zj d „  Zk d‚ „  Zl dƒ „  Zm d„ „  Zn e jA jB d… d4 d† g ƒ e jA jB d/ d‡ dˆ g ƒ e jA jB d‰ e. e/ g ƒ e jA jB dŠ eo ep g d‹ dŒ d g ƒdŽ „  ƒ ƒ ƒ ƒ Zq d S(‘   iÿÿÿÿ(   t   GeneratorTypeN(   t   linalg(   t
   dok_matrixt
   csr_matrixt   issparse(   t   cosinet	   cityblockt	   minkowskit
   wminkowski(   t   cdistt   pdistt
   squareform(   t   config_context(   t   assert_greater(   t   assert_array_almost_equal(   t   assert_allclose(   t   assert_almost_equal(   t   assert_equal(   t   assert_array_equal(   t   assert_raises(   t   assert_raises_regexp(   t   assert_warns(   t   ignore_warnings(   t   assert_warns_message(   t	   iteritems(   t   euclidean_distances(   t   manhattan_distances(   t   linear_kernel(   t   chi2_kernelt   additive_chi2_kernel(   t   polynomial_kernel(   t
   rbf_kernel(   t   laplacian_kernel(   t   sigmoid_kernel(   t   cosine_similarity(   t   cosine_distances(   t   pairwise_distances(   t   pairwise_distances_chunked(   t   pairwise_distances_argmin_min(   t   pairwise_distances_argmin(   t   pairwise_kernels(   t   PAIRWISE_KERNEL_FUNCTIONS(   t   PAIRWISE_DISTANCE_FUNCTIONS(   t   PAIRWISE_BOOLEAN_FUNCTIONS(   t   PAIRED_DISTANCES(   t   check_pairwise_arrays(   t   check_paired_arrays(   t   paired_distances(   t   paired_euclidean_distances(   t   paired_manhattan_distances(   t	   normalize(   t   DataConversionWarningc          C   s+  t  j j d ƒ }  |  j d ƒ } t | d d ƒ} t | ƒ } t | | ƒ |  j d ƒ } t | | d d ƒ} t | | ƒ } t | | ƒ t g  | D]% } t g  | D] } | ^ q¦ ƒ ^ q– ƒ } t g  | D]% } t g  | D] } | ^ qÞ ƒ ^ qÎ ƒ } t | | d d ƒ} t | | ƒ t | d d ƒ} t | d t ƒ} t	 | j
 d | j
 d ƒ t	 | j
 d | j
 d ƒ t | | ƒ t | | d d	 ƒ} t | | d t ƒ} t	 | j
 d | j
 d ƒ t	 | j
 d | j
 d ƒ t | | ƒ t t t | | d
 d ƒt | | d d ƒ} t | | d t ƒ} t	 | j
 d | j
 d ƒ t	 | j
 d | j
 d ƒ t | | ƒ t | ƒ }	 t | ƒ }
 t |	 |
 d d ƒ} t |	 |
 ƒ } t | | ƒ t |	 |
 d d ƒ} t |	 |
 ƒ } t | | ƒ t |	 |
 j ƒ  d d	 ƒ} t |	 j ƒ  |
 j ƒ  ƒ } t | | ƒ t | | ƒ } t | | ƒ i d d 6} t | | d d | } t | | d t | } t | | ƒ i d d 6} t | d d | } t | d t | } t | | ƒ t t t |	 d d ƒt t t | |
 d d ƒt t t | | d d ƒd  S(   Ni    i   i   t   metrict	   euclideani   R   i   t	   manhattant   size_thresholdi
   R   g       @t   pR   t   blah(   i   i   (   i   i   (   t   npt   randomt   RandomStatet   random_sampleR$   R   R   t   tupleR   R   t   shapeR   t   DeprecationWarningR   R   R   R#   t   tocsct   tobsrt   tocooR   R   t	   TypeErrort
   ValueError(   t   rngt   Xt   St   S2t   Yt   rowt   vt   X_tuplest   Y_tuplest   X_sparset   Y_sparset   kwds(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_pairwise_distances:   sn    88R4   c      
   C   s¼   t  j j d ƒ } | j d d ƒ } | j ƒ  } d | d | d <t d t ƒ e x] | d  g D]O } t | | d |  ƒ} d | t  j	 | ƒ <t  j
 | d k ƒ d k s_ t ‚ q_ WWd  QXd  S(	   Ni    i   i   i   t   categoryR4   (   i    i    (   i    i    (   R:   R;   R<   t   randnt   copyR   R3   t   NoneR$   t   isnant   sumt   AssertionError(   R4   RF   RG   RJ   t   Zt   res(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_pairwise_boolean_distance‡   s    t   funcc         C   s^  t  t d |  t j d ƒ d d ƒt  t d |  t j d ƒ t j d ƒ d d ƒt  t d |  t j d ƒ t j d ƒ d d ƒt j d ƒ } |  | d d ƒ} | | k s± t ‚ t j d ƒ } |  | t j d ƒ d d ƒ} | | k sð t ‚ |  t j d g g d d	 ƒd d ƒ} t d
 | j j ƒ |  d g g d d ƒ} t	 | t j
 ƒ sZt ‚ d  S(   Ns   .* shape .*i   i   R4   t   precomputedi   i   t   dtypet   intt   fg      ð?(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   RE   R:   t   zerosRY   t   arrayR   R_   t   kindt
   isinstancet   ndarray(   R]   RH   RI   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_pairwise_precomputed—   s$    			'c   
   
   C   s@  t  j j d ƒ } x't  j t f D]} | | j d	 ƒ ƒ } | | j d
 ƒ ƒ } y |  | d | d d | } WnS t t f k
 rÆ } | t k rÀ t t	 | ƒ |  | d | d d | q" qÇ ‚  n X|  | d | d d | }	 t
 | |	 ƒ |  | | d | d d | } |  | | d | d d | }	 t
 | |	 ƒ q" Wd  S(   Ni    i   i   i   R4   t   n_jobsi   i   (   i   i   (   i   i   (   R:   R;   R<   Rc   R   R=   RD   RE   R   t   typeR   (
   R]   R4   RQ   RF   t	   make_dataRG   RJ   RH   t   excRI   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   check_pairwise_parallel·   s"    
i   i   t   doublet   wR8   c         K   s(   t  t j |  ƒ t j | ƒ |  } | S(   N(   R   R:   t
   atleast_2d(   t   xt   yRQ   t   K(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   callable_rbf_kernelÓ   s    $s   func, metric, kwdsR5   R   t
   polynomialt   degreegš™™™™™¹?t   gammac         C   s   t  |  | | ƒ d  S(   N(   Rl   (   R]   R4   RQ   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_pairwise_parallelÙ   s    c           C   s*   t  t d g g d d „  ƒd d ƒ d  S(   Ng      ð?R4   c         S   s   d S(   Ni   (    (   Rp   Rq   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   <lambda>è   s    i    i   (   i    i    (   R   R$   (    (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt'   test_pairwise_callable_nonstrict_metricä   s    t   rbft	   laplaciant   sigmoidt   lineart   chi2t   additive_chi2c         C   s›  t  j j d ƒ } | j d	 ƒ } | j d
 ƒ } t |  } t | d |  ƒ} | | ƒ } t | | ƒ t | d | d |  ƒ} | | d | ƒ} t | | ƒ t g  | D]% } t g  | D] } | ^ q¶ ƒ ^ q¦ ƒ }	 t g  | D]% } t g  | D] } | ^ qî ƒ ^ qÞ ƒ }
 t |	 |
 d |  ƒ} t | | ƒ t | ƒ } t | ƒ } |  d k rrt	 t
 t | d | d |  ƒd  St | d | d |  ƒ} t | | ƒ d  S(   Ni    i   i   i   R4   RJ   R~   R   (   i   i   (   i   i   (   R~   R   (   R:   R;   R<   R=   R)   R(   R   R>   R   R   RE   (   R4   RF   RG   RJ   t   functiont   K1t   K2RK   RL   RM   RN   RO   RP   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_pairwise_kernelsì   s,    
88	c          C   sÁ   t  j j d ƒ }  |  j d	 ƒ } |  j d
 ƒ } t } i d d 6} t | d | d | | } t | d | | } t | | ƒ t | d | d | | } t | d | | } t | | ƒ d  S(   Ni    i   i   i   gš™™™™™¹?Rv   RJ   R4   (   i   i   (   i   i   (   R:   R;   R<   R=   Rs   R(   R   R   (   RF   RG   RJ   R4   RQ   R   R‚   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_pairwise_kernels_callable  s    c          C   s¡   t  j j d ƒ }  |  j d ƒ } |  j d ƒ } t | | d d ƒ} i d d 6d d 6} t | | d	 d
 d t | } t | | ƒ t t	 t | | d
 |  d  S(   Ni    i   i   i   Rv   gš™™™™™¹?s   :)t   blablaR4   Rz   t   filter_params(   i   i   (   i   i   (
   R:   R;   R<   R=   R   R(   t   TrueR   R   RD   (   RF   RG   RJ   Rr   t   paramsR‚   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt"   test_pairwise_kernels_filter_param$  s    s   metric, funcc   	      C   sË   t  j j d ƒ } | j d ƒ } | j d ƒ } t | | d |  ƒ} | | | ƒ } t | | ƒ | t | ƒ t | ƒ ƒ } t | | ƒ |  t k rÇ t |  | | ƒ } t  j | ƒ } t | | ƒ n  d  S(   Ni    i   i   R4   (   i   i   (   i   i   (	   R:   R;   R<   R=   R/   R   R   R*   t   diag(	   R4   R]   RF   RG   RJ   RH   RI   t   S3t	   distances(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_paired_distances0  s    c          C   s   t  j j d ƒ }  |  j d ƒ } |  j d	 ƒ } t | | d d ƒ} t | | d d „  ƒ} t | | ƒ |  j d
 ƒ } t t t | | ƒ d  S(   Ni    i   i   R4   R6   c         S   s   t  j |  | ƒ j d d ƒ S(   Nt   axisi    (   R:   t   absRX   (   Rp   Rq   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   P  s    i   (   i   i   (   i   i   (   i   i   (   R:   R;   R<   R=   R/   R   R   RE   (   RF   RG   RJ   RH   RI   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_paired_distances_callableF  s    c       
   C   se  d g d g g }  d g d g g } t  |  ƒ } t | d t j ƒ} d d g } d d g } d d g } t |  | d d	 ƒ\ } } t |  | d d	 ƒ}	 t | | ƒ t |	 | ƒ t | | ƒ t | | d d	 ƒ\ }
 } t |
 | ƒ t | | ƒ t t |
 ƒ t j	 ƒ t t | ƒ t j	 ƒ t |  | d d	 d
 i t
 d 6ƒ\ } } t | | ƒ t | | ƒ t |  | d d ƒ\ } } t |  | d d ƒ}	 t | | ƒ t |	 | ƒ t | | ƒ t | | d d ƒ\ }
 } t |
 | ƒ t | | ƒ t |  | d t d
 i d d 6ƒ\ } } t | | ƒ t | | ƒ t |  | d d d
 i d d 6ƒ\ } } t | | ƒ t | | ƒ t j j d ƒ } | j d d ƒ }  | j d d ƒ } t |  | d d ƒ} | j d d ƒ } | | t t | ƒ ƒ f } t |  | d d d d ƒ\ } } t j j | | d d ƒt j j | | d d ƒt t d t |  | d d d d	 ƒd  S(   Ni    i   iþÿÿÿi   R_   i   i   R4   R5   t   metric_kwargst   squaredR6   R8   R   ia   i•   io   RŽ   t   decimali   s   version 0.22t
   batch_sizeiô  (   R   R   R:   t   float32R&   R'   R   R   Ri   Rf   R‡   R   R;   R<   RT   R$   t   argmint   ranget   lent   testingR   R   R@   (   RG   RJ   t   Xspt   Yspt   expected_idxt   expected_valst   expected_vals_sqt   idxt   valst   idx2t   idxspt   valsspRF   t   distt   dist_orig_indt   dist_orig_valt   dist_chunked_indt   dist_chunked_val(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt"   test_pairwise_distances_argmin_minY  sd    	c         C   s   |  d  d  … d  d … f S(   Nid   (    (   R¤   t   start(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   _reduce_func¤  s    c          C   s·   t  j j d ƒ }  |  j d ƒ } t | ƒ d  d  … d  d … f } t | d  d t d d ƒ} t | t	 ƒ ss t
 ‚ t | ƒ } t | ƒ d	 k s— t
 ‚ t t  j | ƒ | d
 d ƒd  S(   Ni    i  i   id   t   reduce_funct   working_memoryi   iðÿÿÿi   t   atolgH¯¼šò×z>(   i  i   g      ð>(   R:   R;   R<   R=   R$   R%   RV   R«   Re   R    RY   t   listR˜   R   t   vstack(   RF   RG   RH   t   S_chunks(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt&   test_pairwise_distances_chunked_reduce¨  s    "	t   good_reducec         C   s
   t  |  ƒ S(   N(   R¯   (   t   DRª   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   ·  s    c         C   s   t  j |  ƒ S(   N(   R:   Rc   (   R´   Rª   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   ¸  s    c         C   s
   t  |  ƒ S(   N(   R   (   R´   Rª   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   ¹  s    c         C   s   t  |  ƒ t  |  ƒ f S(   N(   R¯   (   R´   Rª   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   º  s    c         C   s"   t  |  ƒ t j |  ƒ t |  ƒ f S(   N(   R   R:   Rc   R¯   (   R´   Rª   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   »  s    c         C   sD   t  j d ƒ j d d ƒ } t | d  d |  d d ƒ} t | ƒ d  S(   Ni
   iÿÿÿÿi   R¬   R­   i@   (   R:   t   aranget   reshapeR%   RV   t   next(   R³   RG   R±   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt,   test_pairwise_distances_chunked_reduce_valid¶  s    	t
   bad_reducet   err_typet   messagec         C   s   t  j |  |  d g ƒ S(   Niÿÿÿÿ(   R:   t   concatenate(   R´   t   s(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   Å  s    s   length 11\..* input: 10\.c         C   s   |  t  j |  |  d g ƒ f S(   Niÿÿÿÿ(   R:   R¼   (   R´   R½   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   Ç  s    s!   length \(10, 11\)\..* input: 10\.c         C   s   |  d  |  f S(   Ni	   (    (   R´   R½   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   É  s    s    length \(9, 10\)\..* input: 10\.c         C   s   d S(   Ni   (    (   R´   R½   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   Ë  s    s2   returned 7\. Expected sequence\(s\) of length 10\.c         C   s   d S(   Ni   i   (   i   i   (    (   R´   R½   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   Í  s    s9   returned \(7, 8\)\. Expected sequence\(s\) of length 10\.c         C   s   t  j d ƒ d f S(   Ni
   i	   (   R:   Rµ   (   R´   R½   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyRx   Ï  s    s-   , 9\)\. Expected sequence\(s\) of length 10\.c         C   sM   t  j d ƒ j d d ƒ } t | d  d |  d d ƒ} t | | t | ƒ d  S(   Ni
   iÿÿÿÿi   R¬   R­   i@   (   R:   Rµ   R¶   R%   RV   R   R·   (   R¹   Rº   R»   RG   R±   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt.   test_pairwise_distances_chunked_reduce_invalidÄ  s    	c   
      C   sÖ   t  |  | d | d | ƒ} t | t ƒ s0 t ‚ t | ƒ } | d  k rN |  n | } t | ƒ d d } x6 | D]. } | j } | t | | ƒ d k so t ‚ qo Wt	 j
 | ƒ } t |  | d | ƒ}	 t | |	 ƒ d  S(	   NR­   R4   i   i   iìÿÿÿi   g      °>i   (   R%   Re   R    RY   R¯   RV   R˜   t   nbytest   maxR:   R°   R$   R   (
   RG   RJ   R­   R4   t   gent   blockwise_distancest   min_block_mibt   blockt   memory_usedRH   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt    check_pairwise_distances_chunkedÚ  s    		#t   l2t   sqeuclideanc         C   s‰   t  j j d ƒ } | j d d d d ƒ } t t | d d d	 |  ƒƒ } t | ƒ d k s` t ‚ t t  j	 t  j
 | ƒ ƒ d d
 d ƒd  S(   Ni    t   sizeiè  i
   t   scaleg    _ BR­   i   R4   R“   (   iè  i
   (   R:   R;   R<   t   normalR¯   R%   R˜   RY   R   RŠ   R°   (   R4   RF   RG   t   chunks(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt(   test_pairwise_distances_chunked_diagonalë  s    c          C   s“  t  j j d ƒ }  |  j d ƒ } t | d  d d d d ƒx4 t d d ƒ D]# } t | d  d d	 | d d ƒqJ Wt | j ƒ  d  d d d d ƒ|  j d ƒ } t | | d d d d ƒt | j ƒ  | j ƒ  d d d d ƒt | | d d d d ƒt | | d d d d ƒt t	 t
 t | | d d ƒƒ t | ƒ } t | d d d d ƒ} t | t ƒ sgt ‚ t
 | ƒ | k st ‚ t t t
 | ƒ d  S(   Ni    i  i   R­   i   R4   R5   iðÿÿÿi   iÈ   i'  R   R9   R^   (   i  i   (   iÈ   i   g      ð>(   R:   R;   R<   R=   RÆ   RV   R—   t   tolistR   RE   R·   R%   R$   Re   R    RY   t   StopIteration(   RF   RG   t   powerRJ   R´   RÁ   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_pairwise_distances_chunked÷  s6    			c          C   s×  d g g }  d g d g g } t  |  | ƒ } t | d d g g ƒ t |  ƒ }  t | ƒ } t  |  | ƒ } t | d d g g ƒ t j j d ƒ } | j d ƒ }  | j d ƒ } |  d j d	 d ƒ j d d
 ƒ } | d j d	 d ƒ j d d
 ƒ } t  |  | ƒ } t  |  | d | ƒ} t  |  | d | ƒ} t  |  | d | d | ƒ}	 t | | ƒ t | | ƒ t |	 | ƒ | d 9} | d 9} t  |  | d t j	 | ƒ d t j	 | ƒ ƒ}
 t
 t j t j |
 | ƒ ƒ d ƒ d  S(   Ni    i   i   g      ð?g       @i
   i   i   RŽ   iÿÿÿÿt   X_norm_squaredt   Y_norm_squaredg      à?g{®Gáz„?(   i
   i   (   i   i   (   R   R   R   R:   R;   R<   R=   RX   R¶   t
   zeros_likeR   RÀ   R   (   RG   RJ   R´   RF   t	   X_norm_sqt	   Y_norm_sqt   D1t   D2t   D3t   D4t   wrong_D(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_euclidean_distances!  s6    ""	

c          C   sÀ  t  j j d ƒ }  t  j |  j d ƒ ƒ } t  j | | g ƒ } t | ƒ } t | d d g d d g g ƒ t  j | d k ƒ s… t	 ‚ t  j | d k ƒ s  t	 ‚ t | t  j
 | ƒ d d g ƒ t  j | | g ƒ } t | ƒ } t  j | d k ƒ sý t	 ‚ t  j | d k ƒ st	 ‚ t | d d g d d g g ƒ t  j |  j d d ƒ ƒ } t | ƒ } t | t  j
 | ƒ d g | j d ƒ t  j | d k ƒ s¡t	 ‚ t  j | d k ƒ s¼t	 ‚ d  S(   Ni9  iŽ  g        g       @iè  iˆ  i    (   R:   R;   R<   R   t   randR°   R#   R   t   allRY   t   diag_indices_fromR?   (   RF   Rp   t   XAR´   t   XBRØ   RG   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_cosine_distancesF  s$     (c          C   sJ   d g d g g }  d g d g g } t  |  | ƒ } t | d d g ƒ d  S(   Ni    i   i   g      ð?g       @(   R0   R   (   RG   RJ   R´   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_paired_euclidean_distancesf  s    c          C   sJ   d g d g g }  d g d g g } t  |  | ƒ } t | d d g ƒ d  S(   Ni    i   i   g      ð?g       @(   R1   R   (   RG   RJ   R´   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_paired_manhattan_distancesn  s    c          C   s\  t  j j d ƒ }  |  j d ƒ } |  j d ƒ } t | | ƒ } d } t | | d | ƒ} t | j t  j ƒ x˜ t	 | ƒ D]Š \ } } x{ t	 | ƒ D]m \ } }	 t  j
 | |	 d | |	 ƒ }
 t  j | |
 ƒ } t | | | f |
 ƒ t | | | f | ƒ q“ Wqz Wt | ƒ } t t  j | ƒ d ƒ t  j | d k ƒ sEt ‚ t  j | t  j t  j | ƒ ƒ d k  ƒ svt ‚ |  j d ƒ j t  j ƒ } |  j d ƒ j t  j ƒ } t | | ƒ } t | j t  j ƒ |  j d ƒ j t  j ƒ } t | | ƒ } t  j | ƒ j ƒ  st ‚ t | j t  j ƒ d	 d
 g d d g g } d d g d d g g } t | | ƒ } t | d | d ƒ t | d | d ƒ t t t d d g g ƒ t t t d d g g d d g g ƒ t t t d d g g d d g g ƒ t t t d d g g d d d g g ƒ t t t t | ƒ t | ƒ ƒ t t t t | ƒ t | ƒ ƒ d  S(   Ni    i   i   i
   gš™™™™™¹?Rv   i   i   g333333Ó?gffffffæ?g      ð?gÍÌÌÌÌÌì?iÿÿÿÿgš™™™™™É?g333333ã?(   i   i   (   i
   i   (   i   i   (   i
   i   (   i
   i   (   i    i    (   i    i   (   i   i   (   i   i    (   R:   R;   R<   R=   R   R   R   R_   t   floatt	   enumerateRX   t   expR   R   RŠ   RÞ   RY   t   astypeR•   t   int32t   isfiniteR   R   RE   R   (   RF   RG   RJ   t   K_addRv   Rr   t   iRp   t   jRq   R~   t   chi2_exp(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_chi_square_kernelv  sJ     1%%(	t   kernelc         C   sG   t  j j d ƒ } | j d ƒ } |  | | ƒ } t | | j d ƒ d  S(   Ni    i   i   i   (   i   i   (   R:   R;   R<   R=   R   t   T(   Rð   RF   RG   Rr   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_kernel_symmetry­  s    c         C   s\   t  j j d ƒ } | j d ƒ } t | ƒ } |  | | ƒ } |  | | ƒ } t | | ƒ d  S(   Ni    i   i   (   i   i   (   R:   R;   R<   R=   R   R   (   Rð   RF   RG   RO   Rr   R‚   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_kernel_sparse¹  s    c          C   sq   t  j j d ƒ }  |  j d ƒ } t | | ƒ } t | j d  d  d … g  | D] } t j | ƒ d ^ qM ƒ d  S(   Ni    i   i   i   i   (   i   i   (	   R:   R;   R<   R=   R   R   t   flatR   t   norm(   RF   RG   Rr   Rp   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_linear_kernelÆ  s    c          C   sZ   t  j j d ƒ }  |  j d ƒ } t | | ƒ } t | j d  d  d … t  j d ƒ ƒ d  S(   Ni    i   i   i   (   i   i   (   R:   R;   R<   R=   R   R   Rô   t   ones(   RF   RG   Rr   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_rbf_kernelÎ  s    c          C   sŸ   t  j j d ƒ }  |  j d ƒ } t | | ƒ } t t  j | ƒ t  j d ƒ ƒ t  j | d k ƒ sj t	 ‚ t  j | t  j t  j | ƒ ƒ d k  ƒ s› t	 ‚ d  S(   Ni    i   i   i   (   i   i   (
   R:   R;   R<   R=   R    R   RŠ   R÷   RÞ   RY   (   RF   RG   Rr   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_laplacian_kernelÖ  s    s   metric, pairwise_funcR   c   
      C   sÙ   t  j j d ƒ } | j d ƒ } | j d	 ƒ } t | ƒ } t | ƒ } | | | d t ƒ} t | ƒ so t ‚ | | | d t ƒ} t | ƒ s— t ‚ t	 | j
 ƒ  | ƒ t | d | d |  ƒ}	 t	 | j
 ƒ  |	 ƒ d  S(
   Ni    i   i   i   t   dense_outputRJ   R4   (   i   i   (   i   i   (   R:   R;   R<   R=   R   t   FalseR   RY   R‡   R   t   todenseR(   (
   R4   t   pairwise_funcRF   RG   RJ   t   Xcsrt   YcsrR   R‚   t   K3(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt&   test_pairwise_similarity_sparse_outputâ  s    c    	      C   së   t  j j d ƒ }  |  j d	 ƒ } |  j d
 ƒ } t | ƒ } t | ƒ } xœ | d  f | | f | d  f | | f f D]p \ } } t | d | d d ƒ} t | ƒ } | d  k	 r¾ t | ƒ } n  t | d | d d ƒ} t | | ƒ qs Wd  S(   Ni    i   i   i   RJ   R4   R   R}   (   i   i   (   i   i   (	   R:   R;   R<   R=   R   RV   R(   R2   R   (	   RF   RG   RJ   Rþ   Rÿ   t   X_t   Y_R   R‚   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_cosine_similarityú  s    "c          C   sS   t  j t  j d ƒ d ƒ }  t |  d  ƒ \ } } | | k sB t ‚ t |  | ƒ d  S(   Ni(   i   i   (   i   i   (   R:   t   resizeRµ   R-   RV   RY   R   (   Rà   t
   XA_checkedt
   XB_checked(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_check_dense_matrices  s    c          C   s³   t  j t  j d ƒ d ƒ }  t  j t  j d ƒ d ƒ } t |  | ƒ \ } } t |  | ƒ t | | ƒ t  j t  j d ƒ d ƒ } t |  | ƒ \ } } t |  | ƒ t | | ƒ d  S(	   Ni(   i   i   i    i   (   i   i   (   i   i   (   i   i   (   R:   R  Rµ   R-   R   R.   (   Rà   Rá   R  R  (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_check_XB_returned  s    c          C   s{   t  j t  j d ƒ d ƒ }  t  j t  j d ƒ d ƒ } t t t |  | ƒ t  j t  j d	 ƒ d
 ƒ } t t t |  | ƒ d  S(   Ni-   i   i	   i    i   i   (   i   i	   (   i   i   i$   (   i   i	   (   R:   R  Rµ   R   RE   R-   R.   (   Rà   Rá   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_check_different_dimensions(  s
    c          C   s–   t  j d ƒ j d d ƒ }  t  j d ƒ j d d ƒ } t t t |  | ƒ t  j d ƒ j d d ƒ }  t  j d ƒ j d d ƒ } t t t |  | ƒ d  S(   Ni-   i	   i   i    i   i   (   R:   Rµ   R¶   R   RE   R-   (   Rà   Rá   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_check_invalid_dimensions2  s    c          C   s2  t  j j d ƒ }  |  j d ƒ } t | ƒ } |  j d ƒ } t | ƒ } t | | ƒ \ } } t | ƒ so t ‚ t t	 | | ƒ j
 ƒ  d ƒ t | ƒ sž t ‚ t t	 | | ƒ j
 ƒ  d ƒ t | | ƒ \ } } t | ƒ sâ t ‚ t t	 | | ƒ j
 ƒ  d ƒ t | ƒ st ‚ t t	 | | ƒ j
 ƒ  d ƒ d  S(   Ni    i   i   (   i   i   (   i   i   (   R:   R;   R<   R=   R   R-   R   RY   R   R   RX   (   RF   Rà   t	   XA_sparseRá   t	   XB_sparseR  R  t   XA_2_checked(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_check_sparse_arrays>  s    c         C   sG   |  j  } t | ƒ d k r/ t d „  |  Dƒ ƒ St d „  |  Dƒ ƒ Sd  S(   Ni   c         s   s   |  ] } t  | ƒ Vq d  S(   N(   t   tuplify(   t   .0RK   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pys	   <genexpr>Y  s    c         s   s   |  ] } | Vq d  S(   N(    (   R  t   r(    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pys	   <genexpr>\  s    (   R?   R˜   R>   (   RG   R½   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyR  T  s    	c          C   s{   t  j j d ƒ }  |  j d ƒ } t | ƒ } |  j d ƒ } t | ƒ } t | | ƒ \ } } t | | ƒ t | | ƒ d  S(   Ni    i   i   (   i   i   (   i   i   (   R:   R;   R<   R=   R  R-   R   (   RF   Rà   t	   XA_tuplesRá   t	   XB_tuplesR  R  (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_check_tuple_input_  s    c          C   sC  t  j t  j d ƒ d ƒ j t  j ƒ }  t  j t  j d ƒ d ƒ j t  j ƒ } t |  d  ƒ \ } } t | j t  j ƒ t |  | ƒ \ } } t | j t  j ƒ t | j t  j ƒ t |  j t  j	 ƒ | ƒ \ } } t | j t  j	 ƒ t | j t  j	 ƒ t |  | j t  j	 ƒ ƒ \ } } t | j t  j	 ƒ t | j t  j	 ƒ d  S(   Ni(   i   i   (   i   i   (   i   i   (
   R:   R  Rµ   Rè   R•   R-   RV   R   R_   Rå   (   Rà   Rá   R  R  (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   test_check_preserve_typek  s    ''Rh   i   t
   seuclideant   mahalanobist   dist_functiont   y_is_xt   idss   Y is Xs
   Y is not Xc         C   s²  t  d d ƒ t j j d ƒ } | j d ƒ } | r± | } t t | d | ƒƒ } | d k r† i t j | d d d	 d
 ƒd 6} qLi t j j	 t j
 | j ƒ ƒ j d 6} n› | j d ƒ } t | | d | ƒ} | d k ri t j t j | | g ƒ d d d	 d
 ƒd 6} n7 i t j j	 t j
 t j | | g ƒ j ƒ ƒ j d 6} t | | d | | }	 t j t | | | d | d |  ƒƒ ƒ }
 t |
 |	 ƒ t |
 | ƒ Wd  QXd  S(   NR­   gš™™™™™¹?i    iè  i
   R4   R  RŽ   t   ddofi   t   Vt   VIRh   (   iè  i
   (   iè  i
   (   R   R:   R;   R<   R=   R   R
   t   varR   t   invt   covRñ   R	   R°   R>   R   (   Rh   R4   R  R  RF   RG   RJ   t   expected_dist_default_paramsRˆ   t   expected_dist_explicit_paramsR¤   (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt+   test_pairwise_distances_data_derived_params…  s&    	%+47(   R¹   Rº   R»   (   R5   RÇ   RÈ   (r   t   typesR    t   numpyR:   R   t   scipy.sparseR   R   R   t   scipy.spatial.distanceR   R   R   R   R	   R
   R   t   pytestt   sklearnR   t   sklearn.utils.testingR   R   R   R   R   R   R   R   R   R   R   t   sklearn.externals.sixR   t   sklearn.metrics.pairwiseR   R   R   R   R   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R+   R,   R-   R.   R/   R0   R1   t   sklearn.preprocessingR2   t   sklearn.exceptionsR3   RR   t   markt   parametrizeR\   Rg   Rl   Rµ   Rè   t   _wminkowski_kwdsRs   Rw   Ry   Rƒ   R„   R‰   R   R   R©   R«   R²   R¸   RE   RD   R¾   RÆ   RÍ   RÑ   RÜ   Râ   Rã   Rä   Rï   Rò   Ró   Rö   Rø   Rù   R  R  R  R	  R
  R  R  R  R  R  R‡   Rû   R$  (    (    (    sB   lib/python2.7/site-packages/sklearn/metrics/tests/test_pairwise.pyt   <module>   s   "	M$ 	)		%		"		$		K									
	
*	%	 			7					
									
					