ó
‡ˆ\c           @   sÓ  d  d l  m Z d  d l 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 m Z d  d l m Z d  d l m Z d  d l  m! Z! d  d l  m" Z" d  d l  m# Z# d  d l  m$ Z$ d  d l  m% Z% d  d l& m' Z' m( Z( d  d l) m* Z* d  d l+ m, Z, m- Z- d  d l+ m. Z. d  d l+ m/ Z/ d  d l0 m1 Z1 d  d l m2 Z2 d  d l3 m4 Z4 d  „  Z5 e j6 j7 d! ƒ d" „  ƒ Z8 d# „  Z9 d$ „  Z: d% „  Z; e j6 j7 d! ƒ d& „  ƒ Z< d' „  Z= e j> ƒ  Z? e? j@ ZA e? jB ZC e4 eC d( d) ƒZD e4 eC d( d* ƒZE e jF eC eD eE f ƒ ZG eA jH \ ZI ZJ eG jH d) ZK eL e jM eC ƒ ƒ ZN eO eP e jM eC eD eE f ƒ ƒ ZQ d+ „  ZR e j6 j7 d! ƒ d, „  ƒ ZS e j6 j7 d! ƒ d- „  ƒ ZT d. „  ZU d/ „  ZV d0 „  ZW d1 „  ZX e j6 j7 d! ƒ d2 „  ƒ ZY d3 „  ZZ d4 „  Z[ d5 „  Z\ e j6 j7 d6 ƒ e j6 j7 d7 ƒ d8 „  ƒ ƒ Z] e j6 j7 d6 ƒ e j6 j7 d7 ƒ d9 „  ƒ ƒ Z^ e j6 j7 d6 ƒ e j6 j7 d7 ƒ d: „  ƒ ƒ Z_ e j6 j7 d6 ƒ e j6 j7 d7 ƒ d; „  ƒ ƒ Z` e j6 j7 d6 ƒ e j6 j7 d7 ƒ d< „  ƒ ƒ Za e j6 j7 d6 ƒ e j6 j7 d7 ƒ d= „  ƒ ƒ Zb d S(>   iÿÿÿÿ(   t   divisionN(   t   assert_almost_equal(   t   assert_raises(   t   assert_false(   t   assert_raises_regex(   t   assert_raise_message(   t   assert_array_equal(   t   assert_equal(   t   assert_greater(   t   assert_not_equal(   t   assert_array_almost_equal(   t   datasets(   t   clone(   t   make_classification(   t   GradientBoostingRegressort   RandomForestClassifier(   t   NotFittedError(   t	   cpu_count(   t   Lasso(   t   LogisticRegression(   t   Ridge(   t   SGDClassifier(   t   SGDRegressor(   t   jaccard_similarity_scoret   mean_squared_error(   t   OneVsRestClassifier(   t   ClassifierChaint   RegressorChain(   t   MultiOutputClassifier(   t   MultiOutputRegressor(   t	   LinearSVC(   t   ClassifierMixin(   t   shufflec    
      C   sû   t  j d d ƒ \ }  } |  d  | d  } } |  d | d } } t j | ƒ } xb t d ƒ D]T } t d d ƒ } | j | | d  d  … | f ƒ | j | ƒ | d  d  … | f <q^ Wt t d d ƒ ƒ } | j | | ƒ | j | ƒ }	 t	 | |	 ƒ d  S(   Nt	   n_targetsi   i2   t   random_statei    (
   R   t   make_regressiont   npt
   zeros_liket   rangeR   t   fitt   predictR   R   (
   t   Xt   yt   X_traint   y_traint   X_testt   y_testt
   referencest   nt   rgrt   y_pred(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt   test_multi_target_regression&   s     #s,   ignore:max_iter and tol parameters have beenc          C   sn  t  j d d ƒ \ }  } |  d  | d  } } |  d | d } } t j | ƒ } d } x t d ƒ D]‚ } t d d d d ƒ }	 |	 j | |  | d  | … | f ƒ |	 j | | | | d  … | f ƒ |	 j | ƒ | d  d  … | f <qd Wt t d d d d ƒ ƒ }	 |	 j | |  | |  ƒ |	 j | | | | ƒ |	 j | ƒ }
 t	 | |
 ƒ t
 t t t ƒ d	 ƒ ƒ d  S(
   NR!   i   i2   i   R"   i    t   max_iteri   t   partial_fit(   R   R#   R$   R%   R&   R   R5   R(   R   R   R   t   hasattrR   (   R)   R*   R+   R,   R-   R.   R/   t
   half_indexR0   t   sgrR2   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt(   test_multi_target_regression_partial_fit9   s     $$#c          C   sG   t  j d d ƒ \ }  } t t d d ƒ ƒ } t t | j |  | ƒ d  S(   NR!   i   R"   i    (   R   R#   R   R   R   t
   ValueErrorR'   (   R)   R*   R1   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt'   test_multi_target_regression_one_targetQ   s    c          C   sß   t  j d d ƒ \ }  } |  d  | d  } } |  d } x¡ t j t j t j t j t j g D]{ } t t	 d d ƒ ƒ } t t	 d d ƒ ƒ } | j
 | | ƒ | j
 | | ƒ | ƒ t | j | ƒ | j | | ƒ ƒ ƒ q\ Wd  S(   NR!   i   i2   R"   i    (   R   R#   t   spt
   csr_matrixt
   csc_matrixt
   coo_matrixt
   dok_matrixt
   lil_matrixR   R   R'   R   R(   (   R)   R*   R+   R,   R-   t   sparseR1   t
   rgr_sparse(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt#   test_multi_target_sparse_regressionX   s    
c          C   s™   d d d g d d d g g }  d d g d d g g } d	 d
 g } t  t ƒ  ƒ } t t d | j |  | | ƒ t  t d d ƒ ƒ } | j |  | | ƒ d  S(   Ni   i   i   i   i   i   gTã¥›Ä 	@gX9´Èv¾@gš™™™™™é?g333333ã?s   does not support sample weightsR"   i    (   R   R   R   R:   R'   R   (   R)   R*   t   wR1   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt$   test_multi_target_sample_weights_apii   s    	c          C   sÝ   d d d g d d d g g }  d d g d d g g } d	 d
 g } t  t d d d d ƒ ƒ } | j |  | | ƒ d	 d	 g } t  t d d d d ƒ ƒ } | j |  | | ƒ t | j |  ƒ d d | j |  ƒ d d ƒ d  S(   Ni   i   i   i   i   i   gTã¥›Ä 	@gX9´Èv¾@g       @g      ð?R"   i    R4   (   R   R   R5   R	   R(   (   R)   R*   RE   t   rgr_wR1   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt+   test_multi_target_sample_weight_partial_fitx   s    c          C   s  d d d g d d d g g }  d d g d d g g } d	 d
 g } t  t d d ƒ ƒ } | j |  | | ƒ d d d g d d d g d d d g g } d d g d d g d d g g } t  t d d ƒ ƒ } | j | | ƒ d d d g d d d g g } t | j | ƒ | j | ƒ ƒ d  S(   Ni   i   i   i   i   i   gTã¥›Ä 	@gX9´Èv¾@g       @g      ð?R"   i    g      ø?g      @g      @g      @g      @(   R   R   R'   R   R(   (   t   Xwt   ywRE   RG   R)   R*   R1   R-   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt    test_multi_target_sample_weights‰   s    *!R"   i   i   c          C   s   t  d d d d d d ƒ }  t |  d d ƒ} | j t t t ƒ | j d	 } | j t t ƒ | j d	 } t ƒ  d k rŒ t | | k ƒ n  d  S(
   Nt   losst   logR"   i   R4   i   t   n_jobsiÿÿÿÿi    (	   R   R   R5   R)   R*   t   classest   estimators_R   R   (   t   sgd_linear_clft   mort   est1t   est2(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt8   test_multi_output_classification_partial_fit_parallelism©   s    c          C   s}  t  d d d d d d ƒ }  t |  ƒ } t j d d } | j t |  t |  d	 t ƒ| j t ƒ } t t	 t
 f | j ƒ | j t | t | ƒ | j t ƒ } t t	 t
 f | j ƒ x¾ t d
 ƒ D]° } t |  ƒ }  |  j t |  t d  | … | f d	 t | ƒt |  j t ƒ | d  d  … | f ƒ |  j t | t | d  … | f ƒ t |  j t ƒ | d  d  … | f ƒ qÅ Wd  S(   NRL   RM   R"   i   R4   i   i    i   RO   i   (   R   R   R)   t   shapeR5   R*   RO   R(   R   t	   n_samplest	   n_outputsR&   R   R   (   RQ   t   multi_target_linearR7   t   first_predictionst   second_predictionst   i(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt,   test_multi_output_classification_partial_fit¶   s"    (&$c          C   sD   t  d d d d d d ƒ }  t |  ƒ } t t d | j t t ƒ d  S(   NRL   RM   R"   i   R4   i   s8   classes must be passed on the first call to partial_fit.(   R   R   R   R:   R5   R)   R*   (   RQ   RY   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pytG   test_multi_output_classification_partial_fit_no_first_classes_exception×   s    	c          C   sh  t  d d d d ƒ }  t |  ƒ } | j t t ƒ | j t ƒ } t t t f | j	 ƒ | j
 t ƒ } t | ƒ t k s} t ‚ x$ | D] } t t t f | j	 ƒ q„ Wt t j t j | ƒ d d ƒ| ƒ x˜ t d ƒ D]Š } t |  ƒ } | j t t d  d  … | f ƒ t t | j t ƒ ƒ t | d  d  … | f ƒ ƒ t t | j
 t ƒ ƒ t | | ƒ ƒ qÖ Wd  S(   Nt   n_estimatorsi
   R"   i   t   axisi   (   R   R   R'   R)   R*   R(   R   RW   RX   RV   t   predict_probat   lent   AssertionErrort	   n_classesR   R$   t   argmaxt   dstackR&   R   t   list(   t   forestt   multi_target_forestt   predictionsRa   t   class_probabilitiesR\   t   forest_(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt    test_multi_output_classificationà   s"     2c          C   sÕ   t  d d ƒ }  t |  ƒ } t | ƒ } | j t t ƒ | j t ƒ } t t t	 f | j
 ƒ xr t d ƒ D]d } t | ƒ } | j t t d  d  … | f ƒ t t | j t ƒ ƒ t | d  d  … | f ƒ ƒ qi Wd  S(   NR"   i    i   (   R   R   R   R'   R)   R*   R(   R   RW   RX   RV   R&   R   Rg   (   t   svct   multi_class_svct   multi_target_svcRj   R\   t   multi_class_svc_(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt%   test_multiclass_multioutput_estimatorÿ   s     c    
   	   C   s–  d }  t  j j |  ƒ } | j d d) ƒ } t  j d d d d d g ƒ j d d ƒ } t  j d d d	 d d g ƒ j d d ƒ } t  j | | g d
 d ƒ} t t d d d d d |  ƒ ƒ } | j	 | | ƒ | j
 | ƒ } t  j d d g d d g d d g d d g d d g g ƒ t  j d d d g d d d g d  d! d" g d# d$ d% g d& d' d( g g ƒ g } x/ t t | ƒ ƒ D] }	 t | |	 | |	 ƒ qsWd  S(*   Ni  t   sizei   t   bt   ai   t   dt   et   fR`   t   multi_classt   ovrt   solvert	   liblinearR"   gšu)"Î?g™¢u·_|è?gt“Ä³€å?gÑÙv˜þÔ?g/‰’á?g¢íÚÖý Ý?gK[ÇaSÖ?g[ÒrOÖä?gaÊ]×q”ç?g?kDQ×Ð?g 8öì¹Œà?g°ªŒÎ?gèo|Ì‹<Ï?g¨©§‡OWÌ?g˜Ú”#Kƒä?gÚz~ÿƒ›Á?gP1s&qÅ?g„çþf^Ç?g„]=¼!Ìä?gâ{Y;‚Ñ?gë®hJªá?gL$$SÆ?g»XA¡Ø	å?gó 7%®Ð?g™˜‘î¥ø´?(   i   i   (   R$   t   randomt   RandomStatet   normalt   arrayt   reshapet   concatenateR   R   R'   Ra   R&   Rb   R   (
   t   seedt   rngR)   t   y1t   y2t   Yt   clft   y_resultt   y_actualR\   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt3   test_multiclass_multioutput_estimator_predict_proba  s,    **				c    	      C   s<  d d d g d d d g g }  d d g d d g g } t  j d d g ƒ } t d	 d
 d d ƒ } t | ƒ } | j |  | | ƒ d d d g d d d g d d d g g } d d g d d g d d g g } t d	 d
 d d ƒ } t | ƒ } | j | | ƒ d d d g d d d g g } t | j | ƒ | j | ƒ ƒ d  S(   Ni   i   i   i   i   i   g       @g      ð?R_   i
   R"   g      ø?g      @g      @g      @g      @(   R$   t   asarrayR   R   R'   R   R(   (	   RI   RJ   RE   Rh   t   clf_wR)   R*   Rˆ   R-   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt/   test_multi_output_classification_sample_weights6  s    *!c    	      C   s]  d d d g d d d g d d d	 g g }  d d g d d g d d g g } t  j d
 d d g ƒ } t d d d d ƒ } t | ƒ } | j |  | | ƒ d d d g d d d g d d d g d d d	 g g } d d g d d g d d g d d g g } t d d d d ƒ } t | ƒ } | j | | ƒ d d d	 g g } t | j | ƒ | j | ƒ ƒ d  S(   Ni   i   i   i   i   i   g      ø?g      @g      @g       @g      ð?R"   R4   (   R$   RŒ   R   R   R'   R
   R(   (	   RI   RJ   RE   RQ   R   R)   R*   Rˆ   R-   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt;   test_multi_output_classification_partial_fit_sample_weightsK  s    *!6*c          C   s¹   t  t d d ƒ ƒ }  t t |  j t ƒ t t |  j t ƒ t t |  j t t ƒ t	 j
 t t f ƒ } |  j t t ƒ t t |  j t | ƒ t t d |  j t t d  d  … d f ƒ d  S(   NR"   i    s   Unknown label typei   (   R   R   R   R   R(   R*   Ra   t   scoreR)   R$   t   column_stackR…   R†   R'   R:   R   (   t   moct   y_new(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt   test_multi_output_exceptions_  s    c          C   s   t  d d d d d d d d d	 d
 ƒ \ }  } t j g  | D]2 } g  t | d ƒ d D] } t | ƒ ^ qT ^ q: ƒ } |  | f S(   NRW   iè  t
   n_featuresid   Rd   i   t   n_informativei
   R"   i    s   #06bi   (   R   R$   R€   t   formatt   int(   R)   R*   t   yyt   yyyt   Y_multi(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt-   generate_multilabel_dataset_with_correlationso  s    	?c          C   s’   t  ƒ  \ }  } t t ƒ  ƒ } | j |  | ƒ | j |  ƒ } t | j | j ƒ | j |  ƒ } | d k } t | | ƒ t	 | d ƒ sŽ t
 ‚ d  S(   Ni    Ra   (   Rœ   R   R   R'   R(   R   RV   t   decision_functionR   R6   Rc   (   R)   R‡   t   classifier_chaint   Y_predt
   Y_decisiont   Y_binary(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt5   test_classifier_chain_fit_and_predict_with_linear_svc~  s    s&   ignore: Default solver will be changeds    ignore: Default multi_class willc          C   s‹   t  ƒ  \ }  } t j |  ƒ } t t ƒ  ƒ } | j | | ƒ | j | ƒ } t t ƒ  ƒ } | j |  | ƒ | j |  ƒ } t | | ƒ d  S(   N(   Rœ   R<   R=   R   R   R'   R(   R   (   R)   R‡   t   X_sparseRž   t   Y_pred_sparset   Y_pred_dense(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt6   test_classifier_chain_fit_and_predict_with_sparse_dataŽ  s    c    
      C   sþ   t  ƒ  \ }  } |  d  d … d  d  … f } |  d d  … d  d  … f } | d  d … d  d  … f } | d d  … d  d  … f } t t ƒ  ƒ } | j | | ƒ | j | ƒ } t t ƒ  ƒ } | j | | ƒ | j | ƒ }	 t t | |	 ƒ t | | ƒ ƒ d  S(   NiX  (   Rœ   R   R   R'   R(   R   R   R   (
   R)   R‡   R+   R-   t   Y_traint   Y_testRz   t
   Y_pred_ovrt   chaint   Y_pred_chain(    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt+   test_classifier_chain_vs_independent_models   s    c       	   C   s
  t  ƒ  \ }  } t t ƒ  ƒ t t ƒ  ƒ g } x‘ | D]‰ } | j |  | ƒ | j |  ƒ } t | j | j ƒ t g  | j	 D] } | j
 j ^ qy t t |  j d |  j d | j d ƒ ƒ ƒ q4 W| d j |  ƒ } | d k } t | | ƒ t | d t ƒ st ‚ d  S(   Ni   g      à?(   Rœ   R   R   R   R   R'   R(   R   RV   RP   t   coef_Rs   Rg   R&   Ra   R   t
   isinstanceR   Rc   (   R)   R‡   t   chainsRª   RŸ   t   ct   Y_probR¡   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt   test_base_chain_fit_and_predict¸  s    "3c          C   s   t  ƒ  \ }  } t j |  ƒ } t t ƒ  d d ƒt t ƒ  d d ƒg } x@ | D]8 } | j | | ƒ | j | ƒ } t	 | j
 | j
 ƒ qO Wd  S(   Nt   cvi   (   Rœ   R<   R=   R   R   R   R   R'   R(   R   RV   (   R)   R‡   R£   t   base_chainsRª   RŸ   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt7   test_base_chain_fit_and_predict_with_sparse_data_and_cvÍ  s    c          C   s5  t  ƒ  \ }  } xt t ƒ  ƒ t t ƒ  ƒ g D]ÿ } t | ƒ j d d d d ƒ } | j |  | ƒ t | ƒ j d | j ƒ } | j |  | ƒ t	 | j | j ƒ t
 t | j ƒ t t d ƒ ƒ ƒ t t | j ƒ d ƒ t t t | j ƒ ƒ d ƒ x6 t | j | j ƒ D] \ } } t | j | j ƒ q
Wq. Wd  S(   Nt   orderR}   R"   i*   i   (   Rœ   R   R   R   R   R   t
   set_paramsR'   t   order_R   R	   Rg   R¶   R&   R   Rb   t   sett   zipRP   R
   R­   (   R)   R‡   Rª   t   chain_randomt   chain_fixedRS   RT   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt   test_base_chain_random_orderÛ  s    "c          C   s  t  ƒ  \ }  } xø t t ƒ  ƒ t t ƒ  ƒ g D]Ø } | j |  | ƒ t | ƒ j d d ƒ } | j |  | ƒ | j |  ƒ } | j |  ƒ } | j	 | j	 k s¢ t
 ‚ t j | | k ƒ s¾ t
 ‚ t | t ƒ rë t | | ƒ d k st
 ‚ q. t | | ƒ d k  s. t
 ‚ q. Wd  S(   NR³   i   gš™™™™™Ù?g      Ð?(   Rœ   R   R   R   R   R'   R   R·   R(   RV   Rc   R$   t   allR®   R   R   (   R)   R‡   Rª   t   chain_cvt	   Y_pred_cvRŸ   (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt(   test_base_chain_crossval_fit_and_predictñ  s    (c   t
   __future__R    t   pytestt   numpyR$   t   scipy.sparseRB   R<   t   sklearn.utils.testingR   R   R   R   R   R   R   R   R	   R
   t   sklearnR   t   sklearn.baseR   t   sklearn.datasetsR   t   sklearn.ensembleR   R   t   sklearn.exceptionsR   t   sklearn.utils._joblibR   t   sklearn.linear_modelR   R   R   R   R   t   sklearn.metricsR   R   t   sklearn.multiclassR   t   sklearn.multioutputR   R   R   R   t   sklearn.svmR   R   t   sklearn.utilsR    R3   t   markt   filterwarningsR9   R;   RD   RF   RH   RK   t	   load_irist   irist   dataR)   t   targetR…   R†   t   y3R‘   R*   RV   RW   R•   RX   Rb   t   uniqueRd   Rg   t   mapRO   RU   R]   R^   Rm   Rr   R‹   RŽ   R   R”   Rœ   R¢   R¦   R¬   R²   Rµ   R½   RÁ   (    (    (    s=   lib/python2.7/site-packages/sklearn/tests/test_multioutput.pyt   <module>   s   							!	!				$				