
\c           @  s^  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 Z	 d  d l
 j 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' 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! m0 Z0 d  d" l! m1 Z1 d  d# l! m2 Z2 d  d$ l! m3 Z3 d  d% l! m4 Z4 d  d& l! m5 Z5 d  d' l! m6 Z6 d  d( l! m7 Z7 d  d) l! m8 Z8 d  d* l! m9 Z9 d  d+ l! m: Z: d  d, l! m; Z; d  d- l! m< Z< d  d. l= m> Z> i e3 d/ 6e4 d0 6e5 d1 6e) d2 6e e8 d3 d4 d5 6Z? i& e" d6 6e$ d7 6e e$ d8 e@ d9 6e e" d: eA d; 6e' d< 6d=   d> 6e, d? 6e. d@ 6e e. d: eA dA 6e< dB 6e e< d: eA dC 6e7 dD 6e9 dE 6e* dF 6e e+ dG dH dI 6e e+ dG dJ dK 6e2 dL 6e e+ dM dN dG dJ dO 6e e* dM dN dP 6e e+ dM dN dG dH dQ 6e e7 dM dN dR 6e e9 dM dN dS 6e e+ dM dT dG dJ dU 6e e* dM dT dV 6e e+ dM dT dG dH dW 6e e7 dM dT dX 6e e9 dM dT dY 6e e+ dM dZ dG dJ d[ 6e e* dM dZ d\ 6e e+ dM dZ dG dH d] 6e e7 dM dZ d^ 6e e9 dM dZ d_ 6e e+ dM d` dG dJ da 6e e* dM d` db 6e e+ dM d` dG dH dc 6e e7 dM d` dd 6e e9 dM d` de 6e& df 6ZB dg   ZC i e; dh 6eC di 6ZD i e( dj 6e0 dk 6e1 dl 6e e1 d: eA dm 6e- dn 6e% do 6e: dp 6e e: dM dN dq 6e e: dM d` dr 6e e: dM dT ds 6e e: dt dJ du 6e# dv 6e e# dM dN dw 6e e# dM d` dx 6e e# dM dT dy 6e/ dz 6ZE eF   ZG eG jH eE  eG jH eB  eG jH e?  eG jH eD  da db dc dd de dj dk dz h ZI do dp ds dq dr du dv dw dy dx dD dE dF dI dK dh di h ZJ eI jK eJ  ZL dD dE dF dI dK h ZM dp dv du h ZN dh di do dD dE dF dI dK dv dw dy dx dO dP dQ dR dS dU dV dW dX dY d[ d\ d] d^ d_ h ZO d< d> dh di d? dD dE dF dI dK dO dP dQ dR dS dU dV dW dX dY d[ d\ d] d^ d_ df h ZP d6 d@ dB h ZQ dl dm dp dq dr ds du dv dw dx dy dj dk dz h ZR d6 d; d? d@ dA dB dC dO dP dQ dR dS d[ d\ d] d^ d_ dU dV dW dX dY da db dc dd de h ZS d/ d0 d5 d2 h ZT d6 d; d? d@ dA dB dC dF dV d\ dS dU dV dW dX dY dL d/ d0 d1 df h ZU d7 d9 d2 d5 d< d> dh di dD dE dI dK dO dP dQ dR d[ d] d^ d_ dl dn h ZV d1 h ZW e  d{    ZX e jY jZ d| e[ eG  eL  d}    Z\ e  d~    Z] e jY jZ d| e[ eG  eL  d    Z^ e jY jZ d| e[ eB  eL  d    Z_ e jY jZ d| eE  d    Z` d d g e	 ja e	 ja g f d d g e	 jb e	 jb g f d d g e	 jb e	 ja g f g Zc e jY jZ d e eE jd   e? jd     d    Ze e jY jZ d eB jd    d    Zf e  d    Zg e  d    Zh e jY jZ d| e[ eG  eL e[ eE   d    Zi e jY jZ d| eT eS B d    Zj e jY jZ d| eT  d    Zk e jY jZ d| eT  d    Zl e  d    Zm e jY jZ d| eS  d    Zn e jY jZ d| eQ  d    Zo e jY jZ d| eQ  d    Zp d   Zq e  d    Zr d   Zs e jY jZ d| eM  d    Zt e jY jZ d| eM eN B d    Zu e jY jZ d| eM  d    Zv d   Zw e jY jZ d| eM  d    Zx e  d    Zy e jY jZ d| e[ eG  jz e[ e?   eW  d    Z{ e jY jZ d| e[ eG  e[ e?  eW eI  d    Z| e jY jZ d| e[ eG  e[ e?  eW eL  d    Z} e jY jZ d| eS eR BeT BeW  d    Z~ e  d    Z d S(   i(   t   divisiont   print_function(   t   partial(   t   product(   t   chainN(   t   make_multilabel_classification(   t   LabelBinarizer(   t   type_of_target(   t   _num_samples(   t   check_random_state(   t   shuffle(   t   assert_allclose(   t   assert_array_equal(   t   assert_array_less(   t   assert_equal(   t   assert_raise_message(   t   assert_raises(   t   ignore_warnings(   t   accuracy_score(   t   average_precision_score(   t   balanced_accuracy_score(   t   brier_score_loss(   t   cohen_kappa_score(   t   confusion_matrix(   t   coverage_error(   t   explained_variance_score(   t   f1_score(   t   fbeta_score(   t   hamming_loss(   t
   hinge_loss(   t   jaccard_similarity_score(   t%   label_ranking_average_precision_score(   t   label_ranking_loss(   t   log_loss(   t   matthews_corrcoef(   t   mean_absolute_error(   t   mean_squared_error(   t   median_absolute_error(   t   precision_recall_curve(   t   precision_score(   t   r2_score(   t   recall_score(   t   roc_auc_score(   t	   roc_curve(   t   zero_one_loss(   t   _average_binary_scoreR#   R$   R%   R   t   multioutputt   variance_weightedR(   R   R   t   adjustedt    adjusted_balanced_accuracy_scoret	   normalizet   unnormalized_accuracy_scoret   unnormalized_confusion_matrixc          O  sB   t  |  |   j d  t  |  |   j d d  d  d   t j f S(   Nt   floatt   axisi   (   R   t   astypet   sumt   npt   newaxis(   t   argst   kwargs(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   <lambda>o   s    t   normalized_confusion_matrixR   R   t%   unnormalized_jaccard_similarity_scoreR,   t   unnormalized_zero_one_lossR'   R)   R   t   betai   t   f2_scoreg      ?s
   f0.5_scoret   matthews_corrcoef_scoret   averaget   weighteds   weighted_f0.5_scoret   weighted_f1_scoret   weighted_f2_scoret   weighted_precision_scoret   weighted_recall_scoret   micros   micro_f0.5_scoret   micro_f1_scoret   micro_f2_scoret   micro_precision_scoret   micro_recall_scoret   macros   macro_f0.5_scoret   macro_f1_scoret   macro_f2_scoret   macro_precision_scoret   macro_recall_scoret   sampless   samples_f0.5_scoret   samples_f1_scoret   samples_f2_scoret   samples_precision_scoret   samples_recall_scoreR   c          O  sk   t  |  |   \ } } } t |  t |  } t j | | t j | d d | f d d d t j g g  S(   s'  
    The dimensions of precision-recall pairs and the threshold array as
    returned by the precision_recall_curve do not match. See
    func:`sklearn.metrics.precision_recall_curve`

    This prevents implicit conversion of return value triple to an higher
    dimensional np.array of dtype('float64') (it will be of dtype('object)
    instead). This again is needed for assert_array_equal to work correctly.

    As a workaround we pad the threshold array with NaN values to match
    the dimension of precision and recall arrays respectively.
    t	   pad_widthi    t   modet   constantt   constant_values(   R&   t   lenR9   t   arrayt   padt   nan(   R;   R<   t	   precisiont   recallt
   thresholdst   pad_threshholds(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt(   precision_recall_curve_padded_thresholds   s    R+   R&   R   R    R!   t   unnormalized_log_lossR   R   R*   t   weighted_roc_auct   samples_roc_auct   micro_roc_auct   max_fprt   partial_roc_aucR   t    weighted_average_precision_scoret   samples_average_precision_scoret   micro_average_precision_scoreR   c       
   C  s$  t  d  }  |  j d d d d } |  j d d d d	 } t t j t t t  t  t t	   t t j
 t  t g    xA t D]9 } t	 | } t | | |  | | |  d d | q WxY t D]Q } t	 | } t t  3 } t | | |  | | |   d | | _ Wd  QXq Wd  S(
   Ni    i   t   sizei   t   err_msgs   %s is not symmetrics   %s seems to be symmetric(   i   (   i   (   R	   t   randintR   t   SYMMETRIC_METRICSt   uniont   NOT_SYMMETRIC_METRICSt   sett   THRESHOLDED_METRICSt"   METRIC_UNDEFINED_BINARY_MULTICLASSt   ALL_METRICSt   intersectionR   R   t   AssertionErrorR   t   msg(   t   random_statet   y_truet   y_predt   namet   metrict   cm(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   test_symmetry  s&    	

R   c      
   C  s   t  d  } | j d d d d } | j d d d d	 } t | | d d \ } } t   8 t |  } t | | |  | | |  d d |  Wd  QXd  S(
   Ni    i   Ro   i   R|   Rp   s    %s is not sample order invariant(   i   (   i   (   R	   Rq   R
   R   Rx   R   (   R   R|   R}   R~   t   y_true_shufflet   y_pred_shuffleR   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   test_sample_order_invariance  s    

c    	      C  sk  t  d  }  |  j d d d d	 } |  j d d d d
 } |  j d | j  } t | | | d d \ } } } xA t D]9 } t | } t | | |  | | |  d d | qy WxA t D]9 } t | } t | | |  | | |  d d | q Wxj t	 D]b } t | } t | | |  | | |  d d | t | | |  | | |  d d | qWd  S(   Ni    i   Ro   i   i   R|   Rp   s    %s is not sample order invariant(   i   i   (   i   i   (
   R	   Rq   t   normalt   shapeR
   t   MULTILABELS_METRICSRx   R   t   THRESHOLDED_MULTILABEL_METRICSt   MULTIOUTPUT_METRICS(	   R|   R}   R~   t   y_scoreR   R   t   y_score_shuffleR   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt7   test_sample_order_invariance_multilabel_and_multioutput  s4    


c      
   C  s  t  d  } | j d d d d } | j d d d d } t |  } t |  } t j |  t j |  } } t | j d  t | j d  t j | d  } t j | d  }	 t j | d  }
 t j | d  } t   t	 |  } | | |  } t
 | | |  | d d |  t
 | | |  | d d	 |  t
 | | |	  | d d
 |  t
 | | |  | d d |  t
 | | |  | d d |  t
 | | |	  | d d |  t
 | | |  | d d |  t
 | | |	  | d d |  t
 | | |  | d d |  t t | | |  t t | |
 |  t t | | |  t t | |
 |  t t | | |  t t | |
 |	  |  t t Bt Bk rt t | |
 |  n  Wd  QXd  S(   Ni    i   Ro   i   i   iRp   s,   %s is not representation invariant with lists3   %s is not representation invariant with np-array-1ds7   %s is not representation invariant with np-array-columns@   %s is not representation invariant with mix np-array-1d and listsK   %s is not representation invariant with mix np-array-1d and np-array-columnsD   %s is not representation invariant with mix list and np-array-column(   i   (   i   (   ii   (   ii   (   i   i(   i   i(   R	   Rq   t   listR9   R^   R   t   ndimt   reshapeR   Rx   R   R   t
   ValueErrorR   R   R   (   R   R|   t   y1t   y2t   y1_listt   y2_listt   y1_1dt   y2_1dt	   y1_columnt	   y2_columnt   y1_rowt   y2_rowR   t   measure(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt&   test_format_invariance_with_1d_vectors  sf    



c      
   C  s  t  d  } | j d d d d } | j d d d d } t j d d g  | } t j d d g  | } d } d d g } t   6t |  } | | |  }	 | }
 |  t k r t |
 d | }
 n  |
 | |  } t |	 | d d	 j	 |   |
 | j
 d
  | j
 d
   } t |	 | d d j	 |   |  t k rt |
 d | }
 |
 | |  } t |	 | d d j	 |   |
 | j
 d
  | j
 d
   } t |	 | d d j	 |   n  Wd  QXd  S(   Ni    i   Ro   i   t   eggst   spamt	   pos_labelRp   s+   {0} failed string vs number invariance testt   Os2   {0} failed string object vs number invariance testt   labelss,   {0} failed string vs number  invariance test(   i   (   i   (   R	   Rq   R9   R^   R   t   CLASSIFICATION_METRICSt   METRICS_WITH_POS_LABELR   R   t   formatR7   t   METRICS_WITH_LABELS(   R   R|   R   R   t   y1_strt   y2_strt   pos_label_strt
   labels_strR   t   measure_with_numbert
   metric_strt   measure_with_strt   measure_with_strobj(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt7   test_classification_invariance_string_vs_numbers_labelsT  sB    




c      
   C  sL  t  d  } | j d d d d } | j d d d d } t j d d g  | } d } t    t |  } |  t k r| } |  t k r t | d | } n  | | |  } | | |  }	 t	 | |	 d d	 j
 |   | | j d
  |  }
 t	 | |
 d d j
 |   n/ t t | | |  t t | | j d
  |  Wd  QXd  S(   Ni    i   Ro   i   R   R   R   Rp   s+   {0} failed string vs number invariance testR   s2   {0} failed string object vs number invariance test(   i   (   i   (   R	   Rq   R9   R^   R   Rv   t   METRIC_UNDEFINED_BINARYR   R   R   R   R7   R   R   (   R   R|   R   R   R   R   R   R   R   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt4   test_thresholded_invariance_string_vs_numbers_labels  s,    


i    i   R   c         C  s1   x* t  D]" \ } } t t d |  | |  q Wd  S(   Ns   contains NaN, infinity(   t   invalidsR   R   (   R   R}   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt)   test_regression_thresholded_inf_nan_input  s    c         C  s1   x* t  D]" \ } } t t d |  | |  q Wd  S(   NsJ   Classification metrics can't handle a mix of binary and continuous targets(   R   R   R   (   R   R}   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt!   test_classification_inf_nan_input  s    c         C  sJ   t  |  } x9 t d d g d d D] \ } } | | g | g  q# Wd  S(   Ni    i   t   repeati   (   Rx   R   (   R   R   t   it   j(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   check_single_sample  s    
%c         C  sn   t  |  } x] t d d g d d D]C \ } } } } | t j | | g g  t j | | g g   q# Wd  S(   Ni    i   R   i   (   Rx   R   R9   R^   (   R   R   R   R   t   kt   l(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   check_single_sample_multioutput  s    
+c         C  s   t  |   d  S(   N(   R   (   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   test_single_sample  s    c         C  s   t  |   d  S(   N(   R   (   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   test_single_sample_multioutput  s    c         C  s   t  j d d d d g d d d d g d d d d g g  } t  j d d g d d g d d g g  } t |  } t t | | |  d  S(   Ni   i    (   R9   R^   Rx   R   R   (   R   R}   R~   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt(   test_multioutput_number_of_output_differ  s    <*
c         C  s   t  d  } | j d d d d
 } | j d d d d } t |  } | | |  } xj t d  D]\ } | j | j d  } t | | d  d   | f | d  d   | f  | d d	 |  qb Wd  S(   Ni    i   Ro   i   i   i   i   Rp   s'   %s is not dimension shuffling invariant(   i   i   (   i   i   (   R	   t   uniformRx   t   ranget   permutationR   R   (   R   R|   R}   R~   R   t   errort   _t   perm(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt=   test_multioutput_regression_invariance_to_dimension_shuffling  s    
/c    
      C  s4  d }  d } t  d d d |  d d d | d	 t  \ } } t  d d d |  d d d | d	 t  \ } } t j | d g |  g g  } t j | d g |  g g  } t j |  } t j |  } xk t D]c } t | } t | t	  r d
 | _
 | | _ n  | | |  }	 t | | |  |	 d d | q Wd  S(   Ni   i2   t
   n_featuresi   t	   n_classesR|   i    t	   n_samplest   allow_unlabeledt   tmpRp   sO   %s failed representation invariance between dense and sparse indicator formats.(   R   t   TrueR9   t   vstackt   spt
   coo_matrixR   Rx   t
   isinstanceR   t
   __module__t   __name__R   (
   R   R   R   R   R   t   y1_sparse_indicatort   y2_sparse_indicatorR   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt)   test_multilabel_representation_invariance  s,    
	c      	   C  s   d d g g d g d g d d g g d d d g g  g d g t  j g  d d g g d d g } t |  } x! | D] } t t | | |  qq Wd  S(	   Ni    i   i   t   dtypet   object(    (   i    i   (    (   R9   R^   Rx   R   R   (   R   t   multilabel_sequencesR   t   seq(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt+   test_raise_value_error_multilabel_sequences'  s    $
c         C  s   d } t  d  } | j d d d | f } | j d d d | f } t |  } | | | d t } t d | d d d t | | | d t | |  d  S(	   Ni   i    i   Ro   R2   g      Rp   s0   We failed to test correctly the normalize option(   R	   Rq   Rx   R   R   R   t   False(   R   R   R|   R}   R~   t   metricsR   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt+   test_normalize_option_binary_classification7  s    
c         C  s   t  d  } | j d d d d	 } | j d d d d
 } | j d } t |  } | | | d t } t d | d d d t | | | d t | |  d  S(   Ni    i   Ro   i   R2   g      Rp   s0   We failed to test correctly the normalize option(   i   (   i   (   R	   Rq   R   Rx   R   R   R   R   (   R   R|   R}   R~   R   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt/   test_normalize_option_multiclass_classificationH  s    
c          C  s   d }  d } t  d d d |  d d d t d	 |  \ } } t  d d d |  d d d t d	 |  \ } } | d g |  7} | d g |  7} xn t D]f } t | } | | | d
 t } t d | d d d t | | | d
 t | | d d | q Wd  S(   Ni   id   R   i   R   R|   i    R   R   R2   g      Rp   s0   We failed to test correctly the normalize options   Failed with %s(   R   R   t   METRICS_WITH_NORMALIZE_OPTIONRx   R   R   R   (   R   R   R   R}   R~   R   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt/   test_normalize_option_multilabel_classificationY  s*    
c      	   C  s  | j  \ } } |  | | d d  } t | g  t |  D]5 }	 |  | d  d   |	 f | d  d   |	 f  ^ q7  |  | | d d }
 t |
 |  | j   | j     |  | | d d } t | t j |   t j | d d d t } t j |  d k r9|  | | d d } t | t j	 | d |  n" |  | | d d } t | d  | r|  | | d d	 } t | t j g  t |  D] }	 |  | |	 | |	  ^ q  n  t
 t |  | | d d
 t
 t |  | | d d d  S(   NRD   RJ   RO   R6   i    R   RE   t   weightsRT   t   unknownt   garbage(   R   t   NoneR   R   t   ravelR9   t   meanR8   t   intRD   R   R   (   R   R}   R~   t   y_true_binarizet   y_pred_binarizet   is_multilabelR   R   t   label_measureR   t   micro_measuret   macro_measureR   t   weighted_measuret   sample_measure(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   _check_averagingy  s0    F	4c         C  s   t  |  j d  } t |  } |  t k rG t | | | | | |  n4 |  t k ro t | | | | | |  n t d   d  S(   Nt
   multilabels2   Metric is not recorded as having an average option(   R   t
   startswithRx   t   METRICS_WITH_AVERAGINGR   t"   THRESHOLDED_METRICS_WITH_AVERAGINGR   (   R   R}   R   R~   R   R   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   check_averaging  s    
c   
      C  s   d \ } } t  d  } | j d | d | f } | j d | d | f } | j d | | f  } t   j |  } | j |  } | j |  }	 t |  | | | |	 |  d  S(   Ni2   i   i    Ro   (   i2   i   (   R	   Rq   R   R   t   fitt	   transformR   (
   R   R   R   R|   R}   R~   R   t   lbR   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   test_averaging_multiclass  s    c   
      C  s   d \ } } t  d d d | d d d | d t  \ } } | d	  } | d	 } t d
  j d d	 | f  } | } | }	 t |  | | | |	 |  d  S(   Ni(   i   R   i   R   R|   R   R   i   i    Ro   (   i(   i   (   R   R   R	   R   R   (
   R   R   R   R   t   yR}   R~   R   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   test_averaging_multilabel  s    

c         C  sV   t  j d  } t  j d  } t  j d  } | } | } t |  | | | | |  d  S(   Ni   i   (   i   i   (   i   i   (   i   i   (   R9   t   zerosR   (   R   R}   R~   R   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt$   test_averaging_multilabel_all_zeroes  s    c          C  sV   t  j d  }  t  j d  } |  } | } d d  } t | |  | | | d t d  S(   Ni   i   RO   c         S  s   t  t |  | |  S(   N(   R-   R'   (   R}   R   RD   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyR=     s    R   (   i   i   (   i   i   (   R9   R   R   R   (   R}   R~   R   R   t   binary_metric(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt+   test_averaging_binary_multilabel_all_zeroes  s    c         C  sV   t  j d  } t  j d  } t  j d  } | } | } t |  | | | | |  d  S(   Ni   i   (   i   i   (   i   i   (   i   i   (   R9   t   onesR   (   R   R}   R~   R   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt"   test_averaging_multilabel_all_ones  s    c         C  s  t  j j d  } | j d d d t |  } | | | d d  } t | | | | d t  j d t |   d d |  | | | d | } t t	  * } t | |  d	 | | |  f | _
 Wd  QX| | | d | j   }	 t | |	 d d
 | |	 |  f | t  j | | d d t  j | | d d d d  }
 t | |
 d d |  | d d  d  } t  j |  } d | d  d  d  <| d d  d  } | d d  d  } | | | d | } | | | d | } t | | d d | | |  f |  j d  sMxA d d g D]0 } t | | | | d | | d d |  qWn  d j t |  t |  t |  d  } t t | | | | d t  j | | g  d  S(   Ni    i   i
   Ro   t   sample_weightR   Rp   sA   For %s sample_weight=None is not equivalent to sample_weight=onessQ   Unweighted and weighted scores are unexpectedly almost equal (%s) and (%s) for %ssV   Weighted scores for array and list sample_weight input are not equal (%s != %s) for %sR6   s.   Weighting %s is not equal to repeating samplesi   se   Zeroing weights does not give the same result as removing the corresponding samples (%s != %s) for %st   unnormalizedg333333?s/   %s sample_weight is not invariant under scalingsH   Found input variables with inconsistent numbers of samples: [{}, {}, {}](   R9   t   randomt   RandomStateRq   R]   R   R   R   R   Rz   R{   t   tolistR   t   copyR   R   R   R   R   t   hstack(   R   R   R   R   t   rngR  t   unweighted_scoret   weighted_scoreR   t   weighted_score_listt   repeat_weighted_scoret   sample_weight_subsett   sample_weight_zeroedt	   y1_subsett	   y2_subsett   weighted_score_subsett   weighted_score_zeroedt   scalingt   error_message(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   check_sample_weight_invariance  sh    '	!					c         C  s]   d } t  d  } | j d | f  } | j d | f  } t |  } t |  | | |  d  S(   Ni2   i    Ro   (   R	   t   random_sampleRx   R  (   R   R   R|   R}   R~   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt(   test_regression_sample_weight_invarianceH  s    
c         C  s   d } t  d  } | j d d d | f } | j d d d | f } | j d | f  } t |  } |  t k r t |  | | |  n t |  | | |  d  S(   Ni2   i    i   Ro   (   R	   Rq   R  Rx   Rv   R  (   R   R   R|   R}   R~   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt$   test_binary_sample_weight_invarianceV  s    
c         C  s   d } t  d  } | j d d d | f } | j d d d | f } | j d | d f  } t |  } |  t k r t |  | | |  n t |  | | |  d  S(   Ni2   i    i   Ro   (   R	   Rq   R  Rx   Rv   R  (   R   R   R|   R}   R~   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt(   test_multiclass_sample_weight_invarianceh  s    
c   	      C  s   t  d  } t d d d d d d d d d	 t  \ } } t d d d d d d d d d	 t  \ } } t j | | g  } t j | | g  } | j d d
 d | j } t |  } |  t k r t	 |  | | |  n t	 |  | | |  d  S(   Ni    R   i   R   i   R|   R   id   R   i   Ro   (
   R	   R   R   R9   R   Rq   R   Rx   Rv   R  (	   R   R|   R   t   yat   ybR}   R~   R   R   (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt(   test_multilabel_sample_weight_invariance{  s    
c       	   C  sj  t  j d d d d g d d d d g g  }  t  j d d d d g d d d d g g  } t  j d d d g  } t  j d d d g  } t  j d d d d g  } t  j | d t \ } } x t D] } x | | g |  | g g D]x \ } }	 | t k r|	 j d k rq n  t | }
 |
 | |	 d | d d  } |
 | |	 d d  } t	 | | |  q Wq Wd  S(   Ni   i    i   i   t   return_inverseR   RD   (
   R9   R^   t   uniqueR   R   R   R   Rx   R   R   (   t   y_true_multilabelt   y_pred_multilabelt   y_true_multiclasst   y_pred_multiclassR   R   t   inverse_labelsR   R}   R~   R   t   score_labelst   score(    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   test_no_averaging_labels  s    --
(   t
   __future__R    R   t	   functoolsR   t	   itertoolsR   R   t   numpyR9   t   scipy.sparset   sparseR   t   pytestt   sklearn.datasetsR   t   sklearn.preprocessingR   t   sklearn.utils.multiclassR   t   sklearn.utils.validationR   R	   t   sklearn.utilsR
   t   sklearn.utils.testingR   R   R   R   R   R   R   t   sklearn.metricsR   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,   t   sklearn.metrics.baseR-   t   REGRESSION_METRICSR   R   R   Re   t   CURVE_METRICSRv   t   dictRx   t   updateR   t   METRIC_UNDEFINED_MULTICLASSRs   Rw   R   R   R   R   R   R   R   R   Rr   Rt   t   METRICS_WITHOUT_SAMPLE_WEIGHTR   t   markt   parametrizeRu   R   R   R   R   R   t   infR`   R   t   valuesR   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R  Ry   R  R  R  R  R&  (    (    (    s@   lib/python2.7/site-packages/sklearn/metrics/tests/test_common.pyt   <module>   s2  $	


	

																											!	$	J	0#!	'	$
	&"	%	 *			O		*	*	