ó
‡ˆ\c        	   @   sW  d  d l  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 m Z d  d l m Z e j d d d d d g d d d d d g d d d d d g g ƒ Z  d Z! e  j" \ Z# Z$ e d e! d e  d d d d ƒ \ Z% Z& d d „ Z' d „  Z( e  j) j* d ƒ d d  „ ƒ Z+ d d! „ Z, d d" „ Z- d d# „ Z. e  j) j* d ƒ d d$ „ ƒ Z/ d d% „ Z0 d d& „ Z1 d d' „ Z2 d( „  Z3 d) „  Z4 d* „  Z5 d S(+   iÿÿÿÿN(   t   sparse(   t   csgraph(   t   eigh(   t   SpectralEmbedding(   t   _graph_is_connected(   t   _graph_connected_component(   t   spectral_embedding(   t
   rbf_kernel(   t   normalized_mutual_info_score(   t   KMeans(   t
   make_blobs(   t   _deterministic_vector_sign_flip(   t   assert_array_almost_equal(   t   assert_array_equal(   t   assert_equalt   assert_raises(   t   SkipTestg        g      @g      @g      ð?iè  t	   n_samplest   centerst   cluster_stdt   random_statei*   c         C   s´   t  } x§ t |  j d ƒ D]’ } | oŸ |  d d … | f | d d … | f d j ƒ  | d k pŸ |  d d … | f | d d … | f d j ƒ  | d k } | s t Sq Wt  S(   sN    Check array A and B are equal with possible sign flipping on
    each columnsi   Ni   (   t   Truet   ranget   shapet   meant   False(   t   At   Bt   tolt   signt
   column_idx(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt   _check_with_col_sign_flipping$   s    ++c          C   s  t  j j d ƒ }  d } d d d d | g } |  j | ƒ } g  } xÝ t | d  | d ƒ D]Ä \ } } | | | !} x= t t | ƒ d ƒ D]% } | j | | | | d f ƒ qŠ Wd t | ƒ d }	 }
 d } |  j |	 |
 d	 | ƒ} |  j |	 |
 d	 | ƒ} | j	 t | | | | ƒ ƒ qZ Wt
 t  j | ƒ j ƒ \ } } |  j d
 d d	 t | ƒ ƒ} t j | | | f f ƒ } d | | j } xŒ t | d  | d ƒ D]s \ } } t | | | ƒ } | | } t | j ƒ  | ƒ t | | | d ƒ } t | j ƒ  | ƒ t | | ƒ q¢Wd  S(   Ni*   i,  i    iy   iÈ   iÿÿÿÿi   iè  t   sizegš™™™™™¹?g      à?(   t   npt   randomt   RandomStatet   permutationt   zipR   t   lent   appendt   randintt   extendt   tuplet   arrayt   Tt   uniformR    t
   coo_matrixR   R   t   sumR   (   t   rngR   t
   boundariest   pt   connectionst   startt   stopt   groupt   it   min_idxt   max_idxt   n_random_connectionst   sourcet   targett   row_idxR   t   datat   affinityt   component_1t   component_sizet   component_2(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt%   test_sparse_graph_connected_component2   s2    $#"$
s6   ignore:the behavior of nmi will change in version 0.22i$   c   	      C   s&  t  j j |  ƒ } d } t  j d | d | d g ƒ } t  j | j | | ƒ ƒ d | d | … d | … f <t  j | j | | ƒ ƒ d | | d  d  … | d  d  … f <t | d ƒ } | |  j ƒ  sÍ t	 ‚ | | j
 ƒ  sä t	 ‚ t | d ƒ } | |  j
 ƒ  s
