ó
‡ˆ\c           @   s  d  Z  d d l 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 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, 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. j0 \ Z1 Z2 e( d" e/ d# e. d$ d d% d& ƒ \ Z3 Z4 e j5 e3 ƒ Z6 e j7 j8 d' dz d{ d| g ƒ e j7 j8 d, e j9 e j: g ƒ d- „  ƒ ƒ Z; e j7 j8 d. d/ d0 g ƒ d1 „  ƒ Z< d2 „  Z= d3 „  Z> d4 „  Z? d5 „  Z@ e d6 „  ƒ ZA d7 „  ZB d8 „  ZC d9 „  ZD e j7 j8 d: e3 e6 g d; d( d+ g ƒe j7 j8 d< d= d> e. jE ƒ  g ƒ d? „  ƒ ƒ ZF d@ „  ZG e j7 j8 dA e! e# g ƒ dB „  ƒ ZH dC „  ZI e j7 j8 dD d) d* g ƒ e j7 j8 d, e j9 e j: g ƒ e j7 j8 dE e jJ e j5 g ƒ e j7 j8 dF d} d~ d d€ g ƒ dO „  ƒ ƒ ƒ ƒ ZK dP „  ZL dQ „  ZM dR „  ZN e j7 j8 d: e3 e6 g d; d( d+ g ƒe j7 j8 d< d= d> e. jE ƒ  g ƒ dS „  ƒ ƒ ZO dT „  ZP dU „  ZQ dV „  ZR dW „  ZS dX „  ZT dY „  ZU dZ „  ZV d[ „  ZW d\ „  ZX e j7 j8 d] e! e# g ƒ d^ „  ƒ ZY d_ „  ZZ d` „  Z[ e j7 j8 dD d) d* g ƒ da „  ƒ Z\ e j7 j8 d] e! e# g ƒ e j7 j8 d: e3 e6 g d; d( d+ g ƒe j7 j8 d< d= d> e. jE ƒ  g ƒ db „  ƒ ƒ ƒ Z] e j7 j8 d< d= d> e. jE ƒ  g ƒ dc „  ƒ Z^ dd „  Z_ de „  Z` df „  Za e j7 j8 dD d) d* g ƒ dg „  ƒ Zb dh „  Zc di „  Zd dj „  Ze dk „  Zf dl „  Zg e j7 j8 d] e! e# g ƒ e j7 j8 dm eh ei g ƒ dn „  ƒ ƒ Zj do „  Zk e j7 j8 d: e3 e6 g d; d( d+ g ƒdp „  ƒ Zl dq „  Zm dr „  Zn ds „  Zo dt „  Zp du „  Zq dv „  Zr dw „  Zs dx „  Zt dy „  Zu d S(   s   Testing for K-meansiÿÿÿÿN(   t   sparse(   t   assert_equal(   t   assert_array_equal(   t   assert_array_almost_equal(   t   SkipTest(   t   assert_almost_equal(   t   assert_raises(   t   assert_raises_regex(   t   assert_greater(   t   assert_less(   t   assert_warns(   t   assert_warns_message(   t!   if_safe_multiprocessing_with_blas(   t   assert_raise_message(   t   _num_samples(   t   clone(   t   ConvergenceWarning(   t	   row_norms(   t   v_measure_score(   t   KMeanst   k_means(   t   MiniBatchKMeans(   t   _labels_inertia(   t   _mini_batch_step(   t
   make_blobs(   t	   cStringIO(   t   homogeneity_scoreg        g      @g      ð?g      @id   t	   n_samplest   centerst   cluster_stdt   random_statei*   s   representation, algot   denset   fullt   elkanR    t   dtypec      	   C   sO  i t  j d 6t j d 6|  } | d d g d d g d d g d d g g d | ƒ} d d d d g } t  j d d g d d g g d | ƒ} d d d d g } d } t  j d	 d g d
 d g g d | ƒ}	 d }
 t d d d d d | d | ƒ } | j | d | ƒt | j | ƒ t | j	 | ƒ t
 | j |	 ƒ | j |
 k sKt ‚ d  S(   NR   R    i    g      à?i   R"   i   g      È?g      À?g      ì?i   t
   n_clusterst   n_initt   initt	   algorithmt   sample_weight(   t   npt   arrayt   spt
   csr_matrixR   t   fitR   t   labels_R   t   inertia_R   t   cluster_centers_t   n_iter_t   AssertionError(   t   representationt   algoR"   t   array_constrt   XR'   t   init_centerst   expected_labelst   expected_inertiat   expected_centerst   expected_n_itert   kmeans(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_kmeans_results2   s    6''!t   distributiont   normalt   blobsc      	   C   sÎ   t  j j d ƒ } |  d k r3 | j d d ƒ } n t d | ƒ \ } } t d d d	 d
 d d d d ƒ } t d d d	 d
 d d d d ƒ } | j | ƒ | j | ƒ t | j | j ƒ t	 | j
 | j
 ƒ d  S(   Ni    R>   t   sizei2   i
   R   R&   R    R#   i   R$   i   R!   (   i2   i
   (   R(   t   randomt   RandomStateR>   R   R   R,   R   R/   R   R-   (   R=   t   rndR5   t   _t   km_fullt   km_elkan(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_elkan_resultsL   s    !	
c          C   s—  t  j j d ƒ }  t |  j d t j ƒ } t  j t d d t  j ƒ} t  j	 t ƒ } | j
 t  j ƒ xW t t ƒ D]I } t  j t | | d d d ƒ} | | | | k  <t  j | | ƒ } qr W| j ƒ  } | d k j ƒ  sã t ‚ | d k j ƒ  sû t ‚ d  } t d j d d ƒ } t t | | | ƒ \ }	 }
 t |
 | ƒ t |	 | ƒ t t d	 t ƒ} t t | | | ƒ \ } } t | | ƒ t | | ƒ d  S(
   Ni*   R@   iÿÿÿÿR"   i   t   axisi   g        t   squared(   R(   RA   RB   R   R>   t   shapeR    R   t   intt   emptyt   fillt   inftyt   rangeR#   t   sumR5   t   minimumt   allR1   t   NoneR   R   R   R   t   X_csrt   True(   t   rngt   noisy_centerst   labels_goldt   mindistt	   center_idt   distt   inertia_goldR'   t   x_squared_normst   labels_arrayt   inertia_arrayt   x_squared_norms_from_csrt
   labels_csrt   inertia_csr(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt"   test_labels_assignment_and_inertia`   s.    !c          C   s™  t  j j d ƒ }  t |  j d t j ƒ } | j ƒ  } | j ƒ  } t  j | j d d t  j ƒ} t  j | j d d t  j ƒ} t	 d j
 d d ƒ } t t d t ƒ} t  j t j d d t  j ƒ} t  j t j d d t  j ƒ}	 t	 d	  }
 t d	  } | d	  } | d	  } t  j |
 j d d t  j ƒ} t |
 | | | | | d d  d
 t ƒ\ } } t | d ƒ t |
 | | | ƒ \ } } t | d ƒ t | | ƒ t  j
 | | d ƒ } t | | ƒ t | | | | | |	 d d  d
 t ƒ\ } } t | d ƒ t | | | | ƒ \ } } t | d ƒ t | | ƒ t  j
 | | d ƒ } t | | ƒ t | | ƒ t | | ƒ t | | ƒ t | | ƒ t | | ƒ d  S(   Ni*   R@   i    R"   i   RH   i   RI   i
   t   random_reassigng        (   R(   RA   RB   R   R>   RJ   t   copyt   zerost   doubleR5   RP   R   RT   RU   t   onesR   RS   t   FalseR   R   R	   R   R   R   (   RV   t   old_centerst   new_centerst   new_centers_csrt   weight_sumst   weight_sums_csrR]   t   x_squared_norms_csrt   buffert
   buffer_csrt   X_mbt   X_mb_csrt   x_mb_squared_normst   x_mb_squared_norms_csrt   sample_weight_mbt   old_inertiat   incremental_difft   labelst   new_inertiat   effective_difft   old_inertia_csrt   incremental_diff_csrRa   t   new_inertia_csr(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt!   test_minibatch_update_consistency   sP    



c         C   s•   |  j  } t | j t t f ƒ |  j } t t j | ƒ j d t ƒ t t t	 | ƒ d ƒ t
 |  j d ƒ t t d |  j |  j d d g g ƒ d  S(   Ni    g      ð?g        s&   n_samples=1 should be >= n_clusters=%d(   R/   R   RJ   R#   t
   n_featuresR-   R(   t   uniqueR   t   true_labelsR   R.   R   t
   ValueErrorR,   (   t   kmR   Ry   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   _check_fitted_modelÄ   s    			c          C   sP  t  j d d d d g d d d d g d d d d g d d d d g d d d d g d d d d g g ƒ }  d d d d d d g } t  j d 
d d d g d d d d g d 
d d d g g ƒ } t d d d | d d d	 d
 d d ƒ } xc |  t j |  ƒ f D]L } | j | ƒ | j } t  j | d t ƒd | } t  j	 j
 | | ƒ qü Wd  S(   Ni    i   i   gš™™™™™É?R#   i   R%   R$   t   max_iteri
   R   t   return_index(   R(   R)   R   R*   t
   coo_matrixR,   R-   R   RU   t   testingR   (   R5   Ry   t   bad_centersR„   t   this_Xt   this_labels(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_new_centersÖ   s"    		c       	   C   sZ   t  j d  d k  r" t d ƒ ‚ n  t d d d t d d d	 d
 ƒ j t ƒ }  t |  ƒ d  S(   Ni   i   i   s<   Possible multi-process bug with some BLAS under Python < 3.4R%   s	   k-means++R#   t   n_jobsR   i*   (   i   i   (   t   syst   version_infoR   R   R#   R,   R5   R…   (   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt"   test_k_means_plus_plus_init_2_jobsî   s    c          C   s&   t  d d ƒ }  t t |  j t ƒ d  S(   Nt   precompute_distancest   wrong(   R   R   Rƒ   R,   R5   (   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt&   test_k_means_precompute_distances_flagù   s    c       	   C   s8   t  d d d t d d d t ƒ j t ƒ }  t |  ƒ d  S(   NR%   s	   k-means++R#   R   i*   R’   (   R   R#   Ri   R,   R5   R…   (   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt+   test_k_means_plus_plus_init_not_precomputed   s    c       	   C   s8   t  d d d t d d d t ƒ j t ƒ }  t |  ƒ d  S(   NR%   RA   R#   R   i*   R’   (   R   R#   Ri   R,   R5   R…   (   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt(   test_k_means_random_init_not_precomputed  s    t   datat   idsR%   RA   s	   k-means++c      	   C   s<   t  d | d t d d d d ƒ } | j |  ƒ t | ƒ d  S(   NR%   R#   R   i*   R$   i   (   R   R#   R,   R…   (   R—   R%   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_init  s    !c          C   sf   t  j j d ƒ }  |  j d d ƒ } t t d t d d ƒ j | ƒ t t d t d d ƒ j | ƒ d  S(   Ni    R@   i(   i   R$   iÿÿÿÿ(   i(   i   (   R(   RA   RB   R>   R   Rƒ   R   R,   (   RC   R5   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_n_init  s    t   Classc         C   s6  t  j j d ƒ } | j d d ƒ } |  d d d | d  d  … d  d … f d	 t | ƒ ƒ } d
 } t t | | j | ƒ |  d d d d „  d	 t | ƒ ƒ } t t | | j | ƒ d } |  d d d | d  d … d  d  … f d	 d ƒ } t t | | j | ƒ |  d d d d „  d	 d ƒ } t t | | j | ƒ d  S(   Ni    R@   i(   i   R$   i   R%   i   R#   s1   does not match the number of features of the datac         S   s   |  d  d  … d  d … f S(   Ni   (    (   t   X_t   kR   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   <lambda>+  s    s%   does not match the number of clustersc         S   s   |  d  d … d  d  … f S(   Ni   (    (   Rœ   R   R   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyRž   4  s    (   i(   i   (   R(   RA   RB   R>   t   lenR   Rƒ   R,   (   R›   RC   R5   R„   t   msg(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt    test_k_means_explicit_init_shape  s     7	1		c          C   s»   t  j d d g d d g d d g g ƒ }  t  j d d g d d g g ƒ } t  j d d d g ƒ } t d d d | d t d d d d	 ƒ } | j |  ƒ t | j | ƒ t | j	 | ƒ d  S(
   Ni    i   R$   R%   R’   R   i*   R#   i   (
   R(   t   asfortranarrayR)   R   Ri   R,   R   R/   R   R-   (   R5   R   Ry   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt!   test_k_means_fortran_aligned_data9  s    *!R3   t   constructors   seed, max_iter, toli    i   gH¯¼šò×z>i   gš™™™™™¹?i   i,  i   c         C   sô   t  j d k r t j d ƒ n  |  d k o7 | t j k sð t j j | ƒ } t	 d d d d d d d	 | ƒ d
 j
 | d t ƒ} | | ƒ } t d |  d d d	 | d | d | d d ƒ } | j | ƒ j | ƒ }	 | j | ƒ }
 t |	 |
 ƒ n  d  S(   Nt   darwinsV   Known failures on MacOS, See https://github.com/scikit-learn/scikit-learn/issues/12644R!   R   iè  R€   i
   R   R   i    Re   R&   R#   t   tolR†   RŽ   i   (   R   t   platformt   pytestt   xfailR*   R+   R(   RA   RB   R   t   astypeRi   R   R,   t   predictt   fit_predictR   (   R3   R"   R¤   t   seedR†   R¦   RV   R5   R;   t   labels_1t   labels_2(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_fit_predictE  s    
c       	   C   sX   t  d d d t d d d d ƒ }  t j } t ƒ  t _ z |  j t ƒ Wd  | t _ Xd  S(   NR%   s	   k-means++R#   R   i*   t   verbosei   (   R   R#   R   t   stdoutt   StringIOR,   R5   (   t
   mb_k_meanst
   old_stdout(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_mb_kmeans_verboseg  s    	c          C   s2   t  d d d d d d ƒ }  t t |  j t ƒ d  S(   NR%   s	   k-means++t	   init_sizei
   R#   i   (   R   R
   t   RuntimeWarningR,   R5   (   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt    test_minibatch_init_with_large_kr  s    c       	   C   s>   t  d t j ƒ  d t d d d d ƒ }  t t |  j t ƒ d  S(   NR%   R#   R   i*   R$   i
   (   R   R   Re   R#   R
   R¸   R,   R5   (   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt?   test_minibatch_k_means_init_multiple_runs_with_explicit_centersy  s    c      	   C   s<   t  d | d t d d d d ƒ } | j |  ƒ t | ƒ d  S(   NR%   R#   R   i*   R$   i
   (   R   R#   R,   R…   (   R—   R%   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_minibatch_k_means_init  s    c       	   C   sê   t  d d d d d d d d ƒ \ }  } d	 |  d  d  d
 … d  d  … f <t d d d d d d d d ƒ } | j |  ƒ t | j j d d ƒ j ƒ  d ƒ t d d d d d d d d ƒ } | j |  ƒ t | j j d d ƒ j ƒ  d ƒ d  S(   NR   id   R   i   R   g      ð?R   i*   i    i   R#   i   t
   batch_sizei
   R%   RA   RH   i   iÉ   (   R   R   R,   R   R/   t   anyRP   (   t   zeroed_XR‚   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt$   test_minibatch_sensible_reassign_fitˆ  s    	"c       	   C   s«   t  d t d d d d d d ƒ \ }  } d |  d  d  d	 … d  d  … f <t d
 d d d d d ƒ } x! t d ƒ D] } | j |  ƒ qn Wt | j j d d ƒ j ƒ  d ƒ d  S(   NR   R   i   R   g      ð?R   i*   i    i   R#   i   R%   RA   id   RH   i   i
   (	   R   R   R   RO   t   partial_fitR   R/   R½   RP   (   R¾   R‚   R´   t   i(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt,   test_minibatch_sensible_reassign_partial_fit  s    c          C   sý  t  j t j d d t j ƒ}  xý t t f D]ï } t d t d d d d ƒ } | j | ƒ | j	 | ƒ } z t
 j } t ƒ  t
 _ t | |  t d j d	 d
 ƒ | j | j t  j t j d
 t  j ƒ t d t  j t j d ƒ d t d d d d
 d t ƒWd  | t
 _ Xt | | j	 | ƒ ƒ q, Wx× t t f D]É } t d t d d d t j ƒ  d d d d
 ƒ } | j | ƒ | j } t | |  t d j d	 d
 ƒ | j | j t  j t j d
 t  j ƒ t d t  j t j d ƒ d t d d d d ƒt | | j ƒ q,Wd  S(   Ni    R"   R#   R¼   id   R   i*   i   RH   i   t	   distancesRd   t   reassignment_ratioR±   R%   R$   gVçž¯Ò<(   R(   Rh   R5   RJ   R"   RT   R   R#   R,   t   scoreR   R²   R³   R   RP   R/   t   counts_Rf   Rg   Ri   RU   R   R   Re   R   (   R'   R‹   R´   t   score_beforeRµ   t   clusters_before(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_minibatch_reassign¨  s@    		
	c       	   C   sb   d }  t  j j d ƒ } | j d |  d f ƒ } d } t d | d d d |  d	 d ƒ j | ƒ d  S(
   Ni&  i*   R@   i
   R#   R¼   id   R·   R   (   R(   RA   RB   t   uniformR   R,   (   R   RC   R5   R#   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt&   test_minibatch_with_many_reassignmentsÕ  s    c          C   sf   d „  }  d } t  t | t d |  d d ƒ j t ƒ t d d d |  d d ƒ j t ƒ } t | ƒ d  S(   Nc         S   s   t  S(   N(   R   (   R5   R   R   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt	   test_initè  s    s%   does not match the number of clustersR%   R   i*   R#   i   (   R   Rƒ   R   R,   RT   R…   (   RÌ   R    R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt$   test_sparse_mb_k_means_callable_initæ  s    		c          C   sn   t  d t d d d d ƒ }  x' t j t d ƒ D] } |  j | ƒ q. W|  j t ƒ } t t t	 | ƒ d ƒ d  S(   NR#   R%   RA   R   i*   i
   g      ð?(
   R   R#   R(   t   array_splitR5   RÀ   R«   R   R   R‚   (   R„   t   X_minibatchRy   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt/   test_mini_batch_k_means_random_init_partial_fitø  s
    c          C   s[   t  d t j ƒ  d t d d d d d d ƒ j t ƒ }  t |  j d	 |  j ƒ t	 |  ƒ d  S(
   NR%   R#   R¼   i
   R   i*   R$   i   i   (
   R   R   Re   R#   R,   R5   R   t
   init_size_R¼   R…   (   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt    test_minibatch_default_init_size  s
    c       	   C   s8   t  d t d d d d d d ƒ j t ƒ }  t |  ƒ d  S(   NR#   R¼   i
   R   i*   R¦   g{®Gáz„?(   R   R#   R,   R5   R…   (   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_minibatch_tol  s    c          C   sd   t  d t j ƒ  d t d d d d d d ƒ j t ƒ }  t |  j d ƒ t |  j t	 ƒ t
 |  ƒ d  S(	   NR%   R#   R·   iš  R   i*   R$   i   (   R   R   Re   R#   R,   R5   R   R·   RÑ   R   R…   (   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_minibatch_set_init_size  s    t	   Estimatorc         C   s2   |  d d d d d t  ƒ } t t | j t ƒ d  S(   NR%   t   invalidR$   i   R#   (   R#   R   Rƒ   R,   R5   (   RÕ   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_invalid_init  s    c          C   sO   t  j ƒ  }  t d t d t d d ƒ } | j |  ƒ t | ƒ t |  t  ƒ d  S(   Nt   copy_xR#   R   i*   (   R5   Re   R   Ri   R#   R,   R…   R   (   t   my_XR„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_copyx!  s
    
c       	   C   s5  t  j d d g d d g d d g d d g g ƒ }  t  j d d g d d g d d g g ƒ } t d | d d d	 d
 d d ƒ } | j |  ƒ t t t  j | j ƒ ƒ d ƒ | j } t  j	 j
 | d | d ƒ d k sÝ t ‚ t  j	 j
 | d | d ƒ d k st ‚ t  j	 j
 | d | d ƒ d k s1t ‚ d  S(   Ngš™™™™™ñ?gÍÌÌÌÌÌì?g      ð?g      @g      ÀR%   R#   i   R   i*   R$   i   i    gš™™™™™¹?i   (   R(   R)   R   R,   R   RŸ   R   R-   R/   t   linalgt   normR1   (   RÙ   t
   array_initR„   R   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_non_collapsed,  s    3*!	**c         C   s”   t  d t d d d d d d d |  ƒ } | j t ƒ j t ƒ } t  d t d d d d d d d |  ƒ } | j t ƒ j t ƒ } | | k s t ‚ d  S(	   NR#   R†   i   R   i*   R$   R&   i
   (   R   R#   R,   R5   RÅ   R1   (   R3   t   km1t   s1t   km2t   s2(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt
   test_score@  s    		c      	   C   sŽ   |  d t  d | d d d d ƒ j | ƒ } t | j | ƒ | j ƒ | j | j ƒ } t | t j t  ƒ ƒ | j | ƒ } t | | j ƒ d  S(   NR#   R%   R$   i
   R   i    (	   R#   R,   R   R«   R-   R/   R(   t   arangeR¬   (   RÕ   R—   R%   R   t   pred(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_predictL  s    c      	   C   sG   t  d t d |  d d d d ƒ j t ƒ } t | j t ƒ | j ƒ d  S(   NR#   R%   R$   i
   R   i    (   R   R#   R,   RT   R   R«   R5   R-   (   R%   R´   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt#   test_predict_minibatch_dense_sparse_  s    c    	      C   sá  d d g d d g d d g d d g d d g d d g g }  xžt  j t  j g D]Š} t  j |  d	 | ƒ} t j | ƒ } | d  } t d
 d ƒ j | ƒ t d
 d d | d d ƒ j | ƒ t d
 d d d d d ƒ j | ƒ t d
 d d d d d ƒ j | ƒ t d
 d d d d | d d ƒ j | ƒ t d
 d d d d | d d ƒ j | ƒ g } x$ | D] } t	 | j
 j t  j ƒ qVWd d d d d d g } t  j g  | D] } t | | j ƒ ^ q›ƒ } t | t  j | j d ƒ ƒ qO Wd  S(   Ni    i
   i   i	   iÿÿÿÿi   i   i   R"   R#   R%   R$   R¼   (   R(   t   int32t   int64R)   R*   R+   R   R,   R   R   R/   R"   t   float64R   R-   R   Rh   RJ   (	   t   X_listR"   t   X_intt	   X_int_csrt   init_intt   fitted_modelsR„   R7   t   scores(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_int_inputi  s(    <
!!	%c          C   s   t  d t ƒ }  |  j t ƒ |  j |  j ƒ } xh t t ƒ D]Z } t | | | f d ƒ x: t t ƒ D], } | | k re t | | | f d ƒ qe qe Wq; Wd  S(   NR#   i    (	   R   R#   R,   R5   t	   transformR/   RO   R   R   (   R„   t   X_newt   ct   c2(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_transform‡  s    c          C   sV   t  d d d d ƒ j t ƒ j t ƒ }  t  d d d d ƒ j t ƒ } t |  | ƒ d  S(   NR#   i   R   i3   (   R   R,   R5   Rò   t   fit_transformR   (   t   X1t   X2(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_fit_transform“  s    'c         C   sQ   t  d d d d d d d d d |  ƒ } | j t ƒ t | j t ƒ | j ƒ d  S(   NR   i   RŽ   i   R$   R†   R&   (   R   R,   R5   R   R«   R-   (   R3   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_predict_equal_labels™  s    	c          C   sm   t  d d d d ƒ j t ƒ }  t  d d d d ƒ j t ƒ } t |  j t ƒ | j t ƒ ƒ d k si t ‚ d  S(   NR&   R    R   i   R!   g      ð?(   R   R,   R5   R   R«   R1   (   Rß   Rá   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_full_vs_elkan¡  s    c          C   s  d }  d d d g } t  j t | ƒ |  f ƒ } xn t | ƒ D]` \ } } xQ t |  ƒ D]C } t d t d d d | d | ƒ j t ƒ } | j	 | | | f <qV Wq= W| j
 d	 d ƒ } d
 t | ƒ } xB t t | ƒ d ƒ D]* } | | | | d k sÚ t | ƒ ‚ qÚ Wd  S(   Ni   i   i
   R#   R%   RA   R$   R   RH   s:   Inertia %r should be decreasing when n_init is increasing.(   R(   Rf   RŸ   t	   enumerateRO   R   R#   R,   R5   R.   t   meant   listR1   (   t   n_runst   n_init_ranget   inertiaRÁ   R$   t   jR„   t   failure_msg(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_n_init¨  s    c          C   s$  t  j }  t ƒ  t  _ z+ t t d t d d  d t ƒ\ } } } Wd  |  t  _ X| } t | j	 t t
 f ƒ | } t t j | ƒ j	 d t ƒ t t t | ƒ d ƒ t | d ƒ t t t t d t d d  d | ƒt t t t d t j	 d d d d  ƒt t d	 t d
 t d d d d  d d ƒd  S(   NR#   R'   R±   i    g      ð?g        R%   i   s2   algorithm='elkan' not supported for sparse input XR5   i   R&   R!   (   R   R²   R³   R   R5   R#   RS   RU   R   RJ   R€   R(   R   R   R‚   R   R
   R¸   R   Rƒ   R   t	   TypeErrorRT   (   Rµ   t   cluster_centersRy   R  R   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_functionº  s(    	
 	c          C   sj   d d l  m }  t j t d d d ƒ} |  t d d d d	 d
 | ƒ} t | |  t d d d d	 ƒƒ d  S(   Niÿÿÿÿ(   t   _init_centroidsi   RH   i   i   s	   k-means++R   i    R]   (   t   sklearn.cluster.k_means_R	  R(   RP   R5   R   (   R	  t   X_normst
   precompute(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt#   test_x_squared_norms_init_centroidsÝ  s    c          C   s)   t  d d ƒ }  t t d |  j t ƒ d  S(   NR†   iÿÿÿÿs   Number of iterations should be(   R   R   Rƒ   R,   R5   (   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_max_iter_erroré  s    	t	   is_sparsec         C   s  |  d d d d ƒ } i  } i  } i  } xî t  j t  j g D]Ú } | r^ t j t d | ƒ} n t j | ƒ } | j | ƒ t	 | j
 j | ƒ | j | | <| j | ƒ | | <| j
 | | <t	 | j | d  ƒ | j d ƒ t | d ƒ r: | j | d d !ƒ t	 | j
 j | ƒ q: q: Wt | t  j | t  j d	 d
 ƒt | t  j | t  j d	 d
 ƒt | t  j | t  j d	 d
 ƒd  S(   NR$   i   R   i   R"   i    RÀ   i   t   decimali   (   R(   Rê   t   float32R*   R+   RT   R5   Rª   R,   R   R/   R"   R.   Rò   R«   R-   t   hasattrRÀ   R   (   RÕ   R  t	   estimatorR  Ró   R   R"   t   X_test(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_float_precisionï  s0    c          C   só   t  j d d g d d g d d g d d g g ƒ }  t  j d d g d d g d d g g ƒ } x t  j t  j t  j t  j g D]o } | |  ƒ } | | ƒ } t | | ƒ t d | d	 d
 d d ƒ } | j | ƒ t	 t
 t  j | j | ƒ ƒ q| Wd  S(   Ngš™™™™™ñ?g      Àgš™™™™™ñ¿g      @g        g      @g      ÀR%   R#   i   R$   i   (   R(   R)   Rè   Ré   R  Rê   R   R   R,   R   Ri   t   may_share_memoryR/   (   t   X_smallR6   R"   R  t   init_centers_testR„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_k_means_init_centers  s    3*%c         C   sS   t  d d ƒ j t ƒ j } t  d d d | d d ƒ j t ƒ j } t | | ƒ d  S(   NR#   i   R%   R$   i   (   R   R,   R5   R/   R   (   R—   R   Rk   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt    test_k_means_init_fitted_centers(  s    c          C   sx   d d l  m }  |  ƒ  } | j } t d d ƒ j | ƒ j } t d d d | d d ƒ } d	 } t t | | j | ƒ d  S(
   Niÿÿÿÿ(   t	   load_irisR#   i   i   R%   R$   i   sY   The shape of the initial centers \(\(4L?, 4L?\)\) does not match the number of clusters 3(   t   sklearn.datasetsR  R—   R   R,   R/   R   Rƒ   (   R  t   irisR5   R   t
   classifierR    (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_sparse_validate_centers3  s    		c       	   C   s–   t  j d d g d d g d d g d d g g ƒ }  t d d ƒ j |  ƒ } t t | j ƒ t t d ƒ ƒ ƒ d } t t	 | t
 |  d d  d d ƒd  S(   Ni    i   R#   i   i   si   Number of distinct clusters (3) found smaller than n_clusters (4). Possibly due to duplicate points in X.R'   (   R(   t   asarrayR   R,   R   t   setR-   RO   R   R   R   RS   (   R5   R„   R    (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt$   test_less_centers_than_unique_pointsD  s    		"c         C   s   t  j |  d d ƒS(   NRH   i    (   R(   t   sort(   R   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   _sort_centersX  s    c       
   C   sR  t  j j d ƒ }  |  j d d d t ƒ} t  j t | d d ƒ} t d d d t d	 d
 ƒ t d d d t d	 d
 ƒ t d t	 j
 ƒ  d t d	 d
 ƒ t d t d d d	 d
 ƒ g } x | D]• } t | ƒ j t d | ƒ} t | ƒ j | ƒ } t  j | j | ƒ } t t | j | ƒ d ƒ t | t ƒ sµ t t | j ƒ t | j ƒ ƒ qµ qµ Wd  S(   Ni    i   i   R@   RH   R%   s	   k-means++R#   R   i*   RA   R¼   i
   R'   g      ð?(   R(   RA   RB   t   randintR   t   repeatR5   R   R#   R   Re   R   R   R,   R-   R   R   t
   isinstanceR$  R/   (   RV   R'   t   X_repeatt
   estimatorsR  t   est_weightedt   est_repeatedt   repeated_labels(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_weighted_vs_repeated\  s(    c          C   s³   t  j t ƒ }  x t d t d d ƒ t d t d d ƒ g D]q } t | ƒ j t ƒ } t | ƒ j t d |  ƒ} t	 t
 | j | j ƒ d ƒ t	 t | j ƒ t | j ƒ ƒ q: Wd  S(   NR#   R   i*   R'   g      ð?(   R(   Rh   R   R   R#   R   R   R,   R5   R   R   R-   R$  R/   (   R'   R  t   est_1t   est_2(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_unit_weights_vs_no_weightsu  s    c          C   s·   t  j t ƒ }  x¡ t d t d d ƒ t d t d d ƒ g D]u } t | ƒ j t ƒ } t | ƒ j t d d |  ƒ} t	 t
 | j | j ƒ d ƒ t	 t | j ƒ t | j ƒ ƒ q: Wd  S(   NR#   R   i*   R'   g      à?g      ð?(   R(   Rh   R   R   R#   R   R   R,   R5   R   R   R-   R$  R/   (   R'   R  R.  R/  (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_scaled_weights‚  s    c          C   s>   t  d t d d ƒ }  t t d |  j t d t j d ƒ ƒd  S(   NR#   R   i*   s   len\(sample_weight\)R'   i   (   R   R#   R   Rƒ   R,   R5   R(   Rh   (   R„   (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_sample_weight_length  s    c          C   sn   d d l  m }  d  } |  t | ƒ } t t t ƒ t | ƒ ƒ t | j ƒ  t t ƒ ƒ t t j | j ƒ d  S(   Niÿÿÿÿ(   t   _check_sample_weight(	   R
  R3  RS   R5   R   R   R   RP   R"   (   R3  R'   t   checked_sample_weight(    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_check_sample_weight—  s    c          C   sJ   t  d d d d ƒ }  |  j t j j d d ƒ ƒ |  j d k sF t ‚ d  S(   NR&   R!   R†   i   i
   (   R   R,   R(   RA   t   randR0   R1   (   R  (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   test_iter_attribute   s    (   R   R    (   R   R!   (   R    R    (   i    i   gH¯¼šò×z>(   i   i   gš™™™™™¹?(   i   i,  gH¯¼šò×z>(   i   i,  gš™™™™™¹?(v   t   __doc__R   t   numpyR(   t   scipyR    R*   R¨   t   sklearn.utils.testingR   R   R   R   R   R   R   R   R	   R
   R   R   R   t   sklearn.utils.validationR   t   sklearn.baseR   t   sklearn.exceptionsR   t   sklearn.utils.extmathR   t   sklearn.metrics.clusterR   t   sklearn.clusterR   R   R   R
  R   R   t"   sklearn.datasets.samples_generatorR   t   sklearn.externals.six.movesR   R³   R   R)   R   R   RJ   R#   R€   R5   R‚   R+   RT   t   markt   parametrizeR  Rê   R<   RG   Rc   R   R…   R   R‘   R”   R•   R–   Re   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ö   Rú   Rû   Rü   R  R  R  R  Ri   RU   R  R  R  R  R"  R$  R-  R0  R1  R2  R5  R7  (    (    (    sA   lib/python2.7/site-packages/sklearn/cluster/tests/test_k_means.pyt   <module>   sÚ   	-$	!	C					$0	
$				$0			-							$		$$3-
			$			#		')	0									