ó
‡ˆ\c        
   @   sð  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	 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 e j ƒ  Z d „  Z d „  Z  d „  Z! d „  Z" e d „  ƒ Z# e j$ j% d e j& d d d d d g d  d! ƒe j& d d d g d  d! ƒe j& d" g d  d! ƒf e j& d# d$ d% d$ d% g d  e' ƒe j& d$ d# d% g d  e' ƒe j& d& g d  e' ƒf e j& d# d$ d% d$ d% g ƒ e j& d$ d# d% g ƒ e j& d& g ƒ f g d' d! d( d) g ƒd* „  ƒ Z( d+ „  Z) e j$ j% d  d) d( g ƒ d, „  ƒ Z* d- „  Z+ e j$ j% d. e j& d d d d d g d  d! ƒe j& d# d$ d% d$ d% g d  e' ƒe j& d# d$ d% d$ d% g ƒ g d' d! d( d) g ƒd/ „  ƒ Z, d0 „  Z- d1 „  Z. d2 „  Z/ d3 „  Z0 d4 „  Z1 d5 „  Z2 d6 „  Z3 d7 „  Z4 d8 „  Z5 d9 „  Z6 d: „  Z7 d; „  Z8 d< „  Z9 d= „  Z: d> „  Z; d? „  Z< e j$ j% d@ e j& d d d d d g d  d! ƒe j& d d d g d  d! ƒf e j& d# d$ d% d$ d% g d  e' ƒe j& d$ d# d% g d  e' ƒf e j& d# d$ d% d$ d% g ƒ e j& d$ d# d% g ƒ f g d' d! d( d) g ƒdA „  ƒ Z= d S(B   iÿÿÿÿN(   t   issparse(   t
   coo_matrix(   t
   csc_matrix(   t
   csr_matrix(   t
   dok_matrix(   t
   lil_matrix(   t   type_of_target(   t   assert_array_equal(   t   assert_equal(   t   assert_raises(   t   assert_raise_message(   t   assert_warns_message(   t   ignore_warnings(   t   LabelBinarizer(   t   MultiLabelBinarizer(   t   LabelEncoder(   t   label_binarize(   t   _inverse_binarize_thresholding(   t   _inverse_binarize_multiclass(   t   _encode(   t   datasetsc         C   s"   t  |  d ƒ r |  j ƒ  }  n  |  S(   Nt   toarray(   t   hasattrR   (   t   a(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyR   #   s    c       	   C   sw  d d d d g }  t  d t ƒ } t j d d d d g g ƒ j } | j |  ƒ } t | j d g ƒ t | | ƒ t | j | ƒ |  ƒ t  d t	 ƒ } | j |  ƒ } t
 | ƒ s· t ‚ t | j d g ƒ t | | j ƒ  ƒ t | j | j ƒ  ƒ |  ƒ t  d t ƒ } d d d d g }  t j d d d d g g ƒ j } | j |  ƒ } t | j d d g ƒ t | | ƒ t j d d g d d g d d g d d g g ƒ } t | j | ƒ |  ƒ d d d d d	 g }  t j d d d d g d d d d g d d d d g d d d d g d d d d g g ƒ } | j |  ƒ } t | j d	 d d d g ƒ t | | ƒ t | j | ƒ |  ƒ d  S(
   Nt   post   sparse_outputi    t   negi   t   spamt   hamt   eggst   0(   R   t   Falset   npt   arrayt   Tt   fit_transformR   t   classes_t   inverse_transformt   TrueR    t   AssertionErrorR   (   t   inpt   lbt   expectedt   gott	   to_invert(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_binarizer)   sD    !!		c       	   C   sê   t  ƒ  }  t j d d d g d d d g d d d g g ƒ } |  j d d d g ƒ } t | | ƒ t j d d d g d d d g d d d g d d d g d d d g d d d g g ƒ } |  j d d d d d d g ƒ } t | | ƒ d  S(	   Ni   i    t   bt   dt   eR   t   ct   f(   R   R    R!   R#   R   t	   transform(   R)   R*   R+   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt"   test_label_binarizer_unseen_labelsW   s    	!c       	   C   sK  t  d d d d ƒ }  t j d d d d g ƒ } t j d d d d g g ƒ j } |  j | ƒ } t | | ƒ t |  j | ƒ | ƒ t  d d d d ƒ }  t j d d d d d g ƒ } t j d d d d 
g d d d 
d g d d 
d d g d d d 
d g d 
d d d g g ƒ } |  j | ƒ } t | | ƒ t |  j | ƒ | ƒ d  S(   Nt	   neg_labeliþÿÿÿt	   pos_labeli    i   i   i   (   R   R    R!   R"   R#   R   R%   (   R)   R(   R*   R+   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt'   test_label_binarizer_set_label_encodingj   s     !c          C   sS  t  j d d d d g ƒ }  t ƒ  j |  ƒ } d d d g } t t | j | ƒ t ƒ  } t t | j g  ƒ t t | j g  ƒ t t t d d d d ƒt t t d d d d ƒt t t d d d d d t ƒt t t	 d t
 d d g d d g g ƒ d	 d
 d d d g d d ƒg  d d g d g d d d g d g g } t t t ƒ  j | ƒ t t t	 d t
 d d g d d g g ƒ d	 d
 d d d d g d d ƒt t t	 d t  j d d d g d d d g g ƒ d	 d d d d d g d d ƒt t t ƒ  j t  j d d g d d g g ƒ ƒ t t t t  j d d g d d g g ƒ d d d g ƒ d  S(   Ni    i   i   R5   R6   i   R   t   yt   output_typet   foot   classest	   thresholdt   binary(   i   i   (   i    (   i    i   (   R    R!   R   t   fitR	   t
   ValueErrorR3   R%   R&   R   R   R#   R   (   t	   one_classR)   t   multi_labelt   y_seq_of_seqs(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_binarizer_errors‚   s2    	$*$-1's   values, classes, unknowni   i   i   t   dtypet   int64i   R.   R   R1   R/   t   idst   objectt   strc         C   sÑ   t  ƒ  } | j |  ƒ t | j | ƒ t | j |  ƒ d d d d d g ƒ t | j d d d d d g ƒ |  ƒ t  ƒ  } | j |  ƒ } t | d d d d d g ƒ t j t	 d d ƒ | j | ƒ Wd  QXd  S(   Ni   i    i   t   matchs   unseen labels(
   R   R>   R   R$   R3   R%   R#   t   pytestt   raisesR?   (   t   valuesR;   t   unknownt   let   ret(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_encoder®   s    	%%	c       	   C   sä   t  ƒ  }  |  j d d d d d d g ƒ t |  j d d d d d g ƒ t |  j d d d d d d d g ƒ d d d d d d d g ƒ t |  j d d d d d d d g ƒ d d d d d d d g ƒ t t |  j d d g ƒ d  S(	   Ni   i   i   iÿÿÿÿi    i   i   i   (   R   R>   R   R$   R3   R%   R	   R?   (   RN   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt    test_label_encoder_negative_intsÈ   s    	$$c         C   sK   t  ƒ  } | j t j d d g d |  ƒƒ d } t t | | j d ƒ d  S(   Nt   applet   orangeRD   s   bad input shape(   R   R>   R    R!   R
   R?   R3   (   RD   RN   t   msg(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt    test_label_encoder_str_bad_shapeÓ   s    	"c          C   s²   t  ƒ  }  t t |  j g  ƒ t t |  j g  ƒ t  ƒ  }  |  j d d d d d g ƒ d } t t | |  j d g ƒ t t | |  j d d d g ƒ d	 } t t | |  j d
 ƒ d  S(   Ni   i   i   iÿÿÿÿs!   contains previously unseen labelsiþÿÿÿiýÿÿÿiüÿÿÿs   bad input shape ()t    (   R   R	   R?   R3   R%   R>   R
   (   RN   RT   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_encoder_errorsÛ   s    		RL   c         C   sd   t  ƒ  } | j |  ƒ | j g  ƒ } t t j g  ƒ | ƒ | j g  ƒ } t t j g  ƒ | ƒ d  S(   N(   R   R>   R3   R   R    R!   R%   (   RL   RN   t   transformedt   inverse_transformed(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_encoder_empty_arrayí   s    	c       
   C   s  d „  d „  d „  g }  t  j d d d g d d d g d d d g g ƒ } |  d ƒ  } xmt t g D]_} xV|  D]N} t d | ƒ } | j | ƒ  ƒ } t t | ƒ | ƒ | rÚ t | j j	 | j
 j	 ƒ | j ƒ  } n  t | | ƒ t d d d g | j ƒ t | j | ƒ | ƒ t d | ƒ } | j | ƒ  ƒ j | ƒ  ƒ } t t | ƒ | ƒ | r„t | j j	 | j
 j	 ƒ | j ƒ  } n  t | | ƒ t d d d g | j ƒ t | j | ƒ | ƒ qr Wqe Wt t | j t t  j d d d g d d d g d d d g g ƒ ƒ ƒ d  S(	   Nc           S   s   d d d g S(   Ni   i   i   (   i   i   (   i   (   i   i   (    (    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   <lambda>  s    c           S   s.   t  d d g ƒ t  d g ƒ t  d d g ƒ f S(   Ni   i   i   (   t   set(    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyR[     s    c           S   s+   t  t  d ƒ t  d ƒ t d d g ƒ g ƒ S(   Ni   i   i   (   i   i   (   i   (   t   iterR\   (    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyR[     s    i    i   R   i   i   (   R    R!   R&   R   R   R#   R   R    t   indicesRD   t   indptrR   R   R$   R%   R>   R3   R	   R?   R   (   t   inputst   indicator_matt   inverseR   R(   t   mlbR+   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt'   test_sparse_output_multilabel_binarizerþ   s>    c          C   s'  d „  d „  d „  g }  t  j d d d g d d d g d d d g g ƒ } |  d ƒ  } xÈ |  D]À } t ƒ  } | j | ƒ  ƒ } t | | ƒ t d d d g | j ƒ t | j | ƒ | ƒ t ƒ  } | j | ƒ  ƒ j	 | ƒ  ƒ } t | | ƒ t d d d g | j ƒ t | j | ƒ | ƒ q_ Wd  S(   Nc           S   s   d d d g S(   Ni   i   i   (   i   i   (   i   (   i   i   (    (    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyR[   -  s    c           S   s.   t  d d g ƒ t  d g ƒ t  d d g ƒ f S(   Ni   i   i   (   R\   (    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyR[   .  s    c           S   s+   t  t  d ƒ t  d ƒ t d d g ƒ g ƒ S(   Ni   i   i   (   i   i   (   i   (   R]   R\   (    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyR[   /  s    i    i   i   i   (
   R    R!   R   R#   R   R$   R   R%   R>   R3   (   R`   Ra   Rb   R(   Rc   R+   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_multilabel_binarizer*  s$    		c          C   se   t  ƒ  }  d d g d g g  g } t j d d g d d g d d g g ƒ } t |  j | ƒ | ƒ d  S(   Ni   i   i    (   R   R    R!   R   R#   (   Rc   R8   t   Y(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt&   test_multilabel_binarizer_empty_sampleE  s    		c          C   s  t  ƒ  }  d d g g } t j d d g d d g g ƒ } d } t t | |  j | ƒ j d d g d d g g ƒ } t | | ƒ t j d d d g d d d g g ƒ } t  d d d d g ƒ }  t t | |  j | ƒ j d d g d d g g ƒ } t | | ƒ d  S(   Ni   i   i    s(   unknown class(es) [0, 4] will be ignoredi   R;   i   (   R   R    R!   R   t   UserWarningR>   R3   R   (   Rc   R8   Rf   t   wt   matrix(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt'   test_multilabel_binarizer_unknown_classN  s    	!	*'	*c          C   sÅ  d d	 d
 g }  t  j d d d g d d d g d d d g g ƒ } t d d d d g ƒ } t | j |  ƒ | ƒ t | j d d d g ƒ t d d d d g ƒ } t | j |  ƒ j |  ƒ | ƒ t | j d d d g ƒ t d d d d d g ƒ } t | j |  ƒ t  j d g d g d g g | f ƒ ƒ t | j d d d d g ƒ t	 |  ƒ }  t d d d d g ƒ } t | j |  ƒ j |  ƒ | ƒ d } t d d d d d g ƒ } t
 t | | j |  ƒ d  S(   Ni   i   i   i    R;   i   st   The classes argument contains duplicate classes. Remove these duplicates before passing them to MultiLabelBinarizer.(   i   i   (   i   (   i   i   (   R    R!   R   R   R#   R$   R>   R3   t   hstackR]   R
   R?   (   R(   Ra   Rc   t   err_msg(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt'   test_multilabel_binarizer_given_classes^  s(    (c          C   sÂ   d g d g d g g }  t  j d d d g d d d g d d d g g ƒ } t ƒ  } t | j |  ƒ | ƒ t | j | ƒ |  ƒ t ƒ  } t | j |  ƒ j |  ƒ | ƒ t | j | ƒ |  ƒ d  S(   Ni   i    i   (   R    R!   R   R   R#   R%   R>   R3   (   R(   Ra   Rc   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt.   test_multilabel_binarizer_same_length_sequence  s    		c          C   s  t  j d d t ƒ}  d d d g |  (d d d g d d d g f d d d g d
 d d	 g f d d f d d d f g |  f g } t  j d d d g d d d g d d d g g ƒ } x§ | D]Ÿ \ } } t ƒ  } t | j | ƒ | ƒ t | j | ƒ t | j | ƒ | ƒ t ƒ  } t | j	 | ƒ j
 | ƒ | ƒ t | j | ƒ t | j | ƒ | ƒ q¹ Wt ƒ  } t t | j i  i  i d d
 6f g ƒ d  S(   Ni   RD   i   i   t   2t   3t   1R.   R1   R   i    (   i   (   i   (   i   (   Rp   Rq   (   Rr   (   Rr   Rp   (   R.   R1   (   R   (   R   R.   (   i   (   i   (   i   (   (   i   (   i   (   i   (   R    t   emptyRG   R!   R   R   R#   R$   R%   R>   R3   R	   t	   TypeError(   t   tuple_classesR`   Ra   R(   R;   Rc   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt,   test_multilabel_binarizer_non_integer_labels  s&    $			c          C   sD   d g }  t  j d d g g ƒ } t ƒ  } t | j |  ƒ | ƒ d  S(   Ni   i    (   i   i   i   i    (   R    R!   R   R   R#   (   R(   Ra   Rc   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt$   test_multilabel_binarizer_non_unique¬  s    		c          C   sï   d g }  t  ƒ  } | j |  ƒ t t | j t j d d g g ƒ ƒ | j t j d d g g ƒ ƒ | j t j d d g g ƒ ƒ | j t j d d g g ƒ ƒ t t | j t j d g g ƒ ƒ t t | j t j d d d g g ƒ ƒ d  S(   Ni   i    i   (   i   i   i   i    (   R   R#   R	   R?   R%   R    R!   (   R(   Rc   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt,   test_multilabel_binarizer_inverse_validation³  s    		%"c          C   sB  t  d d g d d d d d g ƒ}  t j d d d d g d d d d g g ƒ } t |  | ƒ t  d d g d d d d d g ƒ}  t j d d d d g d d d d g g ƒ } t |  | ƒ t  d d d d g d d d d d g ƒ}  t j d d d d g d d d d g d d d d g d d d d g g ƒ } t |  | ƒ d  S(   Ni   i   R;   i   i   i    i   (   R   R    R!   R   (   t   outR*   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt$   test_label_binarize_with_class_orderÃ  s    $-$-*c         C   s¨  x¡t  t g D]“} | d k s+ | d k r\ | r\ t t t |  | d | d | d | ƒq n  t |  | d | d | d | ƒ} t t | ƒ | ƒ t t | ƒ | ƒ t	 |  ƒ } | d k rÐ t
 | d | ƒ} n& t | d | d | d | | d	 ƒ} t t | ƒ t |  ƒ ƒ t d | d | d | ƒ }	 |	 j |  ƒ } t t | ƒ | ƒ t t | ƒ | ƒ |	 j | ƒ }
 t t |
 ƒ t |  ƒ ƒ t t |
 ƒ t |  ƒ ƒ q Wd  S(
   Ni    R5   R6   R   t
   multiclassR;   R9   R<   g       @(   R&   R   R	   R?   R   R   R   R   R    R   R   R   R   R#   R%   (   R8   R;   R6   R5   R*   R   t	   binarizedt   y_typet   inversedR)   t   inverse_output(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   check_binarized_resultsÕ  s:    		
	c          C   s  d d d g }  d d g } d } d } t  j d d g d d g d d g g ƒ d  d  … d f j d ƒ } t |  | | | | ƒ d d d g }  d d g } d } d } t  j d d g d d g d d g g ƒ d  d  … d f j d ƒ } t |  | | | | ƒ d  S(   Ni    i   i   iÿÿÿÿi   (   iÿÿÿÿi   (   iÿÿÿÿi   (   R    R!   t   reshapeR€   (   R8   R;   R6   R5   R*   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_binarize_binaryþ  s    CCc          C   s|   d d d g }  d d d g } d } d } d t  j d ƒ } t |  | | | | ƒ t t t |  | d d d | d t ƒd  S(	   Ni    i   i   i   R5   iÿÿÿÿR6   R   (   R    t   eyeR€   R	   R?   R   R&   (   R8   R;   R6   R5   R*   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_binarize_multiclass  s    c          C   sÝ   t  j d d d g d d d g d d d g g ƒ }  d d d g } d } d } | |  } g  t t t t t g D] } | |  ƒ ^ qn } x+ |  g | D] } t | | | | | ƒ q” Wt t	 t
 | | d d d | d t ƒd  S(   Ni    i   i   R5   iÿÿÿÿR6   R   (   R    R!   R   R   R   R   R   R€   R	   R?   R   R&   (   t   y_indR;   R6   R5   R*   t   sparse_matrixt   y_sparseR8   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_label_binarize_multilabel  s    3
	"c        
   C   s2   t  t t d d g d d d g d d d d ƒd  S(   Ni    i   R;   R6   R5   i   (   R	   R?   R   (    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt!   test_invalid_input_label_binarize0  s    !c          C   se   t  t d d d g d d d g d d d g g ƒ t j d ƒ ƒ }  t |  t j d d d g ƒ ƒ d  S(   Ni    i   iÿÿÿÿi   (   R   R   R    t   arangeR   R!   (   R+   (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt    test_inverse_binarize_multiclass5  s
    s   values, expectedc         C   s§   t  |  ƒ } t | | ƒ t  |  d t ƒ\ } } t | | ƒ t | t j d d d d d g ƒ ƒ t  |  | d t ƒ\ } } t | t j d d d d d g ƒ ƒ d  S(   Nt   encodei   i    i   (   R   R   R&   R    R!   (   RL   R*   t   uniquest   encodedt   _(    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   test_encode_util=  s    
%(>   t   numpyR    RJ   t   scipy.sparseR    R   R   R   R   R   t   sklearn.utils.multiclassR   t   sklearn.utils.testingR   R   R	   R
   R   R   t   sklearn.preprocessing.labelR   R   R   R   R   R   R   t   sklearnR   t	   load_irist   irisR   R-   R4   R7   RC   t   markt   parametrizeR!   RG   RP   RQ   RU   RW   RZ   Rd   Re   Rg   Rk   Rn   Ro   Rv   Rw   Rx   Rz   R€   R‚   R„   Rˆ   R‰   R‹   R   (    (    (    sE   lib/python2.7/site-packages/sklearn/preprocessing/tests/test_label.pyt   <module>   s   		.		,	!3!-	$		!!!	,					!						)						!!