t	 ‚ | | j ƒ  s t	 ‚ d | d | d f <d | | d d f <d | j d  d  d | d … <d | | j } t  j d d | ƒ } d | d | +t d d d	 d
 d t  j j |  ƒ ƒ } | j | ƒ } | j | j t  j ƒ ƒ } t  j | j ƒ  d k  d d ƒ} t t | | ƒ d ƒ d  S(   Nid   R   i   i    iÿÿÿÿi   g      à?t   n_componentsR?   t   precomputedR   t   dtypet   floatg      ð?(   R!   R"   R#   t   zerost   abst   randnt   NoneR   t   allt   AssertionErrort   anyt   flatR,   R   t   fit_transformt   astypet   float32R+   t   ravelR   R   (	   t   seedR   t   n_sampleR?   t	   componentt
   true_labelt
   se_precompt   embedded_coordinatet   label_(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt&   test_spectral_embedding_two_componentsY   s.     5;!c      
   C   s³   d } t  d d d d d t j j |  ƒ ƒ } t  d d d d d | d t j j |  ƒ ƒ } | j t t d | ƒƒ } | j t ƒ } t | j | j ƒ t	 | | d	 ƒ s¯ t
 ‚ d  S(
   Ng      ð?RD   i   R?   RE   R   t   rbft   gammagš™™™™™©?(   R   R!   R"   R#   RP   R   t   SR   t   affinity_matrix_R   RM   (   RT   R]   RX   t   se_rbft   embed_precompt	   embed_rbf(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt,   test_spectral_embedding_precomputed_affinityƒ   s    c      
      sØ   d ‰  t  t d ˆ  ƒ} t d d d ‡  f d †  d ˆ  d t j j |  ƒ ƒ } t d d d d d ˆ  d t j j |  ƒ ƒ } | j t ƒ } | j t ƒ } t | j | j ƒ t | | j ƒ t	 | | d	 ƒ sÔ t
 ‚ d  S(
   NgÍÌÌÌÌÌì?R]   RD   i   R?   c            s   t  |  d ˆ  ƒS(   NR]   (   R   (   t   x(   R]   (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt   <lambda>˜   s    R   R\   gš™™™™™©?(   R   R^   R   R!   R"   R#   RP   R   R_   R   RM   (   RT   t   kernt   se_callableR`   Rb   t   embed_callable(    (   R]   sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt)   test_spectral_embedding_callable_affinity’   s    c         C   sÔ   y d d l  m } Wn t k
 r3 t d ƒ ‚ n Xt d d d d d d	 d
 d d t j j |  ƒ ƒ } t d d d d d d d
 d d t j j |  ƒ ƒ } | j t	 ƒ } | j t	 ƒ } t
 | | d ƒ sÐ t ‚ d  S(   Niÿÿÿÿ(   t   smoothed_aggregation_solvers   pyamg not available.RD   i   R?   t   nearest_neighborst   eigen_solvert   amgt   n_neighborsi   R   t   arpackgš™™™™™©?(   t   pyamgRj   t   ImportErrorR   R   R!   R"   R#   RP   R^   R   RM   (   RT   Rj   t   se_amgt	   se_arpackt	   embed_amgt   embed_arpack(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt"   test_spectral_embedding_amg_solver¦   s    c      	   C   s°   t  j j |  ƒ } t d t d d d | ƒ } t d t d d d d d | ƒ } x[ | | g D]M } t d t d | ƒ } | j | j t ƒ ƒ t	 t
 | j t ƒ d	 d
 ƒ q[ Wd  S(   NRD   R?   R\   R   Rk   Rn   i   t
   n_clustersg      ð?i   (   R!   R"   R#   R   Rw   R	   t   fitRP   R^   R   R   t   labels_t   true_labels(   RT   R   R`   t   se_knnt   set   km(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt!   test_pipeline_spectral_clustering¸   s    		c      	   C   sD   t  d d d d d t j j |  ƒ d d ƒ } t t | j t ƒ d  S(   NRD   i   R?   RE   R   Rl   s	   <unknown>(   R   R!   R"   R#   R   t
   ValueErrorRx   R^   (   RT   R|   (    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt+   test_spectral_embedding_unknown_eigensolverÍ   s    	c         C   s>   t  d d d d d t j j |  ƒ ƒ } t t | j t ƒ d  S(   NRD   i   R?   s	   <unknown>R   (   R   R!   R"   R#   R   R   Rx   R^   (   RT   R|   (    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt(   test_spectral_embedding_unknown_affinityÕ   s    c      
   C   sl  t  j d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g g ƒ } t t | ƒ t ƒ t t t j | ƒ ƒ t ƒ t t t j | ƒ ƒ t ƒ t  j d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g g ƒ } t t | ƒ t ƒ t t t j | ƒ ƒ t ƒ t t t j | ƒ ƒ t ƒ d  S(   Ni   i    (	   R!   R+   R   R   R   R    t
   csr_matrixt
   csc_matrixR   (   RT   t   graph(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt   test_connectivityÜ   s     c          C   sY   t  j j d ƒ }  |  j d d ƒ } t | ƒ } t | ƒ } t | ƒ } t | | ƒ d  S(   Ni$   i
   i   (   R!   R"   R#   RJ   R   R   R   (   R   R>   t   simst   embedding_1t   embedding_2(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt%   test_spectral_embedding_deterministicð   s    c    
      C   s´   t  j j d ƒ }  |  j d d ƒ } t | ƒ } d } t | d t d | d t ƒ} t j | d t d	 t	 ƒ\ } } t
 | ƒ \ } } | j |  }	 t |	 ƒ j }	 t | |	 ƒ d  S(
   Ni$   i
   i   i   t   norm_laplacianRD   t
   drop_firstt   normedt   return_diag(   R!   R"   R#   RJ   R   R   R   R   t	   laplacianR   R   R,   R   R   (
   R   R>   R†   RD   R‡   RŽ   t   ddt   _t   diffusion_mapRˆ   (    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt$   test_spectral_embedding_unnormalizedú   s    		c          C   sÔ   t  j j d ƒ }  |  j d d ƒ } t | ƒ } d } x— t d ƒ D]‰ } t | d t d | d t d | ƒ} t  j | d  d  … d	 f ƒ t	 j
 d	 ƒ k s¡ t ‚ t  j | d  d  … d
 f ƒ d k sC t ‚ qC Wd  S(   Ni$   i
   i   i   RŠ   RD   R‹   R   i    i   gü©ñÒMbP?(   R!   R"   R#   RJ   R   R   R   R   t   stdt   pytestt   approxRM   (   R   R>   R†   RD   RT   t	   embedding(    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt*   test_spectral_embedding_first_eigen_vector  s    		4(6   R”   t   numpyR!   t   scipyR    t   scipy.sparseR   t   scipy.linalgR   t$   sklearn.manifold.spectral_embedding_R   R   R   t   sklearn.manifoldR   t   sklearn.metrics.pairwiseR   t   sklearn.metricsR   t   sklearn.clusterR	   t"   sklearn.datasets.samples_generatorR
   t   sklearn.utils.extmathR   t   sklearn.utils.testingR   R   R   R   R   R+   R   R   R   Rw   t
   n_featuresR^   Rz   R   RC   t   markt   filterwarningsR[   Rc   Ri   Rv   R~   R€   R   R…   R‰   R’   R—   (    (    (    sM   lib/python2.7/site-packages/sklearn/manifold/tests/test_spectral_embedding.pyt   <module>   sP   	'(	
	