ó
cÂY]c           @  s  d  d l  m Z m Z d  d l Z d  d l 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 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  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 e* d „ Z+ d „  Z, d „  Z- d „  Z. d „  Z/ e j0 j1 d  e2 e* g ƒ d! „  ƒ Z3 d" „  Z4 d# „  Z5 d$ „  Z6 d% „  Z7 d& „  Z8 d' „  Z9 d( „  Z: d) „  Z; d* „  Z< d+ „  Z= e j0 j> d, ƒ d- „  ƒ Z? d. „  Z@ d/ „  ZA d0 „  ZB d1 „  ZC d2 „  ZD d3 „  ZE d4 „  ZF d5 „  ZG d6 „  ZH d7 „  ZI d8 „  ZJ d9 „  ZK d: „  ZL d; „  ZM d< „  ZN d= „  ZO d> „  ZP d? d@ dA dB „ ZQ e j0 j1 dC eK eO eN eL f ƒ e j0 j1 dD e" eP f ƒ dE „  ƒ ƒ ZR dF „  ZS e j0 j1 dG dU ƒ e j0 j1 dK dV ƒ e j0 j1 dM eT dH ƒ ƒ dN „  ƒ ƒ ƒ ZU dO „  ZV dP „  ZW dQ „  ZX dR „  ZY dS „  ZZ dT „  Z[ d S(W   iÿÿÿÿ(   t   divisiont   print_functionN(   t
   csr_matrix(   t   datasets(   t   svm(   t   make_multilabel_classification(   t   sparse_random_matrix(   t   check_arrayt   check_consistent_length(   t   check_random_state(   t   assert_raisest   clean_warning_registry(   t   assert_raise_message(   t   assert_equal(   t   assert_almost_equal(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_warns(   t   assert_warns_message(   t   auc(   t   average_precision_score(   t   coverage_error(   t%   label_ranking_average_precision_score(   t   precision_recall_curve(   t   label_ranking_loss(   t   roc_auc_score(   t	   roc_curve(   t   UndefinedMetricWarningc         C  sv  |  d	 k r t j ƒ  }  n  |  j } |  j } | rW | | d k  | | d k  } } n  | j \ } } t j | ƒ } t d ƒ } | j	 | ƒ | | | | } } t
 | d ƒ } t j j d ƒ } t j | | j | d | ƒ f } t j d d d t d d ƒ }	 |	 j | |  | |  ƒ j | | ƒ }
 | rL|
 d	 d	 … d
 f }
 n  |	 j | | ƒ } | | } | | |
 f S(   s¼   Make some classification predictions on a toy dataset using a SVC

    If binary is True restrict to a binary classification problem instead of a
    multiclass classification problem
    i   i%   i    iÈ   t   kernelt   lineart   probabilityt   random_stateNi   (   t   NoneR   t	   load_irist   datat   targett   shapet   npt   arangeR	   t   shufflet   intt   randomt   RandomStatet   c_t   randnR   t   SVCt   Truet   fitt   predict_probat   predict(   t   datasett   binaryt   Xt   yt	   n_samplest
   n_featurest   pt   rngt   halft   clft   probas_predt   y_predt   y_true(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   make_prediction(   s*    		$#'
c         C  sˆ   t  j |  ƒ d } | |  | k } | |  | k } | j d d ƒ | j d d ƒ } t  j | d k ƒ } | t t | ƒ t | ƒ ƒ S(   sK   Alternative implementation to check for correctness of
    `roc_auc_score`.i   iÿÿÿÿi    (   R%   t   uniquet   reshapet   sumt   floatt   len(   R>   t   y_scoret	   pos_labelt   post   negt   diff_matrixt	   n_correct(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   _aucW   s    "c   	      C  sï   t  j |  ƒ d } t  j |  | k ƒ } t  j | ƒ d d d … } | | } |  | }  d } x† t t | ƒ ƒ D]r } |  | | k rq d } x8 t d | d ƒ D]# } |  | | k r¡ | d 7} q¡ q¡ W| | d } | | 7} qq qq W| | S(   s>  Alternative implementation to check for correctness of
    `average_precision_score`.

    Note that this implementation fails on some edge cases.
    For example, for constant predictions e.g. [0.5, 0.5, 0.5],
    y_true = [1, 0, 0] returns an average precision of 0.33...
    but y_true = [0, 0, 1] returns 1.0.
    i   Niÿÿÿÿi    g      ð?(   R%   R@   RB   t   argsortt   rangeRD   (	   R>   RE   RF   t   n_post   ordert   scoret   it   prect   j(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   _average_precisionf   s    	

c         C  sˆ   t  |  | ƒ \ } } } t t | ƒ ƒ } t t | ƒ ƒ } d } x? t d t | ƒ ƒ D]( } | | | | | | | d 7} qX W| S(   so  A second alternative implementation of average precision that closely
    follows the Wikipedia article's definition (see References). This should
    give identical results as `average_precision_score` for all inputs.

    References
    ----------
    .. [1] `Wikipedia entry for the Average precision
       <https://en.wikipedia.org/wiki/Average_precision>`_
    i    i   (   R   t   listt   reversedRM   RD   (   R>   RE   t	   precisiont   recallt	   thresholdt   average_precisionRQ   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   _average_precision_slow„   s    
&c         C  st   d „  } | |  | | ƒ \ } } t  | | ƒ } d } | } d | | | | }	 | | }
 d d | |	 |
 |	 S(   sc   Alternative implementation to check for correctness of `roc_auc_score`
    with `max_fpr` set.
    c         S  s¼   t  |  | ƒ \ } } } | | | k } t j | | ƒ } | | | k } t j | | k ƒ } | d }	 | |	 | | g }
 | |	 | | g } t j | t j | |
 | ƒ ƒ } | | f S(   Ni   (   R   R%   t   appendt   argmaxt   interp(   R>   t	   y_predictt   max_fprt   fprt   tprt   _t   new_fprt   new_tprt   idx_outt   idx_int   x_interpt   y_interp(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   _partial_rocœ   s    
!i    g      à?i   (   R   (   R>   R_   R`   Rj   Rd   Re   t   partial_auct   fpr1t   fpr2t   min_areat   max_area(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   _partial_roc_auc_score—   s    	
t   dropc   	      C  s§   t  d t ƒ \ } } } t | | ƒ } t | | d |  ƒ\ } } } t | | ƒ } t | | d d ƒt | t | | ƒ ƒ t | j	 | j	 ƒ t | j	 | j	 ƒ d  S(   NR3   t   drop_intermediatet   decimali   (
   R?   R.   RK   R   R   R   R   R   R   R$   (	   Rq   R>   Rc   R<   t   expected_aucRa   Rb   t
   thresholdst   roc_auc(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_curve³   s    c          C  s²   t  j j d ƒ }  t  j d g d d g d ƒ } |  j d d d ƒ} t | | d t ƒ\ } } } t | d d ƒ t | d d ƒ t | j | j ƒ t | j | j ƒ d  S(	   Ni    i2   i   i   t   sizeid   Rr   iÿÿÿÿ(	   R%   R)   R*   t   arrayt   randintR   R.   R   R$   (   R9   R>   R=   Ra   Rb   t   thr(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_curve_end_pointsÂ   s    !c    
      C  sÁ   t  d t ƒ \ }  } } t |  | ƒ \ } } } g  } xK | D]C } t j | | k |  @ƒ } t j |  ƒ }	 | j d | |	 ƒ q= Wt | | d d ƒt | j | j ƒ t | j | j ƒ d  S(   NR3   g      ð?Rs   i   (	   R?   R.   R   R%   RB   R\   R   R   R$   (
   R>   Rc   R<   Ra   Rb   Ru   t   tpr_correctt   tt   tpR8   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_returns_consistencyÏ   s    c          C  s/   t  d t ƒ \ }  } } t t t |  | ƒ d  S(   NR3   (   R?   t   FalseR
   t
   ValueErrorR   (   R>   Rc   R<   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_curve_multiâ   s    c          C  s€   t  d t ƒ \ }  } } t |  | d ƒ \ } } } t | | ƒ } t | d d d ƒt | j | j ƒ t | j | j ƒ d  S(   NR3   g      à?gÍÌÌÌÌÌì?Rs   i   (   R?   R.   R   R   R   R   R$   (   R>   Rc   R<   Ra   Rb   Ru   Rv   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_curve_confidenceé   s    c          C  s`  t  d t ƒ \ }  } } t j |  j ƒ } t |  | ƒ \ } } } t | | ƒ } t | d d d ƒt | j | j ƒ t | j | j ƒ t j	 |  j ƒ } t |  | ƒ \ } } } t | | ƒ } t | d d d ƒt | j | j ƒ t | j | j ƒ t |  | ƒ \ } } } t | | ƒ } t | d d d ƒt | j | j ƒ t | j | j ƒ d  S(   NR3   g      à?Rs   i   gö(\Âõè?(
   R?   R.   R%   t   onesR$   R   R   R   R   t   zeros(   R>   t   predR<   t   trivial_predRa   Rb   Ru   Rv   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_curve_hardô   s$    c       
   C  s5  d d d d d d d d d d g
 }  d d d d d d d d d d g
 } t  } t | t |  | ƒ \ } } } t | t j t | ƒ t j ƒ ƒ t | j	 | j	 ƒ t | j	 | j	 ƒ t | t g  |  D] } d | ^ qÄ | ƒ \ } } } t | t j t | ƒ t j ƒ ƒ t | j	 | j	 ƒ t | j	 | j	 ƒ d  S(   Ni   i    (
   R   R   R   R   R%   t   fullRD   t   nanR   R$   (   R>   R=   t   wRa   Rb   Ru   t   x(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_curve_one_label  s    $$"	"c          C  s  d d g }  d d g } t  |  | ƒ \ } } } t |  | ƒ } t | d d d g ƒ t | d d d g ƒ t | d ƒ d d g }  d d g } t  |  | ƒ \ } } } t |  | ƒ } t | d d d g ƒ t | d d d g ƒ t | d ƒ d d g }  d d g } t  |  | ƒ \ } } } t |  | ƒ } t | d d g ƒ t | d d g ƒ t | d ƒ d d g }  d d g } t  |  | ƒ \ } } } t |  | ƒ } t | d d d g ƒ t | d d d g ƒ t | d ƒ d d g }  d d g } t  |  | ƒ \ } } } t |  | ƒ } t | d d g ƒ t | d d g ƒ t | d ƒ d d g }  d d g } t t t  |  | ƒ \ } } } t t t |  | ƒ t | d d d g ƒ t | t j	 t j	 t j	 g ƒ d d g }  d d g } t t t  |  | ƒ \ } } } t t t |  | ƒ t | t j	 t j	 t j	 g ƒ t | d d d g ƒ t j
 d d g d d g g ƒ }  t j
 d d g d d g g ƒ } t t t |  | d d	 ƒt t t |  | d d
 ƒt t |  | d d ƒd ƒ t t |  | d d ƒd ƒ t j
 d d g d d g g ƒ }  t j
 d d g d d g g ƒ } t t t |  | d d	 ƒt t t |  | d d
 ƒt t |  | d d ƒd ƒ t t |  | d d ƒd ƒ t j
 d d g d d g g ƒ }  t j
 d d g d d g g ƒ } t t |  | d d	 ƒd ƒ t t |  | d d
 ƒd ƒ t t |  | d d ƒd ƒ t t |  | d d ƒd ƒ t j
 d d g d d g g ƒ }  t j
 d d g d d g g ƒ } t t |  | d d	 ƒd ƒ t t |  | d d
 ƒd ƒ t t |  | d d ƒd ƒ t t |  | d d ƒd ƒ d  S(   Ni    i   g      ð?g        g      à?g      Ð?g      è?t   averaget   macrot   weightedt   samplest   micro(   R   R   R   R   R   R   R
   R‚   R%   R‹   Ry   (   R>   RE   Rb   Ra   Rc   Rv   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_roc_curve_toydata%  s’    !!!!!!!!c          C  s  d d d d d d g }  d d d d d d g } t  |  | d	 t ƒ\ } } } t | d
 d d d g ƒ d d d d d d d d d d d d d g }  d d d d d d d d d d d d d g } t  |  | d	 t ƒ\ } } } t | d
 d d d d d g ƒ d  S(   Ni    i   g        gš™™™™™É?g      à?g333333ã?gffffffæ?g      ð?Rr   g       @gš™™™™™¹?gš™™™™™é?gÍÌÌÌÌÌì?(   R   R.   R   (   R>   RE   Rb   Ra   Ru   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt    test_roc_curve_drop_intermediate  s    c          C  s¢   d d d d d g }  d d d d d g } t  j d d	 ƒ } t |  | d
 | ƒ\ } } } t t  j | ƒ d k  j ƒ  d ƒ t t  j | ƒ d k  j ƒ  d ƒ d  S(   Ni    i   gš™™™™™¹?gffffffæ?g333333Ó?gš™™™™™Ù?g      à?gš™™™™™É?i   t   sample_weight(   R%   t   repeatR   R   t   diffRB   (   R>   RE   R–   Ra   Rb   Rc   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt!   test_roc_curve_fpr_tpr_increasing  s    "c          C  sö   d d g }  d d g } t  t |  | ƒ d ƒ d d g }  d d g } t  t |  | ƒ d ƒ d d d g }  d d d g } t  t |  | ƒ d ƒ d d g }  d d g } t  t |  | ƒ d ƒ d d d g }  d d d g } t  t |  | ƒ d ƒ d  S(   Ni    i   g      à?(   R   R   (   R   R5   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_aucœ  s    s   ignore: The 'reorder' parameterc          C  sŽ   d d d d d g }  d d d d d g } d d d d d g } d d d d d g } x3 | | | f D]" } t  t |  | d t ƒd ƒ qd Wd  S(   Ng       Àg        g      ð?g       @g      à?t   reorderg      @(   R   R   R.   (   R   t   y1t   y2t   y3R5   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_auc_duplicate_values¯  s    
c          C  s‘   t  t t d d d g d d g ƒ t  t t d g d g ƒ d d d d	 g }  d
 d d d g } d j t j |  ƒ ƒ } t t | t |  | ƒ d  S(   Ng        g      à?g      ð?gš™™™™™¹?gš™™™™™É?i   i   i   i   i   i   i   i   s+   x is neither increasing nor decreasing : {}(   R
   R‚   R   t   formatR%   Ry   R   (   R   R5   t   error_message(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_auc_errorsÂ  s    "c          C  s2   d }  t  t |  t d d g d d g d t ƒd  S(   NsÂ   The 'reorder' parameter has been deprecated in version 0.20 and will be removed in 0.22. It is recommended not to set 'reorder' and ensure that x is monotonic increasing or monotonic decreasing.i   i   i   R›   (   R   t   DeprecationWarningR   R.   (   t   depr_message(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_deprecated_auc_reorderÑ  s    c       
   C  s¾  t  d ƒ }  |  j d ƒ } t j d d d ƒ} t t d t | | ƒ t j d d d ƒ} t t d t | | ƒ t j d d d d ƒ} t t d t | | ƒ |  j	 d d d	 d ƒ} t t d
 t | | ƒ t
 ƒ  t j d t ƒ Ò t  d ƒ }  |  j d ƒ } t j d d d ƒ} t t d t | | ƒ t j d d d ƒ} t t d t | | ƒ t j d d d d ƒ} t t d t | | ƒ |  j	 d d d	 d ƒ} t t d
 t | | ƒ Wd  QXd  S(   Ni”  i
   t   dtypeR(   s   ROC AUC score is not definediÿÿÿÿi    i   Rx   s"   multiclass format is not supportedt   record(   R	   t   randR%   R†   R   R‚   R   R…   RŠ   Rz   R   t   warningst   catch_warningsR.   (   R9   R=   R>   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_auc_score_non_binary_classÚ  s<    								c          C  sS   t  d ƒ }  |  j d d d d ƒ} |  j d ƒ } d } t t | t | | ƒ d  S(   Ni”  i    i   Rx   i
   s"   multiclass format is not supported(   R	   Rz   R¨   R   R‚   R   (   R9   R>   R=   t   msg(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_binary_clf_curve  s    c    	      C  s:  t  d t ƒ \ }  } } t |  | ƒ d |  t j |  d k ƒ <|  j ƒ  } t |  | ƒ t | |  ƒ d d d d g } d d d d g } t | | ƒ \ } } } t | t j	 d d	 d d
 d
 g ƒ ƒ t | t j	 d
 d d d d g ƒ ƒ t | t j	 d d d d g ƒ ƒ t
 | j | j ƒ t
 | j | j d ƒ d  S(   NR3   iÿÿÿÿi    i   i   i   i   g      à?gÚÁQUUÕ?g      ð?g        (   R?   R.   t   _test_precision_recall_curveR%   t   wheret   copyR   R   R   Ry   R   Rx   (	   R>   Rc   R<   t   y_true_copyt   labelst   predict_probasR8   t   rR~   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_precision_recall_curve  s    %%"c         C  sâ   t  |  | ƒ \ } } } t |  | ƒ } t | d d ƒ t | t |  | ƒ ƒ t t |  | ƒ | d d ƒt | j | j ƒ t | j | j d ƒ t  |  t j	 | ƒ ƒ \ } } } t | j | j ƒ t | j | j d ƒ d  S(   Ng°rh‘í|ë?i   Rs   i   (
   R   R[   R   R   R   RT   R   Rx   R%   t
   zeros_like(   R>   R<   R8   R´   Ru   t   precision_recall_auc(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyR®     s    c           C  s2   t  t t d d d g d g d g d g g ƒ d  S(   Ni    i   i   g        g      ð?(   R
   R‚   R   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt"   test_precision_recall_curve_errors1  s    	c          C  sÉ  t  j d d ƒ ±d d g }  d d g } t |  | ƒ \ } } } t |  | ƒ } t | d d g ƒ t | d d g ƒ t | d ƒ d d g }  d d g } t |  | ƒ \ } } } t |  | ƒ } t | d d d g ƒ t | d d d g ƒ t | d ƒ d d g }  d d g } t |  | ƒ \ } } } t |  | ƒ } t | d d g ƒ t | d d g ƒ t | d ƒ d d g }  d d g } t |  | ƒ \ } } } t |  | ƒ } t | d d g ƒ t | d d g ƒ t | d ƒ d d g }  d d g } t |  | ƒ \ } } } t |  | ƒ } t | d d g ƒ t | d d g ƒ t | d ƒ d d g }  d d	 g } t t t |  | ƒ t t t |  | ƒ d d g }  d d	 g } t |  | ƒ \ } } } t t |  | ƒ d ƒ t | d d d g ƒ t | d d d g ƒ t  j d d g d d g g ƒ }  t  j d d g d d g g ƒ } t t t |  | d
 d ƒt t t |  | d
 d ƒt t |  | d
 d ƒd ƒ t t |  | d
 d ƒd ƒ t  j d d g d d g g ƒ }  t  j d d g d d g g ƒ } t t t |  | d
 d ƒt t t |  | d
 d ƒt t |  | d
 d ƒd	 ƒ t t |  | d
 d ƒd ƒ t  j d d g d d g g ƒ }  t  j d d g d d g g ƒ } t t |  | d
 d ƒd ƒ t t |  | d
 d ƒd ƒ t t |  | d
 d ƒd ƒ t t |  | d
 d ƒd ƒ t  j d d g d d g g ƒ }  t  j d d g d d g g ƒ } t t |  | d
 d ƒd ƒ t t |  | d
 d ƒd ƒ t t |  | d
 d ƒd ƒ t t |  | d
 d ƒd ƒ Wd  QXd  S(   Nt   allt   raisei    i   g      ð?g      à?g        g      Ð?g      è?R   R   R‘   R’   R“   (	   R%   t   errstateR   R   R   R   R
   t	   ExceptionRy   (   R>   RE   R8   R´   Rc   t   auc_prc(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt#   test_precision_recall_curve_toydata7  s¬    !!!!!!!!c          C  sQ   t  j d d t ƒ}  d |  d  d  d … <t  j d ƒ } t t |  | ƒ d ƒ d  S(   Nid   R¦   i   i   g      Ð?(   R%   R†   R(   R…   R   R   (   R>   RE   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt&   test_average_precision_constant_valuesŸ  s    c          C  sØ   t  j d d g ƒ }  t  j d d g ƒ } d } t t | t |  | d d ƒ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 d	 d g g ƒ } d
 } t t | t |  | d d ƒd  S(   Ni    i   s4   pos_label=2 is invalid. Set it to a label in y_true.RF   i   gÍÌÌÌÌÌì?gš™™™™™¹?gš™™™™™é?gš™™™™™É?sn   Parameter pos_label is fixed to 1 for multilabel-indicator y_true. Do not set pos_label or set pos_label to 1.(   R%   Ry   R   R‚   R   (   R>   R=   R¡   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt-   test_average_precision_score_pos_label_errors­  s    33c          C  sú   t  d t ƒ \ }  } } t |  | ƒ } t |  d | ƒ } t |  d | ƒ } t |  | d ƒ } t | | ƒ t | | ƒ t | | ƒ t |  | ƒ } t |  d | ƒ } t |  d | ƒ }	 t |  | d ƒ }
 t | | ƒ t | |	 ƒ t | |
 ƒ d  S(   NR3   id   gíµ ÷Æ°>i
   (   R?   R.   R   R   R   (   R>   Rc   R<   Rv   t   roc_auc_scaled_upt   roc_auc_scaled_downt   roc_auc_shiftedt   pr_auct   pr_auc_scaled_upt   pr_auc_scaled_downt   pr_auc_shifted(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_score_scale_invariance¿  s    c         C  sp  t  |  d d g g d d g g ƒ d ƒ t  |  d d g g d d g g ƒ d	 ƒ t  |  d d g g d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d
 ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d g g d d g g ƒ d ƒ t  |  d d g g d d g g ƒ d ƒ t  |  d d g g d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d d d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d g g d d d g g ƒ d ƒ t  |  d d d d g g d d d d g g ƒ d  ƒ d  S(!   Ni    i   g      Ð?g      è?i   g      à?i   i   g      à?g      à?gUUUUUUÕ?gUUUUUUå?g      ð?gUUUUUUå?g      à?gUUUUUUÕ?g      à?g      à?gUUUUUUå?gUUUUUUå?gUUUUUUÕ?gUUUUUUå?g      à?g      à?gUUUUUUå?gUUUUUUÕ?gUUUUUUå?g      à?gUUUUUUå?g      à?gUUUUUUå?g      è?(   R   (   t
   lrap_score(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   check_lrap_toyØ  sX    (((....''..'.'....'.'..(((....''..-c         C  s  t  d ƒ } xÀ t d d ƒ D]¯ } | j d d | f ƒ } t j | ƒ } t j d | f ƒ } t |  | | ƒ d ƒ t |  | | ƒ d ƒ t j d | f ƒ } t |  | | ƒ d ƒ t |  | | ƒ d ƒ q Wt |  d g d g d g d g g d g d g d g d g g ƒ d ƒ d  S(   Ni    i   i   Rx   i   g      ð?g      à?(	   R	   RM   t   uniformR%   R¶   R†   R   R…   R   (   RÉ   R   t   n_labelsRE   t   y_score_tiesR>   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt!   check_zero_or_all_relevant_labels  s    !c      	   C  sÃ  t  t |  d d d g d d d g ƒ t  t |  d d d g d d d g d	 d d g d
 d d g g ƒ t  t |  d d d g d d d g d	 d d g d
 d d g g ƒ t  t |  d d g d d g g d d g ƒ t  t |  d d g d d g g d d g g ƒ t  t |  d d g d d g g d g d g g ƒ t  t |  d d g g d d g d d g g ƒ t  t |  d g d g g d d g d d g g ƒ t  t |  d d g d d g g d g d g g ƒ d  S(   Ni    i   g      Ð?g333333Ó?gš™™™™™É?i   g      è?g        gffffffæ?gš™™™™™é?(   R
   R‚   (   RÉ   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   check_lrap_error_raised&  s    	+++.1.1c      	   C  s±   xª t  d d ƒ D]™ } t j d | f ƒ } x{ t  d | ƒ D]j } xa t  | | ƒ D]O } t j d | f ƒ } d | d | | | … f <t |  | | ƒ | | ƒ qR Wq; Wq Wd  S(   Ni   i
   i   i    (   RM   R%   R…   R†   R   (   RÉ   RÌ   RE   t
   n_relevantRG   R>   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   check_lrap_only_ties8  s    c      	     s(  x!t  d d ƒ D]} | t j | ƒ j d | f ƒ d } t j d | f ƒ } d | d <d | d <t |  | | ƒ d | d d ƒ x– t  d | ƒ D]… ‰  x| t  | ˆ  ƒ D]j ‰ t j d | f ƒ } d | d ˆ ˆ ˆ  … f <t |  | | ƒ t ‡  ‡ f d †  t  ˆ  ƒ Dƒ ƒ ƒ q® Wq— Wq Wd  S(	   Ni   i
   i   i    iÿÿÿÿc         3  s)   |  ] } | d  ˆ | d  ˆ  Vq d S(   i   N(    (   t   .0R´   (   RÐ   RG   (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pys	   <genexpr>\  s   (   i    i    (   i    iÿÿÿÿ(   RM   R%   R&   RA   R†   R   RB   (   RÉ   RÌ   RE   R>   (    (   RÐ   RG   sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt+   check_lrap_without_tie_and_increasing_scoreH  s    &

c           si  t  |  | ƒ t |  ƒ }  t | ƒ } |  j \ } } t j | f ƒ } xt | ƒ D]} t j | | d t ƒ\ } } | j } | | ‰ t j	 ˆ d | d ƒj
 ƒ  }	 |	 ˆ ‰ |  | j ƒ  d }
 |
 j d k sæ |
 j | k rö d | | <qS n  d | | <xE |
 D]= ‰  t ‡  ‡ f d †  |
 Dƒ ƒ } | | c | ˆ ˆ  7<qW| | c |
 j <qS W| j ƒ  S(   s8   Simple implementation of label ranking average precisiont   return_inverset	   minlengthi   i    g        c         3  s#   |  ] } ˆ | ˆ ˆ  k Vq d  S(   N(    (   RÒ   R´   (   t   labelt   rank(    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pys	   <genexpr>|  s    (   R   R   R$   R%   t   emptyRM   R@   R.   Rx   t   bincountt   cumsumt   nonzeroRB   t   mean(   R>   RE   R6   RÌ   RP   RQ   t   unique_rankt   inv_rankt   n_rankst	   corr_rankt   relevantt   n_ranked_above(    (   RÖ   R×   sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   _my_lrap`  s*    	



i   i   i    c   	      C  sò   t  d d d t d | d | d | ƒ \ } } t d | j d d | j d d | ƒ } t | d	 ƒ rt | j ƒ  } n  t | | ƒ } t | | ƒ } t | | ƒ t	 | ƒ } | j
 d
 | | f ƒ } t | | ƒ } t | | ƒ } t | | ƒ d  S(   NR7   i   t   allow_unlabeledR   t	   n_classesR6   t   n_componentsi    t   toarrayRx   (   R   R   R   R$   t   hasattrRç   R   Rã   R   R	   RË   (	   RÉ   Rå   R6   R   Rc   R>   RE   t
   score_lrapt   score_my_lrap(    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt%   check_alternative_lrap_implementation†  s$    	t   checkt   funcc         C  s   |  | ƒ d  S(   N(    (   Rì   Rí   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_label_ranking_avp¡  s    
c           C  s   t  t ƒ d  S(   N(   RÏ   R   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_lrap_error_raised®  s    R6   i   i   i   Rå   i
   R   c         C  s   t  t | |  | ƒ d  S(   N(   Rë   R   (   R6   Rå   R   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt$   test_alternative_lrap_implementation²  s    c           C  sö  t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g d d d g g d d	 d
 g d d d g g ƒ d ƒ t  t d d d g d d d g d d d g g d d d
 g d d d g d d d g g ƒ d ƒ t  t d d d g d d d g d d d g g d d d
 g d d d g d d d g g ƒ d ƒ d  S(   Ni    i   g      Ð?g      è?i   g      à?i   gš™™™™™¹?g      $@iýÿÿÿg       @i
   g      @i   g       @i   i   g«ªªªªª@i   i   g«ªªªªª@(   R   R   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_coverage_error¼  sJ    ((((........................!-*-*c           C  s  t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ d  S(   Ni    g      à?i   i   g      Ð?i   (   R   R   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_coverage_tie_handlingì  s    ((((.......c           C  s?  t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g d d d g g d d d	 g d d d
 g g ƒ d d d ƒ t  t d d d g d d d g d d d g g d d d	 g d d d
 g d d d g g ƒ d d d d ƒ t  t d d d g d d d g d d d g g d d d	 g d
 d d
 g d d d g g ƒ d d d d ƒ t  t t t j d d d g d d d g g ƒ ƒ d d d	 g d
 d d
 g g ƒ d d d ƒ d  S(   Ni    i   g      Ð?g      è?g      à?i   gš™™™™™¹?g      $@iýÿÿÿi   g       @i
   g      @g      à?g      ð?g      à?g      ð?g      ð?g      ð?g      à?g      ð?g      à?g      ð?(   R   R   R   R%   Ry   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_label_ranking_lossü  sP    ((''''''(((('''.!'*'**c           C  s  t  t t d d g d d g g d d g ƒ t  t t d d g d d g g d d g g ƒ t  t t d d g d d g g d g d g g ƒ t  t t d d g g d d g d d g g ƒ t  t t d g d g g d d g d d g g ƒ t  t t d d g d d g g d g d g g ƒ d  S(   Ni    i   (   R
   R‚   R   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt$   test_ranking_appropriate_input_shape1  s    +.	(.	(c           C  sh  t  t d d g g d d g g ƒ d ƒ t  t d d g g d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ t  t d d d g g d d d g g ƒ d ƒ d  S(   Ni   i    g      à?g      Ð?i   g      à?g      à?(   R   R   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_ranking_loss_ties_handling>  s    ((''...c          C  sÆ  t  j d d d d g ƒ }  t |  |  d d ƒd k s< t ‚ t |  |  d d ƒd k s] t ‚ t j t ƒ   t |  |  d d ƒsˆ t ‚ Wd  QXt j t ƒ   t |  |  d d ƒs¹ t ‚ Wd  QXt j t ƒ   t |  |  d d ƒsê t ‚ Wd  QXt  j d d d d g ƒ } t |  | d d ƒ} t |  | ƒ } | | k sAt ‚ t |  | d d	 ƒd
 k sbt ‚ t d t ƒ \ }  } } xE t  j	 d d d ƒ D]. } t
 t |  | d | ƒt |  | | ƒ ƒ qWd  S(   Ni    i   R`   gü©ñÒMbP?gš™™™™™¹¿gš™™™™™ñ?gš™™™™™¹?g{®Gáz„?g333333Ó?g      à?R3   g-Cëâ6?i   (   R%   Ry   R   t   AssertionErrort   pytestt   raisesR‚   R?   R.   t   linspaceR   Rp   (   R>   t   y_scorest   roc_auc_with_max_fpr_onet   unconstrained_roc_aucR=   Rc   R`   (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   test_partial_roc_auc_scoreL  s&    !!!!!!(   i   i   i   i   (   i   i   i
   (\   t
   __future__R    R   R÷   t   numpyR%   R©   t   scipy.sparseR   t   sklearnR   R   t   sklearn.datasetsR   t   sklearn.random_projectionR   t   sklearn.utils.validationR   R   R	   t   sklearn.utils.testingR
   R   R   R   R   R   R   R   R   t   sklearn.metricsR   R   R   R   R   R   R   R   t   sklearn.exceptionsR   R    R   R?   RK   RT   R[   Rp   t   markt   parametrizeR.   Rw   R|   R€   Rƒ   R„   R‰   RŽ   R”   R•   R™   Rš   t   filterwarningsRŸ   R¢   R¥   R«   R­   Rµ   R®   R¸   R¾   R¿   RÀ   RÈ   RÊ   RÎ   RÏ   RÑ   RÓ   Rã   Rë   Rî   Rï   RM   Rð   Rñ   Rò   Ró   Rô   Rõ   Rý   (    (    (    sA   lib/python2.7/site-packages/sklearn/metrics/tests/test_ranking.pyt   <module>   s¤   /				$							Z							)					h				8					&				*	0		5		