ó
‡ˆ\c           @   sn  d  Z  d d l Z d d l 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
 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 m  Z  d d l! m" Z" d d l# m$ Z$ e j% j& d ƒ Z' d d g d d g d d g d d g d d g d d g g Z( d d d d d d g Z) d d d d d d g Z* d d g d d g d d g g Z+ d d d g Z, d d d g Z- e$ j. ƒ  Z/ e' j0 e/ j1 j2 ƒ Z3 e" e/ j4 e/ j1 d e' ƒ\ e/ _4 e/ _1 e$ j5 ƒ  Z6 e" e6 j4 e6 j1 d e' ƒ\ e6 _4 e6 _1 d „  Z7 d „  Z8 d „  Z9 d  „  Z: d! „  Z; d" „  Z< d# „  Z= e j> j? d$ ƒ e j> j? d% ƒ d& „  ƒ ƒ Z@ d' „  ZA d( „  ZB d) „  ZC e j> j? d* ƒ d+ „  ƒ ZD d, „  ZE d- „  ZF d. „  ZG d/ „  ZH d S(0   s6   Testing for the boost module (sklearn.ensemble.boost).iÿÿÿÿN(   t   assert_array_equalt   assert_array_less(   t   assert_array_almost_equal(   t   assert_equalt   assert_greater(   t   assert_raisest   assert_raises_regexp(   t   BaseEstimator(   t   train_test_split(   t   GridSearchCV(   t   AdaBoostClassifier(   t   AdaBoostRegressor(   t   weight_boosting(   t
   csc_matrix(   t
   csr_matrix(   t
   coo_matrix(   t
   dok_matrix(   t
   lil_matrix(   t   SVCt   SVR(   t   DecisionTreeClassifiert   DecisionTreeRegressor(   t   shuffle(   t   datasetsi    iþÿÿÿi   i   t   fooi   t   random_statec             s6  t  j d d d g d d d g d d d	 g d d d
 g g ƒ ‰  ˆ  t  j ˆ  j d d ƒ ƒ d  d  … t  j f :‰  d t f ‡  f d †  ƒ  Y}  |  ƒ  } t j | d t  j ˆ  ƒ ƒ } t	 | j
 ˆ  j
 ƒ t  j | ƒ j ƒ  sâ t ‚ t	 t  j | d d ƒd d d d g ƒ t	 t  j | d d ƒd d d d g ƒ d  S(   Ni   gíµ ÷Æ°>i    gR¸…ëQÈ?g333333ã?gš™™™™™É?iüÿÿgR¸…ëQà?g      à?g•Ö&è.>t   axist   MockEstimatorc              s   e  Z ‡  f d  †  Z RS(   c            s   t  | j ˆ  j ƒ ˆ  S(   N(   R    t   shape(   t   selft   X(   t   probs(    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   predict_proba?   s    (   t   __name__t
   __module__R    (    (   R   (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyR   >   s   i   i   (   t   npt   arrayt   abst   sumt   newaxist   objectR   t   _samme_probat	   ones_likeR    R   t   isfinitet   allt   AssertionErrort   argmint   argmax(   R   t   mockt   samme_proba(    (   R   sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_samme_proba2   s    2	(c          C   sY   t  j t t ƒ ƒ }  t ƒ  j t |  ƒ } t | j t ƒ t  j t t ƒ d f ƒ ƒ d  S(   Ni   (   R#   t   onest   lenR   R
   t   fitR   R    (   t   y_tt   clf(    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_oneclass_adaboost_probaO   s    c          C   s¿   x¸ d d g D]ª }  t  d |  d d ƒ } | j t t ƒ t | j t ƒ t ƒ t t j	 t j
 t ƒ ƒ | j ƒ t | j t ƒ j t t ƒ d f ƒ t | j t ƒ j t t ƒ f ƒ q Wd  S(   Nt   SAMMEs   SAMME.Rt	   algorithmR   i    i   (   R
   R5   R   t   y_classR    t   predictt   Tt	   y_t_classR#   t   uniquet   asarrayt   classes_R   R    R   R4   t   decision_function(   t   algR7   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_classification_toyX   s    "%c          C   s9   t  d d ƒ }  |  j t t ƒ t |  j t ƒ t ƒ d  S(   NR   i    (   R   R5   R   t   y_regrR    R<   R=   t   y_t_regr(   R7   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_regression_toyc   s    c          C   s‡  t  j t j ƒ }  d  } } x5d d g D]'} t d | ƒ } | j t j t j ƒ t |  | j	 ƒ | j
 t j ƒ } | d k r‘ | } | } n  t | j d t |  ƒ ƒ t | j t j ƒ j d t |  ƒ ƒ | j t j t j ƒ } | d k st d | | f ƒ ‚ t t | j ƒ d ƒ t t t d „  | j Dƒ ƒ ƒ t | j ƒ ƒ q) Wd | _ t d t  j | j
 t j ƒ | ƒ ƒ d  S(	   NR9   s   SAMME.RR:   i   gÍÌÌÌÌÌì?s'   Failed with algorithm %s and score = %fc         s   s   |  ] } | j  Vq d  S(   N(   R   (   t   .0t   est(    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pys	   <genexpr>‚   s    i    (   R#   R?   t   irist   targett   NoneR
   R5   t   dataR    RA   R    R   R   R4   RB   t   scoreR-   R   t   estimators_t   setR:   R   R%   (   t   classest	   clf_sammet
   prob_sammeRC   R7   t   probaRN   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt	   test_irisj   s*    
	&	c          C   s   t  d d ƒ }  |  j t j t j ƒ |  j t j t j ƒ } | d k sO t ‚ t |  j ƒ d k sj t ‚ t	 t t
 d „  |  j Dƒ ƒ ƒ t |  j ƒ ƒ d  S(   NR   i    g333333ë?i   c         s   s   |  ] } | j  Vq d  S(   N(   R   (   RH   RI   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pys	   <genexpr>—   s    (   R   R5   t   bostonRM   RK   RN   R-   R4   RO   R   RP   (   t   regRN   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_boston   s    c          C   s¼  t  j j d ƒ }  |  j d d t j j ƒ} |  j d d t j j ƒ} xnd d g D]`} t d | d d ƒ } | j	 t j
 t j d | ƒ| j t j
 ƒ } g  | j t j
 ƒ D] } | ^ q± } | j t j
 ƒ } g  | j t j
 ƒ D] } | ^ qè }	 | j t j
 t j d | ƒ}
 g  | j t j
 t j d | ƒD] } | ^ q7} t t | ƒ d ƒ t | | d	 ƒ t t |	 ƒ d ƒ t | |	 d	 ƒ t t | ƒ d ƒ t |
 | d	 ƒ qU Wt d d d
 d ƒ } | j	 t j
 t j d | ƒ| j t j
 ƒ } g  | j t j
 ƒ D] } | ^ q} | j t j
 t j d | ƒ}
 g  | j t j
 t j d | ƒD] } | ^ q^} t t | ƒ d ƒ t | | d	 ƒ t t | ƒ d ƒ t |
 | d	 ƒ d  S(   Ni    i
   t   sizeR9   s   SAMME.RR:   t   n_estimatorst   sample_weightiÿÿÿÿR   (   R#   t   randomt   RandomStatet   randintRJ   RK   R   RV   R
   R5   RM   R<   t   staged_predictR    t   staged_predict_probaRN   t   staged_scoreR   R4   R   R   (   t   rngt   iris_weightst   boston_weightsRC   R7   t   predictionst   pt   staged_predictionsRT   t   staged_probasRN   t   st   staged_scores(    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_staged_predict›   s<    %%	(%	(s    ignore: The default of the `iid`s"   ignore: You should specify a valuec          C   s§   t  d t ƒ  ƒ }  i d d 6d d 6d d 6} t |  | ƒ } | j t j t j ƒ t d t ƒ  d	 d
 ƒ }  i d d 6d d 6} t |  | ƒ } | j t	 j t	 j ƒ d  S(   Nt   base_estimatori   i   RZ   t   base_estimator__max_depthR9   s   SAMME.RR:   R   i    (   i   i   (   i   i   (   R9   s   SAMME.R(   i   i   (   i   i   (
   R
   R   R	   R5   RJ   RM   RK   R   R   RV   (   t   boostt
   parametersR7   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_gridsearchÇ   s    

	

c          C   sS  d d  l  }  xª d d g D]œ } t d | ƒ } | j t j t j ƒ | j t j t j ƒ } |  j | ƒ } |  j | ƒ } t	 t
 | ƒ | j ƒ | j t j t j ƒ } t	 | | ƒ q Wt d d ƒ } | j t j t j ƒ | j t j t j ƒ } |  j | ƒ } |  j | ƒ } t	 t
 | ƒ | j ƒ | j t j t j ƒ } t	 | | ƒ d  S(   NiÿÿÿÿR9   s   SAMME.RR:   R   i    (   t   pickleR
   R5   RJ   RM   RK   RN   t   dumpst   loadsR   t   typet	   __class__R   RV   (   Rq   RC   t   objRN   Ri   t   obj2t   score2(    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_pickleÜ   s$    c          C   sÃ   t  j d d d d d d d d d	 d d
 t d d ƒ \ }  } x€ d d g D]r } t d | ƒ } | j |  | ƒ | j } t | j d d ƒ t | d  d … t j	 f | d k j
 ƒ  t ƒ qI Wd  S(   Nt	   n_samplesiÐ  t
   n_featuresi
   t   n_informativei   t   n_redundanti    t
   n_repeatedR   R   i   R9   s   SAMME.RR:   (   R   t   make_classificationt   FalseR
   R5   t   feature_importances_R   R   R#   R'   R,   t   True(   R   t   yRC   R7   t   importances(    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_importancesø   s    	)c           C   sm   t  t t d d ƒ j t t ƒ t  t t d d ƒ j t t ƒ t  t t ƒ  j t t d t j d g ƒ ƒd  S(   Nt   learning_rateiÿÿÿÿR:   R   R[   (   R   t
   ValueErrorR
   R5   R   R;   R#   R@   (    (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt
   test_error  s    

	s(   ignore:The default value of n_estimatorsc          C   s.  d d l  m }  t |  ƒ  ƒ } | j t t ƒ t t d d ƒ d d ƒ} | j t t ƒ d d l  m } t	 | ƒ  d d	 ƒ} | j t t ƒ t	 t
 d d ƒ d d	 ƒ} | j t t ƒ d
 d
 g d
 d
 g d
 d
 g d
 d
 g g } d d d
 d g } t t d d ƒ d d ƒ} t t d | j | | ƒ d  S(   Niÿÿÿÿ(   t   RandomForestClassifiert   gammat   scaleR:   R9   (   t   RandomForestRegressorR   i    i   R   t   bari   s   worse than random(   t   sklearn.ensembleR‰   R
   R5   R   RE   R   R;   RŒ   R   R   R   R‡   (   R‰   R7   RŒ   t   X_failt   y_fail(    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_base_estimator  s    *	c          C   sd   d d l  m }  t |  ƒ  d d ƒ} t t | j t t ƒ t |  ƒ  ƒ } t t | j t t ƒ d  S(   Niÿÿÿÿ(   t   KMeansR:   R9   (	   t   sklearn.clusterR’   R
   R   R‡   R5   R   RE   R   (   R’   R7   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_sample_weight_missing9  s
    c       	      sƒ  d t  f ‡  f d †  ƒ  Y‰  t j d d d d d d d	 d
 ƒ \ }  } t j | ƒ } t |  | d	 d ƒ\ } } } } xt t t t	 t
 g D]ï} | | ƒ } | | ƒ } t d ˆ  d d d t ƒ d	 d d d ƒ j | | ƒ }	 t d ˆ  d d d t ƒ d	 d d d ƒ j | | ƒ }
 |	 j | ƒ } |
 j | ƒ } t | | ƒ |	 j | ƒ } |
 j | ƒ } t | | ƒ |	 j | ƒ } |
 j | ƒ } t | | ƒ |	 j | ƒ } |
 j | ƒ } t | | ƒ |	 j | | ƒ } |
 j | | ƒ } t | | ƒ |	 j | ƒ } |
 j | ƒ } x* t | | ƒ D] \ } } t | | ƒ q!W|	 j | ƒ } |
 j | ƒ } x* t | | ƒ D] \ } } t | | ƒ qlW|	 j | ƒ } |
 j | ƒ } x* t | | ƒ D] \ } } t | | ƒ q·W|	 j | | ƒ } |
 j | | ƒ } x* t | | ƒ D] \ } } t | | ƒ qWg  |	 j D] } | j ^ q/} t g  | D] } | t k pi| t k ^ qNƒ sŒ t ‚ qŒ Wd  S(   Nt	   CustomSVCc              s    e  Z d  Z d ‡  f d † Z RS(   s8   SVC variant that records the nature of the training set.c            s2   t  ˆ  |  ƒ j | | d | ƒt | ƒ |  _ |  S(   s<   Modification on fit caries data type for later verification.R[   (   t   superR5   Rt   t
   data_type_(   R   R   Rƒ   R[   (   R•   (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyR5   I  s    N(   R!   R"   t   __doc__RL   R5   (    (   R•   (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyR•   F  s   t	   n_classesi   Rz   i   R{   i   R   i*   i    Rl   RŠ   R‹   t   probabilityR:   R9   (   R   R   t   make_multilabel_classificationR#   t   ravelR   R   R   R   R   R   R
   R‚   R5   R<   R    RB   R   t   predict_log_probaR    RN   t   staged_decision_functiont   zipR_   R`   Ra   RO   R—   R,   R-   (   R   Rƒ   t   X_traint   X_testt   y_traint   y_testt   sparse_formatt   X_train_sparset   X_test_sparset   sparse_classifiert   dense_classifiert   sparse_resultst   dense_resultst
   sprase_rest	   dense_rest   it   typest   t(    (   R•   sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_sparse_classificationC  sp    	!					c       	      sÇ  d t  f ‡  f d †  ƒ  Y‰  t j d d d d d d d	 d
 ƒ \ }  } t |  | d	 d ƒ\ } } } } xYt t t t t g D]B} | | ƒ } | | ƒ } t	 d ˆ  d d ƒ d	 d ƒ j
 | | ƒ }	 t	 d ˆ  d d ƒ d	 d ƒ j
 | | ƒ }
 } |	 j | ƒ } |
 j | ƒ } t | | ƒ |	 j | ƒ } |
 j | ƒ } x* t | | ƒ D] \ } } t | | ƒ qLWg  |	 j D] } | j ^ qs} t g  | D] } | t k p­| t k ^ q’ƒ s} t ‚ q} Wd  S(   Nt	   CustomSVRc              s    e  Z d  Z d ‡  f d † Z RS(   s8   SVR variant that records the nature of the training set.c            s2   t  ˆ  |  ƒ j | | d | ƒt | ƒ |  _ |  S(   s<   Modification on fit caries data type for later verification.R[   (   R–   R5   Rt   R—   (   R   R   Rƒ   R[   (   R±   (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyR5   ª  s    N(   R!   R"   R˜   RL   R5   (    (   R±   (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyR±   §  s   Rz   i   R{   i2   t	   n_targetsi   R   i*   i    Rl   RŠ   R‹   (   R   R   t   make_regressionR   R   R   R   R   R   R   R5   R<   R   R_   RŸ   RO   R—   R,   R-   (   R   Rƒ   R    R¡   R¢   R£   R¤   R¥   R¦   R§   R¨   Rª   R©   R«   R¬   R­   R®   R¯   (    (   R±   sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   test_sparse_regression¤  s4    	!		c          C   s^   d t  f d „  ƒ  Y}  t |  ƒ  d d ƒ} | j t t ƒ t t | j ƒ t | j ƒ ƒ d S(   s¸   
    AdaBoostRegressor should work without sample_weights in the base estimator

    The random weighted sampling is done internally in the _boost method in
    AdaBoostRegressor.
    t   DummyEstimatorc           B   s   e  Z d  „  Z d „  Z RS(   c         S   s   d  S(   N(    (   R   R   Rƒ   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyR5   à  s    c         S   s   t  j | j d ƒ S(   Ni    (   R#   t   zerosR   (   R   R   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyR<   ã  s    (   R!   R"   R5   R<   (    (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyRµ   Þ  s   	RZ   i   N(	   R   R   R5   R   RE   R   R4   t   estimator_weights_t   estimator_errors_(   Rµ   Rn   (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt%   test_sample_weight_adaboost_regressor×  s    (I   R˜   t   pytestt   numpyR#   t   sklearn.utils.testingR    R   R   R   R   R   R   t   sklearn.baseR   t   sklearn.model_selectionR   R	   RŽ   R
   R   R   t   scipy.sparseR   R   R   R   R   t   sklearn.svmR   R   t   sklearn.treeR   R   t   sklearn.utilsR   t   sklearnR   R\   R]   Rb   R   R;   RE   R=   R>   RF   t	   load_irisRJ   t   permutationRK   RY   t   permRM   t   load_bostonRV   R2   R8   RD   RG   RU   RX   Rk   t   markt   filterwarningsRp   Ry   R…   Rˆ   R‘   R”   R°   R´   R¹   (    (    (    sJ   lib/python2.7/site-packages/sklearn/ensemble/tests/test_weight_boosting.pyt   <module>   sf   <!'						#		,				
	a	3