ó
‡ˆ\c           @   sW  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 m Z m Z m Z d  d l m Z e e e e e e g Z d „  Z e d e ƒ d „  ƒ Z d „  Z e d e ƒ d „  ƒ Z  d „  Z! d „  Z" d „  Z# d „  Z$ e d e ƒ d d d „ ƒ Z% e d e ƒ d „  ƒ Z& e d e ƒ d „  ƒ Z' d  „  Z( d! „  Z) d" „  Z* d# „  Z+ d$ „  Z, e d e ƒ d% „  ƒ Z- d& d' „ Z. d( „  Z/ d) „  Z0 d S(*   iÿÿÿÿN(   t   adjusted_mutual_info_score(   t   adjusted_rand_score(   t   completeness_score(   t   contingency_matrix(   t   entropy(   t   expected_mutual_information(   t   fowlkes_mallows_score(   t"   homogeneity_completeness_v_measure(   t   homogeneity_score(   t   mutual_info_score(   t   normalized_mutual_info_score(   t   v_measure_score(   t   _generalized_average(   t   assert_all_finite(   t   assert_equalt   assert_almost_equalt   assert_raise_messaget   assert_warns_messaget   ignore_warnings(   t   assert_array_almost_equalc          C   sX   t  t g }  d } d d d g d d d g f } x! |  D] } t t | | | Œ q7 Wd  S(   Ns   The behavior of i    (   R
   R    R   t   FutureWarning(   t   score_funcs_with_changing_meanst   warning_msgt   argst
   score_func(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_future_warning#   s    	t   categoryc       	   C   s®   x§ t  D]Ÿ }  d } t t | |  d d g d d d g ƒ d } t t | |  d d g d d g g d d d g ƒ d } t t | |  d d d g d d g d d g g ƒ q Wd  S(   Ns<   labels_true and labels_pred must have same size, got 2 and 3i    i   s#   labels_true must be 1D: shape is (2s#   labels_pred must be 1D: shape is (2(   t   score_funcsR   t
   ValueError(   R   t   expected(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt"   test_error_messages_on_wrong_input.   s    %c          C   sò   d
 \ }  } d d d d g } g  | D] } t  |  | | ƒ ^ q% } | d | d k ou | d k ou | d k n s€ t ‚ d \ } } g  | D] } t  | | | ƒ ^ q“ } | d | d k oã | d k oã | d k n sî t ‚ d  S(   Ni   i   t   mint	   geometrict
   arithmetict   maxi    i   i   (   i   i   (   i   i   (   R   t   AssertionError(   t   at   bt   methodst   methodt   meanst   ct   d(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_generalized_average?   s    %=%c          C   s  xt  D] }  t |  g  g  ƒ d ƒ t |  d g d g ƒ d ƒ t |  d d d g d d d g ƒ d ƒ t |  d d d g d d d g ƒ d ƒ t |  d d d g d d d g ƒ d ƒ t |  d d d	 g d d d	 g ƒ d ƒ t |  d d d
 g d d d
 g ƒ d ƒ q Wt t g } d d d d h } xQ| D]I}  x@| D]8} |  g  g  | ƒ d k sat ‚ |  d g d g | ƒ d k s…t ‚ |  d d d g d d d g | ƒ d k sµt ‚ |  d d d g d d d g | ƒ d k såt ‚ |  d d d g d d d g | ƒ d k st ‚ |  d d d	 g d d d	 g | ƒ d k sEt ‚ |  d d d
 g d d d
 g | ƒ d k s=t ‚ q=Wq0Wd  S(   Ng      ð?i    i   i*   i   g        g      E@g      @g       @i   R   R    R!   R"   (   R   R   R
   R    R#   (   R   R   R(   t   mean(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_perfect_matchesI   s(    ((((,	$0000c          C   sp   t  d d d d d d g d d d d d d g ƒ \ }  } } t |  d d ƒ t | d d ƒ t | d d ƒ d  S(   Ni    i   i   g      ð?g®Gázæ?gìQ¸…ëé?(   R   R   (   t   hR)   t   v(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt*   test_homogeneous_but_not_complete_labelingc   s    $c          C   sp   t  d d d d d d g d d d d d d g ƒ \ }  } } t |  d d ƒ t | d d ƒ t | d d ƒ d  S(   Ni    i   i   gÂõ(\â?g      ð?g\Âõ(\ç?(   R   R   (   R.   R)   R/   (    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt*   test_complete_but_not_homogeneous_labelingm   s    $c          C   sp   t  d d d d d d g d d d d d d g ƒ \ }  } } t |  d d ƒ t | d d ƒ t | d d ƒ d  S(   Ni    i   i   gq=
×£på?gáz®GáÚ?g¤p=
×£à?(   R   R   (   R.   R)   R/   (    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt.   test_not_complete_and_not_homogeneous_labelingw   s    $c          C   sb  t  d d d d d d g d d d d d d g ƒ \ }  } } t |  d d ƒ t | d d ƒ t | d d ƒ t  d d d d d d g d d d d d d g ƒ \ }  } } t |  d d ƒ t | d d ƒ t | d d ƒ t d d d d d d g d d d d d d g ƒ } t d d d d d d g d d d d d d g ƒ } t | d d ƒ t | d d ƒ d  S(	   Ni    i   i   gq=
×£på?gáz®GáÚ?g¤p=
×£à?i   g¸…ëQ¸Î?(   R   R   R   (   R.   R)   R/   t   ari_1t   ari_2(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_non_consecutive_labels   s     $$33i
   i*   c      	   C   s·   t  j j | ƒ j } t  j t | ƒ | f ƒ } x€ t | ƒ D]r \ } } xc t | ƒ D]U }	 | d d d | d | ƒ }
 | d d d | d | ƒ } |  |
 | ƒ | | |	 f <qV Wq= W| S(   Nt   lowi    t   hight   size(   t   npt   randomt   RandomStatet   randintt   zerost   lent	   enumeratet   range(   R   t	   n_samplest   k_ranget   n_runst   seedt   random_labelst   scorest   it   kt   jt   labels_at   labels_b(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   uniform_labelings_scores—   s    !c          C   sn   d d d d g }  d } d } t  t | |  | ƒ } t j | ƒ j d d ƒ } t | d d	 d	 d g d ƒ d  S(
   Ni   i
   i2   iZ   id   t   axisi   g{®Gáz”?g¸…ëQ¸ž?(   RL   R   R9   t   absR"   R   (   t   n_clusters_rangeRA   RC   RF   t   max_abs_scores(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_adjustment_for_chance¥   s    c    	      C   sö  t  j d d d d d d d d d d d d d d d d d g ƒ }  t  j d d d d d d d d d d d d d d d d d g ƒ } t |  | ƒ } t | d d ƒ t |  | d t ƒ} t |  | d | ƒ} t | d d ƒ t |  | ƒ } t |  | d | ƒ} t | d d ƒ | j ƒ  } t | | ƒ } t | d d ƒ t |  | ƒ } t | d	 d ƒ t d d d d g d d d d g ƒ } t	 | d
 ƒ t  j t
 |  ƒ d g ƒ j ƒ  } t  j t
 | ƒ d g ƒ j ƒ  } t | | ƒ } t | d d ƒ d  S(   Ni   i   i   gS‘
cAÚ?i   t   sparset   contingencygpUjö@Ã?g'½o|í™Ñ?g      ð?in   g®Gáz®×?(   R9   t   arrayR	   R   R   t   Truet   sumR   R    R   t   listt   flatten(	   RJ   RK   t   mit   CRA   t   emit   amit   a110t   b110(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_adjusted_mutual_info_score³   s*    BB'""c           C   s.   t  t j d g g ƒ d ƒ d k s* t ‚ d  S(   Nip i   (   R   R9   RT   R#   (    (    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt"   test_expected_mutual_info_overflowÔ   s    c          C   så   t  j d g d d g d d g d d
 g d d g d ƒ }  t  j d g d d g d d g d d g d d g d d g d	 d g d d g d d g d d g d ƒ } t t |  | ƒ ƒ t t |  | ƒ ƒ d  S(   Ni   i˜Í  iá	  i   iD9  i  i   iÇ  iÌ   i   i.  i'   i   i<  i   i    iy×  i]<  i“  iU  iP  (   R9   RT   R   R	   R   (   t   xt   y(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt3   test_int_overflow_mutual_info_fowlkes_mallows_scoreÚ   s    <bc          C   s<   t  d d d g ƒ }  t |  d d ƒ t t  g  ƒ d ƒ d  S(   Ni    g      E@g,^ÑR^ä?i   i   (   R   R   (   t   ent(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_entropyæ   s    c          C   s  t  j d d d d d d d d d d d d d d d d d g ƒ }  t  j d d d d d d d d d d d d d d d d d g ƒ } t |  | ƒ } t  j |  | d t  j d d ƒ t  j d d ƒ f ƒd } t | | ƒ t |  | d d ƒ} t | | d ƒ d  S(	   Ni   i   i   t   binsi   i    t   epsgš™™™™™¹?(   R9   RT   R   t   histogram2dt   arangeR   (   RJ   RK   RZ   t   C2(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_contingency_matrixì   s    BBc          C   sã   t  j d d d d d d d d d d d d d d d d d g ƒ }  t  j d d d d d d d d d d d d d d d d d g ƒ } t |  | ƒ } t |  | d t ƒj ƒ  } t | | ƒ t t d t |  | d d d t ƒ} d  S(   Ni   i   i   RR   s!   Cannot set 'eps' when sparse=TrueRg   g»½×Ùß|Û=(   R9   RT   R   RU   t   toarrayR   R   R   (   RJ   RK   RZ   t   C_sparse(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_contingency_matrix_sparseø   s    BBc          C   s  xt  j d d d ƒ j t  j ƒ D]è }  t  j |  d t  j ƒt  j |  d t  j ƒ} } t t | | ƒ d ƒ t t | | ƒ d ƒ t t	 | | ƒ d ƒ t t | | ƒ d ƒ xV d d d d g D]B } t	 | | | ƒ d k sè t
 ‚ t | | | ƒ d k sÄ t
 ‚ qÄ Wq" Wd  S(	   Ni   i   t   dtypeg        R   R    R!   R"   (   R9   t   logspacet   astypet   intt   onesRi   R   R
   R   R    R#   (   RG   RJ   RK   R'   (    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_exactly_zero_info_score  s    (		i$   c         C   sÒ   xË t  j d d d ƒ j t  j ƒ D]¨ } t  j j |  ƒ } | j d d | ƒ | j d d | ƒ } } t t | | ƒ d t	 | | ƒ t
 | ƒ t
 | ƒ d ƒ d } t t | | ƒ t | | d | ƒƒ q" Wd  S(   Ni   i   i    i
   g       @R!   t   average_method(   R9   Rp   Rq   Rr   R:   R;   R<   R   R   R	   R   R
   (   RD   RG   t   random_stateRJ   RK   t   avg(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt%   test_v_measure_and_mutual_information  s    (c          C   sÑ   t  d d d d d d g d d d d d d g ƒ }  t |  d t j d ƒ ƒ t  d d d d d d g d d d d d d g ƒ } t | d ƒ t  d d d d d d g d d d d d	 d
 g ƒ } t | d ƒ d  S(   Ni    i   i   g      @g      (@g      @g      ð?i   i   i   g        g      R@(   R   R   R9   t   sqrt(   t   scoret   perfect_scoret   worst_score(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   test_fowlkes_mallows_score%  s    c          C   sÝ   t  j d d d d d d g ƒ }  t  j d d d d d d g ƒ } d t  j d d	 ƒ } t |  | ƒ } t | | ƒ t | |  ƒ } t | | ƒ t |  d d | ƒ } t | | ƒ t | |  d d ƒ } t | | ƒ d  S(
   Ni    i   i   g      ð?g      @g       @i   g      @g      @(   R9   RT   Ry   R   R   (   RJ   RK   R   t   score_originalt   score_symmetrict   score_permutedt
   score_both(    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt%   test_fowlkes_mallows_score_properties6  s    !!(1   t   numpyR9   t   sklearn.metrics.clusterR    R   R   R   R   R   R   R   R   R	   R
   R   t"   sklearn.metrics.cluster.supervisedR   t   sklearn.utilsR   t   sklearn.utils.testingR   R   R   R   R   t   numpy.testingR   R   R   R   R   R+   R-   R0   R1   R2   R5   RL   RQ   R_   R`   Rc   Re   Rk   Rn   Rt   Rx   R}   R‚   (    (    (    sL   lib/python2.7/site-packages/sklearn/metrics/cluster/tests/test_supervised.pyt   <module>   sX   (			
	
	
	
	!						