ó
‡ˆ\c           @   sÜ  d  Z  d d l m Z d d l Z d d l 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 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 y d d l  m! Z! e" Z# Wn e$ k
 rMe% Z# n Xe j& j' d d% ƒ e j& j' d d& ƒ d „  ƒ ƒ Z( d „  Z) d „  Z* d „  Z+ d „  Z, e j& j' d d d  d! d" g ƒ d# „  ƒ Z- d$ „  Z. d S('   s'   Testing for Spectral Clustering methodsiÿÿÿÿ(   t   divisionN(   t   sparse(   t   cPickle(   t   check_random_state(   t   assert_equal(   t   assert_array_equal(   t   assert_raises(   t   assert_warns_message(   t   SpectralClusteringt   spectral_clustering(   t
   discretize(   t   img_to_graph(   t   pairwise_distances(   t   adjusted_rand_score(   t   kernel_metricst
   rbf_kernel(   t
   make_blobs(   t   smoothed_aggregation_solvert   eigen_solvert   arpackt   lobpcgt   assign_labelst   kmeansR
   c         C   s¼  t  j d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g d d d d d d d g g ƒ } xþ | t j | ƒ f D]ç } t d d d d d d	 d
 |  d | ƒ j | ƒ } | j } | d d k r)d | } n  t | d d d d d d d g ƒ d k sYt ‚ t	 j
 t	 j | ƒ ƒ } | j | j k s‰t ‚ | j | j k s¡t ‚ t | j | j ƒ qÍ Wd  S(   Ng      ð?gš™™™™™É?g        t   random_statei    t
   n_clustersi   t   affinityt   precomputedR   R   i   (   t   npt   arrayR   t
   csr_matrixR   t   fitt   labels_R   t   AssertionErrorR   t   loadst   dumpsR   R   R   (   R   R   t   St   matt   modelt   labelst
   model_copy(    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt   test_spectral_clustering    s*    !			0c       
   C   s®   t  j d d d g d d d g d d d g g ƒ }  t d d d |  d d d	 d
 ƒ \ } } t | ƒ } t  j | ƒ | } t j | ƒ } t t t	 | d d d	 d d d ƒd  S(   Ng        g      $@g      4@t	   n_samplesid   t   centerst   cluster_stdg      ð?R   i*   R   i   i    R   s	   <unknown>(
   R   R   R   R   t   maxR   t
   coo_matrixR   t
   ValueErrorR	   (   R*   t   Xt   true_labelst   DR#   (    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt   test_spectral_unknown_mode=   s    c       
   C   s®   t  j d d d g d d d g d d d g g ƒ }  t d d d |  d d d	 d
 ƒ \ } } t | ƒ } t  j | ƒ | } t j | ƒ } t t t	 | d d d	 d d d ƒd  S(   Ng        g      $@g      4@R)   id   R*   R+   g      ð?R   i*   R   i   i    R   s	   <unknown>(
   R   R   R   R   R,   R   R-   R   R.   R	   (   R*   R/   R0   R1   R#   (    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt#   test_spectral_unknown_assign_labelsM   s    c       	   C   s¶   t  d d d d d d d g d d g g d d	 ƒ \ }  } t |  d
 d ƒ} t j | d d ƒ } t j | ƒ } t d d d d d d ƒ j | ƒ j } t	 | | ƒ d k s² t
 ‚ d  S(   NR)   i   R   i    R*   i   iÿÿÿÿR+   g{®Gáz„?t   gammag-Cëâ6?R   i   R   R   (   R   R   R   t   maximumR   R-   R   R   R   R   R    (   R/   t   yR#   R&   (    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt   test_spectral_clustering_sparse]   s    'c       	   C   s1  t  d d d d d d d g d d g g d d	 ƒ \ }  } t d
 d d d d d ƒ } t t d | j |  ƒ t | | j ƒ d k sˆ t ‚ t d
 d d d d d ƒ } | j |  ƒ j } t | | ƒ d k sÐ t ‚ t d ƒ j	 d d ƒ d }  t
 ƒ  } xi | D]a } | d k rü t d
 d d | d d ƒ } | j |  ƒ j } |  j d f | j k s]t ‚ qü qü Wt d
 d d d „  d d ƒ } | j |  ƒ j } |  j d f | j k s°t ‚ d „  } t d
 d d | d d ƒ } | j |  ƒ j } |  j d f | j k st ‚ t d
 d d d ƒ } t t | j |  ƒ d  S(   NR)   i   R   i    R*   i   iÿÿÿÿR+   g{®Gáz„?R   i   R   t   nearest_neighborss   not fully connectedR4   i
   i   t   additive_chi2c         S   s   d S(   Ni   (    (   t   xR6   (    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt   <lambda>‡   s    c         [   s#   t  | i  ƒ t j |  | ƒ j ƒ  S(   N(   R   R   t   minimumt   sum(   R:   R6   t   kwargs(    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt	   histogramŒ   s    s	   <unknown>(   R   R   R   t   UserWarningR   R   R   R    R   t   randR   t   shapeR   R.   (   R/   R6   t   spR&   t   kernels_availablet   kernR?   (    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt   test_affinitiesj   s6    '			&		R)   i2   id   i–   iô  c         C   sì   t  j j d d ƒ } xÐ t d d ƒ D]¿ } | j d | d |  ƒ } t  j | t  j ƒ } t j t  j	 |  ƒ t  j
 |  ƒ | f f d |  | d f ƒ} | j ƒ  d | j |  | d ƒ } t | | ƒ } t | | ƒ d	 k s% t ‚ q% Wd  S(
   Nt   seedi   i   i
   i    i   RB   gš™™™™™¹?gš™™™™™é?(   R   t   randomt   RandomStatet   ranget   randintR   t   floatR   R-   t   onest   aranget   toarrayt   randnR
   R   R    (   R)   R   t   n_classt   y_truet   y_indicatort   y_true_noisyt   y_pred(    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt   test_discretizeš   s    	c       
   C   s‡  t  j d ƒ \ }  } d d } } d \ } } |  | d d	 | | d
 d	 | d	 k  } |  | d d	 | | d
 d	 | d	 k  } | | B} | j ƒ  }	 | j t ƒ }
 t |
 d |	 ƒ} t  j | j | j j ƒ  ƒ | _ t	 | d d	 d d d d ƒ} t
 t  j | ƒ ƒ d	 k st ‚ t rat	 | d d	 d d d d ƒ} t | | ƒ d
 k sƒt ‚ n" t t t	 | d d	 d d d d ƒd  S(   Ni(   i   i   i   i   i   i   i    i   i   t   maskR   R   R   R   t   amg(   i(   i(   (   i   i   (   i   i   (   i   i   (   R   t   indicest   copyt   astypeRL   R   t   expt   datat   stdR	   t   lent   uniqueR    t
   amg_loadedR   R   R.   (   R:   R6   t   center1t   center2t   radius1t   radius2t   circle1t   circle2t   circlesRW   t   imgt   grapht   labels_arpackt
   labels_amg(    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt0   test_spectral_clustering_with_arpack_amg_solvers¯   s(    ,,
#!(   R   R   (   R   R
   (/   t   __doc__t
   __future__R    t   numpyR   t   scipyR   t   pytestt   sklearn.externals.six.movesR   t   sklearn.utilsR   t   sklearn.utils.testingR   R   R   R   t   sklearn.clusterR   R	   t   sklearn.cluster.spectralR
   t   sklearn.feature_extractionR   t   sklearn.metricsR   R   t   sklearn.metrics.pairwiseR   R   t"   sklearn.datasets.samples_generatorR   t   pyamgR   t   TrueRa   t   ImportErrort   Falset   markt   parametrizeR(   R2   R3   R7   RF   RV   Rm   (    (    (    sB   lib/python2.7/site-packages/sklearn/cluster/tests/test_spectral.pyt   <module>   s<   

!				0*