ó
‡ˆ\c           @   sP  d  d l  m Z d  d l Z d  d l j 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 e* f d „  ƒ  YZ+ i e e j, j- d ƒ j. d  d! dH ƒƒ e e j/ d# d$ g d$ d# g g ƒ ƒ e e j/ d# d$ g d$ d# g g d% e j0 ƒƒ e e j/ d# d$ g d$ d# g g d% e j1 ƒƒ e e j/ d# d$ g d$ d# g g d% e j2 ƒƒ e e j/ d# d$ g d$ d# g g d% e j3 ƒƒ e e j/ d# d$ g d$ d# g g d% e j4 ƒƒ e e j/ d# d# g d# d# g g ƒ ƒ e e j/ d# d$ g g ƒ ƒ e j/ d  d$ g d$ d  g g ƒ e j/ d& d' g d' d& g g ƒ e+ e j/ d& d' g d' d& g g ƒ ƒ g d( 6d$ d# d  d  d$ d) d  d) d) d) g
 e j/ d$ d# d  g ƒ e j/ d$ d# d  g d% e j1 ƒe j/ d$ d# d  g d% e j2 ƒe j/ d$ d# d  g d% e j3 ƒe j/ d$ d# d  g d% e j4 ƒe j/ d$ g d# g d  g g ƒ e+ e j/ d$ d# d  g ƒ ƒ d# d$ d  g d* d+ d, g e j/ d- d. d/ g ƒ e j/ d- d. d/ g d% e* ƒe j/ d* d+ d, g d% e* ƒg d0 6e j/ d$ d# d  d  g d$ d) d  d) g g ƒ e j/ d$ d# d  d  g d$ d) d  d) g g d% e j1 ƒe j/ d$ d# d  d  g d$ d) d  d) g g d% e j2 ƒe j/ d$ d# d  d  g d$ d) d  d) g g d% e j3 ƒe j/ d$ d# d  d  g d$ d) d  d) g g d% e j4 ƒe j/ d* d+ g d, d1 g g ƒ e j/ d- d. g d/ d2 g g ƒ e j/ d- d. g d/ d2 g g d% e* ƒe j/ d$ d# d  g g ƒ e+ e j/ d$ d# d  g g ƒ ƒ g
 d3 6d# d$ g d$ d$ g g  d# g e j/ d# d$ d$ d$ d# d# d# d$ d$ d$ g
 ƒ e j/ d# d$ d$ d$ d# d# d# d$ d$ d$ g
 d% e j0 ƒe j/ d# d$ d$ d$ d# d# d# d$ d$ d$ g
 d% e j1 ƒe j/ d# d$ d$ d$ d# d# d# d$ d$ d$ g
 d% e j2 ƒe j/ d# d$ d$ d$ d# d# d# d$ d$ d$ g
 d% e j3 ƒe j/ d# d$ d$ d$ d# d# d# d$ d$ d$ g
 d% e j4 ƒe j/ d# g d$ g g ƒ e+ e j/ d# g d$ g g ƒ ƒ d$ d  g d' d4 g d* g d* d+ g d5 d6 g e j/ d5 d6 g ƒ d- d. g e j/ d5 d6 g d% e* ƒg d7 6d8 g d# d9 g e j/ d# g d9 g g ƒ e j/ d# g d9 g g d% e j4 ƒg d: 6e j/ d# d9 g d9 d# g g ƒ e j/ d# d9 g d9 d# g g d% e j4 ƒe j/ d# d9 g g ƒ g d; 6g  g dI g e j/ e j/ g  ƒ e j/ d$ d  d' g ƒ g d% e* ƒe j/ g  ƒ e j/ d$ d  d' g ƒ g e5 d$ d  d' g ƒ e5 d$ d  g ƒ g e6 d$ d  d' g ƒ e6 d$ d  g ƒ g i d* d# 6d+ d$ 6i d* d# 6g e j/ g  g  g ƒ e j/ d# d$ g d  d' g g d) d4 g d< d= g g g ƒ g	 d> 6Z7 e5 d$ d  d' g ƒ i d* d# 6d+ d$ 6i d4 g d# 6d4 g d$ 6d5 e6 d$ d  d' g ƒ d g Z9 d$ g d  g d# d$ g g dJ d  dK g e j/ g  d$ d  g g d% d? ƒe+ e j/ g  d$ d  g g d% d? ƒƒ g Z: d@ „  Z; dA „  Z< dB „  Z= dC „  Z> dD „  Z? dE „  Z@ dF „  ZA dG „  ZB d S(L   iÿÿÿÿ(   t   divisionN(   t   product(   t   xrange(   t	   iteritems(   t   issparse(   t
   csc_matrix(   t
   csr_matrix(   t
   coo_matrix(   t
   dok_matrix(   t
   lil_matrix(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_equal(   t   assert_true(   t   assert_false(   t   assert_raises(   t   assert_raises_regex(   t   SkipTest(   t   unique_labels(   t   is_multilabel(   t   type_of_target(   t   class_distribution(   t   check_classification_targets(   t   _safe_split(   t   ShuffleSplit(   t   SVC(   t   datasetst
   NotAnArrayc           B   s#   e  Z d  Z d „  Z d d „ Z RS(   s^   An object that is convertable to an array. This is useful to
    simulate a Pandas timeseries.c         C   s   | |  _  d  S(   N(   t   data(   t   selfR   (    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   __init__*   s    c         C   s   |  j  S(   N(   R   (   R   t   dtype(    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt	   __array__-   s    N(   t   __name__t
   __module__t   __doc__R   t   NoneR    (    (    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyR   &   s   	i*   i   t   sizei
   i    i   R   iýÿÿÿi   s   multilabel-indicatori   t   at   bt   cu   au   bu   ct
   multiclasst   du   ds   multiclass-multioutputi   t   abct   deft   binarygñhãˆµøä>g      à?t
   continuouss   continuous-multioutputi   i   t   unknownt   objectc           C   s×  t  t t ƒ t t t d ƒ ƒ t j d ƒ ƒ t t t j d ƒ ƒ t j d ƒ ƒ t t d d d g ƒ t j d d d g ƒ ƒ t t t j d d d g d d d g d d d g g ƒ ƒ t j d ƒ ƒ t t t j d d d g d d d g g ƒ ƒ t j d ƒ ƒ t t d d d g t d ƒ ƒ t j d ƒ ƒ t t d d	 d
 ƒ t j d ƒ ƒ t  t t d d d g t j d ƒ ƒ t  t t t j d ƒ t j d ƒ ƒ t t t j d ƒ t j d ƒ ƒ t j d ƒ ƒ d  S(   Ni
   i   i    i   i   i   i   (   i    i   i   (   i    (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (	   R   t
   ValueErrorR   R
   R   t   npt   aranget   arrayt   ones(    (    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   test_unique_labels¤   s&    "%.%%!c          C   s    x6 d d d g D]% }  x t  |  D] } t | ƒ q! Wq Wx t D] } t t t | ƒ q@ Wx? d d d d g D]+ } x" t  | D] } t t t | ƒ q~ Wqm Wd  S(   NR-   R)   s   multilabel-indicatorR/   R.   s   continuous-multioutputs   multiclass-multioutput(   t   EXAMPLESR   t   NON_ARRAY_LIKE_EXAMPLESR   R1   (   t   formatt   yt   examplet   y_type(    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   test_unique_labels_non_specificÄ   s    c          C   sß   t  t d t d t d ƒ }  x: |  D]2 \ } } t t t | | ƒ t t t | | ƒ q& Wt t t d d g g d d g g ƒ t t t d d g ƒ t t t d d g d d	 g g ƒ t t t d d
 g d d	 g g ƒ d  S(   Ns   multilabel-indicatorR)   R-   i   i   R&   R*   t   1i   t   2(   R   R7   R   R1   R   (   t   mix_clf_formatt   y_multilabelt   y_multiclass(    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   test_unique_labels_mixed_typesÖ   s    
%"c    
   	   C   s—  xt  t ƒ D]‚\ }  } |  d k r5 t d } } n t d } } xJ| D]B} |  d k rw t | ƒ rw t d } } n t d } } t | ƒ sî t | d ƒ rPt j | ƒ j d k rPt j | ƒ j	 j
 d k rPt j | ƒ j d d k rPg  t t t t t g D] } | | ƒ ^ q} x1 | D]& }	 | t |	 ƒ d	 d
 |	 | f ƒq#Wn  t | ƒ rk| j ƒ  } n  | t | ƒ d	 d
 | | f ƒqI Wq Wd  S(   Ns   multilabel-indicatort   Truet   FalseR    i   t   biufi   i    t   msgs   is_multilabel(%r) should be %s(   s   multilabel-indicator(   R   R7   R   R   R   t   hasattrR2   t   asarrayt   ndimR   t   kindt   shapeR   R   R   R   R	   R   t   toarray(
   t   groupt   group_examplest   dense_assert_t	   dense_expR;   t   sparse_assert_t
   sparse_expt   sparse_matrixt   examples_sparset   exmpl_sparse(    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   test_is_multilabelæ   s8    c          C   sw   xp t  j ƒ  D]b }  |  d k rP xM t  |  D] } d } t t | t | ƒ q* Wq x t  |  D] } t | ƒ q[ Wq Wd  S(   NR/   R.   s   continuous-multioutputs   Unknown label type: (   R/   R.   s   continuous-multioutput(   R7   t   keysR   R1   R   (   R<   R;   RG   (    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt!   test_check_classification_targets  s    	c          C   s  xW t  t ƒ D]I \ }  } x: | D]2 } t t | ƒ |  d d | |  t | ƒ f ƒq  Wq Wx' t D] } d } t t | t | ƒ qa Wx' t D] } d } t t | t | ƒ q‹ Wy d d l m	 } Wn t
 k
 rá t d ƒ ‚ n X| d d	 d	 d d	 g ƒ } d
 } t t | t | ƒ d  S(   NRG   s'   type_of_target(%r) should be %r, got %rs6   Expected array-like \(array or non-string sequence\).*sœ   You appear to be using a legacy multi-label data representation. Sequence of sequences are no longer supported; use a binary array or sparse matrix instead.iÿÿÿÿ(   t   SparseSeriess   Pandas not foundi   i    s!   y cannot be class 'SparseSeries'.(   R   R7   R   R   R8   R   R1   t   MULTILABEL_SEQUENCESt   pandasRZ   t   ImportErrorR   (   RN   RO   R;   t	   msg_regexRG   RZ   R:   (    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   test_type_of_target  s$    c          C   ss  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 d d d d g g ƒ }  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  j d d d d d	 g ƒ } t j | | | f d
 d ƒ} t |  ƒ \ } } } t | ƒ \ } }	 }
 d d d g d d d g d g d g g } d d d d g } d d d g d d d g d g d g g } x™ t |  j d ƒ D]„ } t | | | | ƒ t | | | | ƒ t | | | | ƒ t | | | | ƒ t |	 | | | ƒ t |
 | | | ƒ qÍWt |  d d d d d d g ƒ \ } } } t |  d d d d d d g ƒ \ } }	 }
 d d d g d d d g d g d g g } x™ t |  j d ƒ D]„ } t | | | | ƒ t | | | | ƒ t | | | | ƒ t | | | | ƒ t |	 | | | ƒ t |
 | | | ƒ qçWd  S(   Ni   i    i   i   i   i   i   i   i   RL   g      ð?g       @i	   (   i   i   g      à?gUUUUUUÕ?gUUUUUUÅ?gUUUUUUÕ?gUUUUUUÕ?gUUUUUUÕ?gÇqÇqÜ?gUUUUUUÕ?gÇqÇqÌ?gÇqÇqÌ?gÇqÇqÜ?gUUUUUUÕ?(   R2   R4   t   spR   R   t   rangeRL   R   (   R:   R   t   indicest   indptrt   y_spt   classest	   n_classest   class_priort
   classes_spt   n_classes_spt   class_prior_spt   classes_expectedt   n_classes_expectedt   class_prior_expectedt   k(    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   test_class_distribution4  sR    BB**c          C   sH  t  ƒ  }  t  d d ƒ } t j ƒ  } | j | j } } t j | | j ƒ } t d d d d ƒ } t	 | j
 | ƒ ƒ d \ } } t |  | | | ƒ \ }	 }
 t | | | | ƒ \ } } t | t j |	 |	 j ƒ ƒ t |
 | ƒ t |  | | | | ƒ \ } } t | | | | | ƒ \ } } t | t j | |	 j ƒ ƒ t | | ƒ d  S(   Nt   kernelt   precomputedt	   test_sizeg      Ð?t   random_statei    (   R   R   t	   load_irisR   t   targetR2   t   dott   TR   t   listt   splitR   R   (   t   clft   clfpt   irist   XR:   t   Kt   cvt   traint   testt   X_traint   y_traint   K_traint   y_train2t   X_testt   y_testt   K_testt   y_test2(    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt'   test_safe_split_with_precomputed_kernell  s    	(   i
   i
   (    (    (   i    i   (C   t
   __future__R    t   numpyR2   t   scipy.sparset   sparseR`   t	   itertoolsR   t   sklearn.externals.six.movesR   t   sklearn.externals.sixR   R   R   R   R   R   R	   t   sklearn.utils.testingR
   R   R   R   R   R   R   R   t   sklearn.utils.multiclassR   R   R   R   R   t   sklearn.utils.metaestimatorsR   t   sklearn.model_selectionR   t   sklearn.svmR   t   sklearnR   R0   R   t   randomt   RandomStatet   randintR4   t   boolt   int8t   uint8t   floatt   float32t   sett	   frozensetR7   R$   R8   R[   R6   R=   RC   RW   RY   R_   Ro   RŠ   (    (    (    sB   lib/python2.7/site-packages/sklearn/utils/tests/test_multiclass.pyt   <module>   sî   $$-----$+!"*3333$%		*33333						('3$$$@	*	 			(			8