ó
\c           @   sP  d  Z  d d l Z d d l m Z d d l m Z m Z m Z m	 Z	 m
 Z
 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
 Z e j d d g d d g d d g g  d Z e d d d d d e d d d e d d  \ Z Z d   Z d   Z d   Z d   Z d   Z d   Z  d   Z! d S(   s!   
Testing for Clustering methods

i˙˙˙˙N(   t   ConvergenceWarning(   t   assert_equalt   assert_falset   assert_array_equalt   assert_raisest   assert_warnst   assert_warns_messaget   assert_no_warnings(   t   AffinityPropagation(   t#   _equal_similarities_and_preferences(   t   affinity_propagation(   t
   make_blobs(   t   euclidean_distancesi   i   i
   t	   n_samplesi<   t
   n_featuresi   t   centerst   cluster_stdgŮ?t   shufflet   random_statei    c    	      C   sz  t  t d t }  t j |   d } t |  d | \ } } t |  } t t |  t	 d | d d  } | j
 |   j } t	 d | d t  } | j
 t  j } t | |  | j } t |  } t t j |  j |  t t |  t |  d | d t \ } } t | |  t t t |  d  d   d  d  f  t t t |  d	 d
 t	 d d  } t t | j
 t  d  S(   Nt   squaredi
   t
   preferencet   affinityt   precomputedt   verboset   copyi˙˙˙˙t   dampingi    t   unknown(   R   t   Xt   Truet   npt   medianR
   t   lenR   t
   n_clustersR   t   fitt   labels_R   t   cluster_centers_indices_t   uniquet   sizet   FalseR   t
   ValueError(	   t   SR   t   cluster_centers_indicest   labelst   n_clusters_t   aft   labels_precomputedt   _t   labels_no_copy(    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt   test_affinity_propagation   s,    	&c          C   s>   t  d d  }  |  j t  } |  j t  } t | |  d  S(   NR   t	   euclidean(   R   t   fit_predictR   t   predictR   (   R,   R*   t   labels2(    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt!   test_affinity_propagation_predictB   s    c          C   sj   t  d d  }  t t |  j t  t j t t j  } t  d d  }  |  j |  t t |  j t  d  S(   NR   R1   R   (	   R   R   R'   R3   R   R   t   dott   TR!   (   R,   R(   (    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt'   test_affinity_propagation_predict_errorJ   s    c          C   s   t  j d d g d d g d d g g  }  t d d d d  } t t | j |   t t  j d	  | j  t t  j d d d g  | j	  d  S(
   Ni    i   iţ˙˙˙R   iö˙˙˙t   max_iteri   i˙˙˙˙(   i    i   (
   R   t   arrayR   R   R    R!   R   t   emptyt   cluster_centers_R"   (   R   R,   (    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt-   test_affinity_propagation_fit_non_convergenceW   s
    *c          C   s  t  j d d g d d g g  }  t |  d t } t t d t | d d \ } } t d d g |  t d d g |  t t d t | d d \ } } t d g |  t d d g |  t t | d d d g \ } } t d g |  t d d g |  d  S(	   Ni˙˙˙˙i   R   s   mutually equalR   i    iö˙˙˙iě˙˙˙(	   R   R:   R   R   R   t   UserWarningR
   R   R   (   R   R(   t   cluster_center_indicesR*   (    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt3   test_affinity_propagation_equal_mutual_similaritiese   s    !c          C   s°   t  j d d g d d g d d g g  }  t t t d d d d  j |   } t  j d d g d d g d	 d	 g g  } t t | j |  } t t  j d
 d
 d
 g  |  d  S(   Ni    i   iţ˙˙˙R   iö˙˙˙R9   i   i   i   i˙˙˙˙(   R   R:   R   R    R   R!   R3   R   (   R   R,   t
   to_predictt   y(    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt1   test_affinity_propagation_predict_non_convergence   s    **c          C   s9  t  j d d g d d g d d g g  }  t |  d t } t t | t  j d    t t | t  j d d g    t t | t  j d d g    t  j d d g d d g g  }  t |  d t } t t | t  j d d g    t | t  j d d g   st  t | t  j d   s5t  d  S(   Ni    i   iţ˙˙˙R   (   R   R:   R   R   R   R	   t   AssertionError(   R   R(   (    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt'   test_equal_similarities_and_preferences   s    *""!"$("   t   __doc__t   numpyR   t   sklearn.exceptionsR    t   sklearn.utils.testingR   R   R   R   R   R   R   t%   sklearn.cluster.affinity_propagation_R   R	   R
   t"   sklearn.datasets.samples_generatorR   t   sklearn.metricsR   R    R:   R   R   R   R.   R0   R5   R8   R=   R@   RC   RE   (    (    (    sN   lib/python2.7/site-packages/sklearn/cluster/tests/test_affinity_propagation.pyt   <module>   s&   4.	'					