ó
‡ˆ\c           @   sm  d  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 d d l m Z d d l m Z d d l m Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d S(   s+   
Tests for the birch clustering algorithm.
iÿÿÿÿ(   t   sparseN(   t   generate_clustered_data(   t   Birch(   t   AgglomerativeClustering(   t
   make_blobs(   t   ConvergenceWarning(   t
   ElasticNet(   t   pairwise_distances_argmint   v_measure_score(   t   assert_greater_equal(   t   assert_equal(   t   assert_greater(   t   assert_almost_equal(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_raises(   t   assert_warnsc          C   s·   t  d d ƒ \ }  } t ƒ  } | j |  ƒ t g  | j j D] } | j ^ q; ƒ } t g  | j ƒ  D] } | j D] } | j ^ qp qc ƒ } t | |  j	 d ƒ t | |  j	 d ƒ d  S(   Nt	   n_samplesi
   i    (
   R   R   t   fitt   sumt   root_t   subclusters_t
   n_samples_t   _get_leavesR
   t   shape(   t   Xt   yt   brct   sct   n_samples_roott   leaft   n_samples_leaves(    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   test_n_samples_leaves_roots   s    	("c          C   s©   t  d d ƒ \ }  } t d d ƒ } | j |  ƒ t d d  ƒ } | j |  d  ƒ | j |  d ƒ t | j | j ƒ | j d d ƒ | j d  ƒ t | j	 | j	 ƒ d  S(   NR   id   t
   n_clustersi   i2   (
   R   R   R   t   Nonet   partial_fitR   t   subcluster_centers_t
   set_paramsR   t   subcluster_labels_(   R   R   R   t   brc_partial(    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   test_partial_fit&   s    	
c          C   sÏ   t  j j d ƒ }  t d d d d d d ƒ } t  j d ƒ } |  j | ƒ | | d  d  … f } t d d d	 d
 ƒ } | j | ƒ | j } t	 | j
 | j | ƒ ƒ t | | ƒ } t t | | j
 ƒ d
 ƒ d  S(   Ni    R!   i   t
   n_featurest   n_samples_per_clusteri
   i   i   t	   thresholdg      ð?(   t   npt   randomt   RandomStateR   t   aranget   shuffleR   R   R$   R   t   labels_t   predictR   R   R   (   t   rngR   t   shuffle_indicest	   X_shuffleR   t	   centroidst   nearest_centroid(    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   test_birch_predict8   s    		c          C   s  t  d d d d ƒ \ }  } t d d ƒ } | j |  ƒ t t | j ƒ d ƒ t t t j | j	 ƒ ƒ d ƒ t
 d d ƒ } t d | ƒ } | j |  ƒ t | j | j ƒ t | j	 | j	 ƒ t ƒ  } t d | ƒ } t t | j |  ƒ t d d ƒ } t t | j |  ƒ d  S(   NR   id   t   centersi
   R!   R+   g     ˆÃ@(   R   R   R   R   t   lenR$   R
   R,   t   uniqueR1   R   R   R&   R   R   t
   ValueErrorR   R   (   R   R   t   brc1t   gct   brc2t   clft   brc3t   brc4(    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   test_n_clustersJ   s    	c          C   sŒ   t  d d d d ƒ \ }  } t d d ƒ } | j |  ƒ t j |  ƒ } t d d ƒ } | j | ƒ t | j | j ƒ t | j | j ƒ d  S(   NR   id   R9   i
   R!   (	   R   R   R   R    t
   csr_matrixR   R1   R   R$   (   R   R   R   t   csrt
   brc_sparse(    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   test_sparse_Xd   s    	c         C   sM   |  j  } t | t | ƒ ƒ x* | D]" } | j r# t | j | ƒ q# q# Wd  S(   N(   R   R	   R:   t   child_t   check_branching_factor(   t   nodet   branching_factort   subclusterst   cluster(    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyRI   s   s
    		c          C   s·   t  ƒ  \ }  } d } t d d  d | d d ƒ } | j |  ƒ t | j | ƒ t d d d | d d ƒ } | j |  ƒ t | j | ƒ t d d  d d d d ƒ } t t | j |  ƒ d  S(   Ni	   R!   RK   R+   g{®Gáz„?i   i   (   R   R   R"   R   RI   R   R   R<   (   R   R   RK   R   (    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   test_branching_factor{   s    		c         C   sP   |  j  j } x= | rK | j } x | D] } t | | j ƒ q% W| j } q Wd S(   s&   Use the leaf linked list for traversalN(   t   dummy_leaf_t
   next_leaf_R   R	   t   radius(   t   birch_instanceR+   t   current_leafRL   R   (    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   check_threshold   s    		c          C   s}   t  d d d d ƒ \ }  } t d d d d  ƒ } | j |  ƒ t | d ƒ t d d d d  ƒ } | j |  ƒ t | d ƒ d  S(	   NR   iP   R9   i   R+   g      à?R!   g      @(   R   R   R"   R   RT   (   R   R   R   (    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   test_threshold™   s    (&   t   __doc__t   scipyR    t   numpyR,   t   sklearn.cluster.tests.commonR   t   sklearn.cluster.birchR   t   sklearn.cluster.hierarchicalR   t   sklearn.datasetsR   t   sklearn.exceptionsR   t   sklearn.linear_modelR   t   sklearn.metricsR   R   t   sklearn.utils.testingR	   R
   R   R   R   R   R   R   R    R(   R8   RC   RG   RI   RN   RT   RU   (    (    (    s?   lib/python2.7/site-packages/sklearn/cluster/tests/test_birch.pyt   <module>   s4   								
