ó
‡ˆ\c        %   @   sk  d  Z  d d l Z d d l Z d d l m Z d d l m Z d d l Z 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# 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" l0 m1 Z1 d d# l2 m3 Z3 d d$ l2 m4 Z4 d d% l. m5 Z5 d d& l6 m7 Z7 d¿ Z8 dÀ Z9 i e* d, 6e e* d- e: ƒd. 6e, d/ 6Z; i e+ d0 6e e+ d- e: ƒd1 6e- d2 6Z< e= ƒ  Z> e> j? e; ƒ e> j? e< ƒ d, d0 d/ d2 g Z@ e
 jA d3 d3 d4 d3 d3 d3 d5 d6 d3 d7 d3 d3 d3 d3 g d3 d3 d8 d9 d3 d7 d3 d3 d5 d: d; d3 d4 d5 g d d d3 d3 d< d3 d3 d= d5 d3 d3 d< d3 d5 g d d d3 d> d3 d3 d3 d3 d3 d3 d; d3 d3 d5 g d d d3 d3 d3 d3 d3 d9 d3 d3 d3 d3 d3 d5 g d d? d3 d4 d@ dA d4 d3 dB d3 d4 d9 d7 d5 g dC d3 dD dE d3 dF d3 d3 dB dG dH d3 d@ d5 g dC d3 dD dE d3 dF d3 d3 dB dG d3 d3 d? d5 g dC dI dD dE d3 dF d3 d3 dB dG d3 d3 d? d5 g dC dI dD dE d3 dF d3 d3 dB dG dH d3 d d3 g dJ dI d8 d5 dH d7 dA d3 d5 d: d9 d3 dJ d3 g dJ d3 d5 d5 d5 d d5 d3 d3 d? d9 d3 d5 d3 g dJ d3 d5 dJ d9 d dA dJ d3 d d5 dJ dJ d3 g d5 d5 d3 dJ dJ d d5 dJ d3 d: d5 dJ d9 d3 g d9 d5 d3 d9 d3 d7 dA d3 d5 d: d9 d3 d9 d5 g dC dI dD dE d3 d5 d3 d3 dB dG dH d3 d@ d5 g dC dI dD dE d3 d5 d3 d3 dB dG dK d5 d d g dC dI dD dE d3 dA d3 d3 dB dG dH d3 d d g dJ d3 d8 d5 dH d? dA d3 d5 d: d9 d5 d3 d g dJ d3 d5 d5 d5 d? d5 d3 d3 d? d3 d3 d3 d5 g dJ d5 d5 d5 dJ d dA dJ d3 d d3 dJ d5 d5 g d5 d5 d3 d3 d5 d@ d5 dJ d3 d: d5 dJ d5 d5 g d9 d5 d3 d5 d3 d7 d5 d3 d5 d? d3 d3 d5 d3 g g ƒ ZB d5 d5 d3 d3 d3 d3 d5 d5 d5 d5 d5 d5 d3 d3 d3 d5 d3 d3 d5 d3 d3 d3 d3 g ZC dL d= dM dN dA dO dP dQ dR dS dP dT dU dM dJ dF d3 d3 dV dW dX dY d3 g ZD d? d g d d g d d? g d5 d5 g d5 dJ g dJ d5 g g ZE d d d d5 d5 d5 g ZF d d g dJ dJ g d9 dJ g g ZG d d5 d5 g ZH e5 jI ƒ  ZJ e
 jK jL d5 ƒ ZM eM jN eJ jO jP ƒ ZQ eJ jR eQ eJ _R eJ jO eQ eJ _O e5 jS ƒ  ZT eM jN eT jO jP ƒ ZQ eT jR eQ eT _R eT jO eQ eT _O e5 jU ƒ  ZV eM jN eV jO jP ƒ ZQ eV jR eQ eV _R eV jO eQ eV _O e& d3 ƒ ZW e5 jX dZ d3 d[ d\ d] dA ƒ \ ZY ZZ eW j[ d^ dÁ ƒ Z\ dU e\ e\ d` k <eW j] d3 d4 d^ dÂ ƒZ^ e d_ dA da db dZ d3 ƒj_ ƒ  Z` i i eJ jR dc 6eJ jO dd 6de 6i eT jR dc 6eT jO dd 6df 6i eV jR dc 6eV jO dd 6dg 6i eE dc 6eF dd 6dh 6i eB dc 6eC dd 6di 6i eB dc 6eD dd 6dj 6i eY dc 6eZ dd 6dk 6i e\ dc 6e^ dd 6dl 6i e\ dc 6e^ dd 6dm 6i e` dc 6e^ dd 6dn 6i e
 ja dÃ ƒ dc 6e^ dd 6do 6Zb x* eb D]" Zc e eb ec dc ƒ eb ec dp <qµ
Wdq „  Zd dr „  Ze ds „  Zf dt „  Zg du „  Zh dv „  Zi dw „  Zj dx „  Zk dy „  Zl dz „  Zm d{ „  Zn d| „  Zo d} „  Zp d~ „  Zq d „  Zr d€ „  Zs d „  Zt d‚ „  Zu ev dƒ „ Zw e jx jy d„ e> ƒ d… „  ƒ Zz e jx jy d„ e@ ƒ d† „  ƒ Z{ ev d‡ „ Z| e jx jy d„ e> ƒ dˆ „  ƒ Z} e jx jy d„ e@ ƒ d‰ „  ƒ Z~ dŠ „  Z d‹ „  Z€ dŒ „  Z d „  Z‚ dŽ „  Zƒ d „  Z„ d „  Z… d‘ „  Z† d’ „  Z‡ e jx jy d„ e; ƒ d“ „  ƒ Zˆ d” „  Z‰ e jx jy d„ e; ƒ d• „  ƒ ZŠ d– „  Z‹ d— „  ZŒ d˜ „  Z d™ „  ZŽ dš „  Z d› „  Z dœ „  Z‘ d „  Z’ dž „  Z“ d dŸ „ Z• e jx jy d  e@ ƒ e jx jy d¡ dÄ ƒ d¢ „  ƒ ƒ Z– e jx jy d  e— e@ ƒ j˜ e< ƒ ƒ e jx jy d¡ df dj g ƒ d£ „  ƒ ƒ Z™ d¤ „  Zš d¥ „  Z› e jx jy d  e@ ƒ e jx jy d¡ dl dm dn do g ƒ e jx jy d¦ eš e› g ƒ d§ „  ƒ ƒ ƒ Zœ d9 dA d¨ „ Z e jx jy d  e@ ƒ d© „  ƒ Zž e# dª „  ƒ ZŸ e jx jy d„ e> ƒ d« „  ƒ Z  d¬ „  Z¡ d­ „  Z¢ e jx jy d„ e> ƒ d® „  ƒ Z£ d¯ „  Z¤ d° „  Z¥ e jx jy d„ e> ƒ d± „  ƒ Z¦ e jx jy d„ e@ ƒ d² „  ƒ Z§ d³ „  Z¨ d´ „  Z© e jx jy dµ e+ e* f ƒ d¶ „  ƒ Zª d· „  Z« d¸ „  Z¬ e jx jy d„ e> ƒ d¹ „  ƒ Z­ dº „  Z® e jx jy d„ e> ƒ d» „  ƒ Z¯ d¼ „  Z° d½ „  Z± d¾ „  Z² d S(Å   s-   
Testing for the tree module (sklearn.tree).
iÿÿÿÿN(   t   partial(   t   product(   t
   csc_matrix(   t
   csr_matrix(   t
   coo_matrix(   t   sparse_random_matrix(   t   accuracy_score(   t   mean_squared_error(   t   assert_allclose(   t   assert_array_equal(   t   assert_array_almost_equal(   t   assert_almost_equal(   t   assert_equal(   t	   assert_in(   t   assert_raises(   t   assert_greater(   t   assert_greater_equal(   t   assert_less(   t   assert_less_equal(   t   assert_true(   t   assert_warns(   t   assert_warns_message(   t   ignore_warnings(   t   assert_raise_message(   t   check_random_state(   t   NotFittedError(   t   DecisionTreeClassifier(   t   DecisionTreeRegressor(   t   ExtraTreeClassifier(   t   ExtraTreeRegressor(   t   tree(   t	   TREE_LEAF(   t   CRITERIA_CLF(   t   CRITERIA_REG(   t   datasets(   t   compute_sample_weightt   ginit   entropyt   mset   maet   friedman_mseR   t   presorts   Presort-DecisionTreeClassifierR   R   s   Presort-DecisionTreeRegressorR   i    i   i   iòÿÿÿiüÿÿÿi   i   iûÿÿÿgš™™™™™É?g      ÀgÍÌÌÌÌÌ @g333333ó¿iþÿÿÿiýÿÿÿi
   gš™™™™™	Àgáz®Gá @iúÿÿÿg      à¿i   i   g      à?i   i   g      ø?g      ð?g333333ó?gš™™™™™©?g333333@gÍÌÌÌÌÌ@g)\Âõ(ð?g{®Gáz„?g×£p=
×@gš™™™™™ñ?g        g      @gî|?5^ºÉ?gö(\Âõð?gÍÌÌÌÌÌì?t   random_statet	   n_samplesi   t
   n_featurest   sizei   gš™™™™™é?t   densityg      Ð?t   Xt   yt   irist   bostont   digitst   toyt	   clf_smallt	   reg_smallt
   multilabels
   sparse-poss
   sparse-negs
   sparse-mixt   zerost   X_sparsec         C   sG  t  | j |  j d j | | j |  j ƒ ƒ t |  j | j | d ƒ t |  j | j | d ƒ |  j t k } t j | ƒ } t |  j	 | | j	 | | d ƒ t |  j
 | | j
 | | d ƒ t |  j j ƒ  | j j ƒ  | d ƒ t |  j | j | d ƒ t |  j | j d | d	 ƒt |  j | | j | d | d
 ƒd  S(   Ns(   {0}: inequal number of node ({1} != {2})s   : inequal children_rights   : inequal children_lefts   : inequal featuress   : inequal thresholds   : inequal sum(n_node_samples)s   : inequal n_node_samplest   err_msgs   : inequal impuritys   : inequal value(   R   t
   node_countt   formatR	   t   children_rightt   children_leftR   t   npt   logical_nott   featuret	   thresholdt   n_node_samplest   sumR   t   impurityR
   t   value(   t   dt   st   messaget   externalt   internal(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   assert_tree_equal¦   s*    c          C   s©   x¢ t  j ƒ  D]” \ }  } | d d ƒ } | j t t ƒ t | j t ƒ t d j	 |  ƒ ƒ | d d d d ƒ } | j t t ƒ t | j t ƒ t d j	 |  ƒ ƒ q Wd  S(   NR*   i    s   Failed with {0}t   max_featuresi   (
   t	   CLF_TREESt   itemst   fitR/   R0   R	   t   predictt   Tt   true_resultR<   (   t   namet   Treet   clf(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_classification_toyÃ   s    c          C   sÁ   xº t  j ƒ  D]¬ \ }  } | d d ƒ } | j t t d t j t t ƒ ƒ ƒt | j	 t
 ƒ t d j |  ƒ ƒ | j t t d t j t t ƒ d ƒ ƒt | j	 t
 ƒ t d j |  ƒ ƒ q Wd  S(   NR*   i    t   sample_weights   Failed with {0}g      à?(   RN   RO   RP   R/   R0   R?   t   onest   lenR	   RQ   RR   RS   R<   t   full(   RT   RU   RV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt    test_weighted_classification_toyÑ   s    %(c          C   s¯   x¨ t  j ƒ  D]š \ }  } | d d ƒ } | j t t ƒ t | j t ƒ t d d j	 |  ƒ ƒ| d d d d ƒ } | j t t ƒ t | j t ƒ t d d j	 |  ƒ ƒq Wd  S(   NR*   i   R:   s   Failed with {0}RM   (
   t	   REG_TREESRO   RP   R/   R0   R   RQ   RR   RS   R<   (   RT   RU   t   regRV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_regression_toyß   s    c          C   s>  t  j d	 ƒ }  d |  d  d … d  d … f <d |  d d  … d d  … f <t  j |  j ƒ \ } } t  j | j ƒ  | j ƒ  g ƒ j } |  j ƒ  }  x¨ t j ƒ  D]š \ } } | d d ƒ } | j	 | |  ƒ t
 | j | |  ƒ d d j | ƒ ƒ | d d d d ƒ } | j	 | |  ƒ t
 | j | |  ƒ d d j | ƒ ƒ qœ Wd  S(
   Ni
   i   i   R*   i    g      ð?s   Failed with {0}RM   (   i
   i
   (   R?   R8   t   indicest   shapet   vstackt   ravelRR   RN   RO   RP   R   t   scoreR<   (   R0   t   gridxt   gridyR/   RT   RU   RV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_xorí   s    $c          C   s  xÿ t  t j ƒ  t ƒ D]è \ \ }  } } | d | d d ƒ } | j t j t j ƒ t | j	 t j ƒ t j ƒ } t
 | d d j |  | | ƒ ƒ | d | d d d d ƒ } | j t j t j ƒ t | j	 t j ƒ t j ƒ } t
 | d d j |  | | ƒ ƒ q Wd  S(	   Nt	   criterionR*   i    gÍÌÌÌÌÌì?s0   Failed with {0}, criterion = {1} and score = {2}RM   i   g      à?(   R   RN   RO   t   CLF_CRITERIONSRP   R1   t   datat   targetR   RQ   R   R<   (   RT   RU   Rh   RV   Rd   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt	   test_iris  s    (		c          C   s  xÿ t  t j ƒ  t ƒ D]è \ \ }  } } | d | d d ƒ } | j t j t j ƒ t t j | j	 t j ƒ ƒ } t
 | d d j |  | | ƒ ƒ | d | d d d d ƒ } | j t j t j ƒ t t j | j	 t j ƒ ƒ } t
 | d d j |  | | ƒ ƒ q Wd  S(	   NRh   R*   i    i   s0   Failed with {0}, criterion = {1} and score = {2}RM   i   i   (   R   R]   RO   t   REG_CRITERIONSRP   R2   Rj   Rk   R   RQ   R   R<   (   RT   RU   Rh   R^   Rd   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_boston  s    (		c          C   s  xt  j ƒ  D]þ \ }  } | d d d d d d ƒ } | j t j t j ƒ | j t j ƒ } t t j	 | d ƒ t j
 t j j d ƒ d d j |  ƒ ƒt t j | d ƒ | j t j ƒ d d j |  ƒ ƒt | j t j ƒ t j | j t j ƒ ƒ d	 d d j |  ƒ ƒq Wd  S(
   Nt	   max_depthi   RM   R*   i*   i    R:   s   Failed with {0}i   (   RN   RO   RP   R1   Rj   Rk   t   predict_probaR
   R?   RD   RY   Ra   R<   R	   t   argmaxRQ   R   t   expt   predict_log_proba(   RT   RU   RV   t   prob_predict(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_probability+  s    c          C   sw   t  j d ƒ d  d  … t  j f }  t  j d ƒ } x? t j ƒ  D]1 \ } } | d d  d d ƒ } | j |  | ƒ q> Wd  S(   Ni'  Ro   R*   i    (   R?   t   aranget   newaxisR]   RO   t   NoneRP   (   R/   R0   RT   RU   R^   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_arrayrepr>  s
    "c          C   s  d d g d d g d d g d d g d d g d d g g }  d d d d d d g } x^ t  j ƒ  D]P \ } } | d d ƒ } | j |  | ƒ t | j |  ƒ | d d j | ƒ ƒqa Wx^ t j ƒ  D]P \ } } | d d ƒ } | j |  | ƒ t | j |  ƒ | d d j | ƒ ƒqÂ Wd  S(	   Niþÿÿÿiÿÿÿÿi   i   R*   i    R:   s   Failed with {0}(   RN   RO   RP   R	   RQ   R<   R]   R   (   R/   R0   RT   t   TreeClassifierRV   t   TreeRegressorR^   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_pure_setI  s    <c          C   s)  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 d d d d g g ƒ }  t  j d d d d d d d g ƒ } t  j d d ƒ u xm t j ƒ  D]_ \ } } | d d ƒ } | j |  | ƒ | j |  | ƒ | j |  | ƒ | j |  | ƒ q¼ WWd  QXd  S(   Ngsþ_—c@gdÀ	a@g±› `8`@gëÆý?õüc@gŒÁý_9Ða@gþ 8ú`@g-Výßu]@g    @Xd@gSW jÒ_@gÓ Ù‹`@g4Tÿÿ÷a@g	£þlKa@gÁ{ýÿ»c@gç|@ÆY@g~G`÷a@gwIÿ?lKa@g/"þ»c@gƒ÷úÿí_@g®û¿‘:^@g      ð?g¿½A‹wæ?gtúQ?5?á?g        g7G€¶í?g”ÞÛº¼Þ?g™¥b'Âß?t   allt   raiseR*   i    (   R?   t   arrayt   errstateR]   RO   RP   (   R/   R0   RT   RU   R^   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_numerical_stability[  s"    c          C   s?  t  j d d d d d d d d d	 d d
 t d d ƒ \ }  } x t j ƒ  D]‚ \ } } | d d ƒ } | j |  | ƒ | j } t j | d k ƒ } t	 | j
 d d d j | ƒ ƒ t	 | d d j | ƒ ƒ qI Wt d d ƒ } | j t j t j ƒ t d d d t t j ƒ ƒ } | j t j t j ƒ t | j | j ƒ d  S(   NR+   iˆ  R,   i
   t   n_informativei   t   n_redundanti    t
   n_repeatedt   shuffleR*   gš™™™™™¹?s   Failed with {0}t   max_leaf_nodes(   R"   t   make_classificationt   FalseRN   RO   RP   t   feature_importances_R?   RD   R   Ra   R<   R   R1   Rj   Rk   RZ   R	   (   R/   R0   RT   RU   RV   t   importancest   n_importantt   clf2(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_importancesr  s*    	 	c          C   s    t  ƒ  }  t t t |  d ƒ d  S(   NR‰   (   R   R   t
   ValueErrort   getattr(   RV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_importances_raises‘  s    	c          C   s  t  j d d d d d d d d d	 d d
 t d d ƒ \ }  } t d d d d d d ƒ j |  | ƒ } t d d d d d d ƒ j |  | ƒ } t | j | j ƒ t | j	 j
 | j	 j
 ƒ t | j	 j | j	 j ƒ t | j	 j | j	 j ƒ t | j	 j | j	 j ƒ d  S(   NR+   iÐ  R,   i
   R‚   i   Rƒ   i    R„   R…   R*   Rh   R$   Ro   i   R&   (   R"   R‡   Rˆ   R   RP   R   R   R‰   R	   t   tree_RA   R>   R=   RC   (   R/   R0   RV   R^   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_importances_gini_equal_mse—  s     c          C   sŠ  xY t  j ƒ  D]K \ }  } | d d ƒ } | j t j t j ƒ t | j t j j d ƒ q WxO t	 j ƒ  D]A \ }  } | d d ƒ } | j t
 j t
 j ƒ t | j d ƒ qi WxÕt j ƒ  D]Ç\ }  } | d d ƒ } | j t
 j t
 j ƒ t | j t t j t
 j j d ƒ ƒ ƒ | d d ƒ } | j t
 j t
 j ƒ t | j t t j t
 j j d ƒ ƒ ƒ | d d ƒ } | j t
 j t
 j ƒ t | j d ƒ | d d ƒ } | j t
 j t
 j ƒ t | j d ƒ | d d ƒ } | j t
 j t
 j ƒ t | j d ƒ | d d	 ƒ } | j t
 j t
 j ƒ t | j t d	 t
 j j d ƒ ƒ | d d
 ƒ } | j t
 j t
 j ƒ t | j t
 j j d ƒ | d d  ƒ } | j t
 j t
 j ƒ t | j t
 j j d ƒ | d d ƒ } t t | j t t ƒ | d d ƒ } t t | j t t ƒ | d d ƒ } t t | j t t ƒ | d d ƒ } t t | j t t ƒ | d d ƒ } t t | j t t ƒ q» Wd  S(   NRM   t   autoi   i   t   sqrtt   log2i   g{®Gáz„?g      à?g      ð?i
   iÿÿÿÿg        g      ø?t   foobar(   R]   RO   RP   R2   Rj   Rk   R   t   max_features_Ra   RN   R1   t	   ALL_TREESt   intR?   R”   R•   Rx   R   RŽ   R/   R0   (   RT   R{   R^   Rz   RV   t   TreeEstimatort   est(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_max_features±  s\    	 	 	c    	   
   C   sÚ  xk t  j ƒ  D]] \ }  } | ƒ  } t t | j t ƒ | j t t ƒ d d d g g } t t | j | ƒ q Wxet	 j ƒ  D]W\ }  } t t | d d ƒ j t t ƒ t t | d d ƒ j t t ƒ t t | d d ƒ j t t ƒ t t | d d ƒ j t t ƒ t t | d d ƒ j t t ƒ t t | d d	 ƒ j t t ƒ t t | d
 d ƒ j t t ƒ t t | d
 d ƒ j t t ƒ t t | d
 d ƒ j t t ƒ t t | d
 d ƒ j t t ƒ t t | d d ƒ j t t ƒ t t | d d ƒ j t t ƒ t
 d t ƒ $ t t | d d ƒ j t t ƒ Wd  QXt t | d d ƒ j t t ƒ | ƒ  } t d  } t t | j t | ƒ t j t ƒ } | ƒ  } | j | t ƒ t | j t ƒ t ƒ | ƒ  } t t | j t ƒ | j t t ƒ t j t ƒ } t t | j | d  d  … d d  … f ƒ t j t ƒ j } | ƒ  } | j t j t | ƒ t ƒ t t | j t ƒ t t | j t ƒ | ƒ  } | j t t ƒ t t | j | ƒ t t | j | ƒ | ƒ  } t t | j t ƒ q{ Wd  S(   Niþÿÿÿiÿÿÿÿi   t   min_samples_leafg333333ã?g        g      @t   min_weight_fraction_leafgR¸…ëQà?t   min_samples_splitgš™™™™™ñ?g      @Ro   RM   i*   t   categoryt   min_impurity_splitg      ð¿t   min_impurity_decrease(   RN   RO   R   R   Rp   R/   RP   R0   RŽ   R˜   R   t   DeprecationWarningR?   t   asfortranarrayR   RQ   RR   RS   t   asarrayR   t   dott   apply(	   RT   Rš   R›   t   X2t   y2t   Xft   tt   XtRV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt
   test_errorò  sn    	





	
		)			c          C   s-  t  j t j d t j j ƒ}  t j } xÿ t d t
 j ƒ  ƒ D]è \ } } t
 | } | d d d | d d ƒ } | j |  | ƒ | j j | j j d k } t t  j | ƒ d	 d
 j | ƒ ƒ | d d d | d d ƒ } | j |  | ƒ | j j | j j d k } t t  j | ƒ d	 d
 j | ƒ ƒ q= Wd S(   s    Test min_samples_split parametert   dtypeiè  RŸ   i
   R†   R*   i    iÿÿÿÿi	   s   Failed with {0}gš™™™™™É?N(   Niè  (   R?   R¤   R1   Rj   R   t   _treet   DTYPERk   R   Rx   R˜   t   keysRP   R‘   RC   R>   R   t   minR<   (   R/   R0   R†   RT   Rš   R›   t   node_samples(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_min_samples_split?  s$    	"
		c    	      C   sW  t  j t j d t j j ƒ}  t j } x)t d t
 j ƒ  ƒ D]\ } } t
 | } | d d d | d d ƒ } | j |  | ƒ | j j |  ƒ } t  j | ƒ } | | d k } t t  j | ƒ d d	 j | ƒ ƒ | d d
 d | d d ƒ } | j |  | ƒ | j j |  ƒ } t  j | ƒ } | | d k } t t  j | ƒ d d	 j | ƒ ƒ q= Wd  S(   NR®   iè  R   i   R†   R*   i    i   s   Failed with {0}gš™™™™™¹?(   Niè  (   R?   R¤   R1   Rj   R   R¯   R°   Rk   R   Rx   R˜   R±   RP   R‘   R§   t   bincountR   R²   R<   (	   R/   R0   R†   RT   Rš   R›   t   outt   node_countst
   leaf_count(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_min_samples_leaf`  s,    	"
		c         C   sM  | r# t  | d j t j ƒ } n t  | d j t j ƒ } t  | d } t j | j d ƒ } t j | ƒ } t |  } xä t	 d t j d d d ƒ ƒ D]Ä \ } }	 | d |	 d	 | d
 d ƒ }
 |
 j | | d | ƒ| r÷ |
 j j | j ƒ  ƒ } n |
 j j | ƒ } t j | d | ƒ} | | d k } t t j | ƒ | |
 j d j |  |
 j ƒ ƒ q™ W| j d } xØ t	 d t j d d d ƒ ƒ D]¸ \ } }	 | d |	 d	 | d
 d ƒ }
 |
 j | | ƒ | rå|
 j j | j ƒ  ƒ } n |
 j j | ƒ } t j | ƒ } | | d k } t t j | ƒ | |
 j d j |  |
 j ƒ ƒ qWd S(   sP   Test if leaves contain at least min_weight_fraction_leaf of the
    training setR9   R/   R0   i    iè  g      à?i   Rž   R†   R*   RX   t   weightss,   Failed with {0} min_weight_fraction_leaf={1}N(   Niè  (   Niè  (   t   DATASETSt   astypeR?   t   float32t   rngt   randRa   RD   R˜   R   Rx   t   linspaceRP   R‘   R§   t   tocsrRµ   R   R²   Rž   R<   (   RT   R"   t   sparseR/   R0   Rº   t   total_weightRš   R†   t   fracR›   R¶   t   node_weightst   leaf_weights(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_min_weight_fraction_leafƒ  sL    
+	
+	
RT   c         C   s   t  |  d ƒ d  S(   NR1   (   RÇ   (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt,   test_min_weight_fraction_leaf_on_dense_inputÂ  s    c         C   s   t  |  d t ƒ d  S(   NR7   (   RÇ   t   True(   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt-   test_min_weight_fraction_leaf_on_sparse_inputÇ  s    c      
   C   sM  | r# t  | d j t j ƒ } n t  | d j t j ƒ } t  | d } | j d } t |  } xí t d t j d d d ƒ ƒ D]Í \ } } | d | d	 | d
 d d d ƒ }	 |	 j	 | | ƒ | rß |	 j
 j | j ƒ  ƒ }
 n |	 j
 j | ƒ }
 t j |
 ƒ } | | d k } t t j | ƒ t | |	 j d ƒ d j |  |	 j |	 j ƒ ƒ q Wxô t d t j d d d ƒ ƒ D]Ô \ } } | d | d	 | d
 d d d ƒ }	 |	 j	 | | ƒ | rÏ|	 j
 j | j ƒ  ƒ }
 n |	 j
 j | ƒ }
 t j |
 ƒ } | | d k } t t j | ƒ t | |	 j | |	 j ƒ d j |  |	 j |	 j ƒ ƒ qqWd S(   sz   Test the interaction between min_weight_fraction_leaf and min_samples_leaf
    when sample_weights is not provided in fit.R9   R/   R0   i    iè  g      à?i   Rž   R†   R   i   R*   sB   Failed with {0} min_weight_fraction_leaf={1}, min_samples_leaf={2}gš™™™™™¹?N(   Niè  (   Niè  (   R»   R¼   R?   R½   Ra   R˜   R   Rx   RÀ   RP   R‘   R§   RÁ   Rµ   R   R²   t   maxRž   R<   R   (   RT   R"   RÂ   R/   R0   RÃ   Rš   R†   RÄ   R›   R¶   RÅ   RÆ   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt4   check_min_weight_fraction_leaf_with_min_samples_leafÌ  sX    
+	+	c         C   s   t  |  d ƒ d  S(   NR1   (   RÌ   (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pytB   test_min_weight_fraction_leaf_with_min_samples_leaf_on_dense_input  s    c         C   s   t  |  d t ƒ d  S(   NR7   (   RÌ   RÉ   (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pytC   test_min_weight_fraction_leaf_with_min_samples_leaf_on_sparse_input  s    c          C   s+  t  j t j d t j j ƒ}  t j } xýt d t
 j ƒ  ƒ D]æ\ } } t
 | } d } | d | d d ƒ } t | j d  k d j | j ƒ ƒ y t t | j |  | ƒ Wn t k
 r½ n Xx| t | j j ƒ D]h } | j j | t k s| j j | t k rÑ t | j j | d d	 j | j j | | j ƒ ƒ qÑ qÑ W| d | d
 | d d ƒ } t t d | j |  | ƒ x¯ t | j j ƒ D]› } | j j | t k s¶| j j | t k r„t | j j | d d j | j j | | j ƒ ƒ t | j j | | d j | j j | | j ƒ ƒ q„q„Wq= Wd  S(   NR®   iè  g      à?R†   R*   i    s'   Failed, min_impurity_split = {0} > 1e-7g        s&   Failed with {0} min_impurity_split={1}R¡   s   Use the min_impurity_decreases'   Failed with {0}, min_impurity_split={1}(   Niè  (   R?   R¤   R1   Rj   R   R¯   R°   Rk   R   Rx   R˜   R±   R   R¡   R<   R   R£   RP   t   AssertionErrort   rangeR‘   R;   R>   R   R=   R   RE   R   R   R   (   R/   R0   R†   RT   Rš   R¡   R›   t   node(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_min_impurity_split  sL    	"
		c       	   C   s   t  j d d d d ƒ \ }  } x#t d t j ƒ  ƒ D]\ } } t | } | d | d d ƒ } | d | d d	 d d ƒ } | d | d d
 d d ƒ } | d | d d d d ƒ } x| d f | d	 f | d
 f | d f f D]a\ }	 }
 t |	 j |
 d j |	 j |
 ƒ ƒ |	 j	 |  | ƒ x t
 |	 j j ƒ D]} |	 j j | t k r,|	 j j | } |	 j j | } |	 j j | } |	 j j | } |	 j j | } | | } |	 j j | } |	 j j | } |	 j j | } | | } | | } | | :} |	 j j | |  j d } | | | } t | |
 d j | |
 ƒ ƒ q,q,WqÛ Wq4 WxUt j ƒ  D]G\ } } d | k rt j t j }  } n t j t j }  } | d d ƒ }	 |	 j	 |  | ƒ |	 j |  | ƒ } t ƒ  } x- d d d g D] } t |	 j | ƒ | | <qÜWt j |	 ƒ } t j | ƒ } t t  | ƒ |	 j! ƒ | j |  | ƒ } t | | d j | ƒ ƒ x: | D]2 } t t | j | ƒ | | d j | | ƒ ƒ qbWqQWd  S(   NR+   i'  R*   i*   iè  R†   i    R¢   gš™™™™™©?g-Cëâ6?gš™™™™™¹?gH¯¼šò×z>s)   Failed, min_impurity_decrease = {0} > {1}s2   Failed with {0} expected min_impurity_decrease={1}t
   ClassifierRo   R;   t   capacitys6   Failed to generate same score  after pickling with {0}s=   Failed to generate same attribute {0} after pickling with {1}(   Niè  ("   R"   R‡   R   Rx   R˜   R±   R   R¢   R<   RP   RÐ   R‘   R;   R>   R   RE   t   weighted_n_node_samplesR=   Ra   R   RO   R1   Rj   Rk   R2   Rd   t   dictR   t   picklet   dumpst   loadsR   t   typet	   __class__(   R/   R0   R†   RT   Rš   t   est1t   est2t   est3t   est4R›   t   expected_decreaseRÑ   t
   imp_parentt
   wtd_n_nodet   leftt
   wtd_n_leftt   imp_leftt   wtd_imp_leftt   rightt   wtd_n_rightt	   imp_rightt   wtd_imp_rightt   wtd_avg_left_right_impt   fractional_node_weightt   actual_decreaseRd   t   fitted_attributet	   attributet   serialized_objectt   score2(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_min_impurity_decreaseO  sx    "
"




			
c          C   s˜  d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g g }  d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g g } d d g d d g d d g d d g g } d d g d d g d d g d d g g } xõ t  j ƒ  D]ç \ } } | d d ƒ } | j |  | ƒ j | ƒ } t | | ƒ t | j d	 ƒ | j | ƒ } t t | ƒ d ƒ t | d j d
 ƒ t | d j d ƒ | j	 | ƒ }	 t t |	 ƒ d ƒ t |	 d j d ƒ t |	 d j d ƒ qEWxa t
 j ƒ  D]S \ } }
 |
 d d ƒ } | j |  | ƒ j | ƒ } t | | ƒ t | j d ƒ q=Wd  S(   Niþÿÿÿiÿÿÿÿi   i   i    i   R*   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   RN   RO   RP   RQ   R	   R   Ra   Rp   RZ   Rs   R]   R   (   R/   R0   RR   t   y_trueRT   Rz   RV   t   y_hatt   probat	   log_probaR{   R^   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_multioutput¨  sX    																						**c          C   s  xt  j ƒ  D]ù \ }  } | d d ƒ } | j t t ƒ t | j d ƒ t | j d d g ƒ t	 j
 t t	 j t ƒ d f ƒ j } | d d ƒ } | j t | ƒ t t | j ƒ d ƒ t t | j ƒ d ƒ t | j d d g ƒ t | j d d g d d g g ƒ q Wd  S(   NR*   i    i   iÿÿÿÿi   iþÿÿÿ(   RN   RO   RP   R/   R0   R   t
   n_classes_R	   t   classes_R?   Rb   R   RR   RZ   (   RT   Rz   RV   t   _y(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_classes_shapeà  s    %c          C   s…   t  j d  }  t  j d  } t d | ƒ } xU t j ƒ  D]G \ } } | d d ƒ } | j |  | d | ƒt | j |  ƒ | ƒ q6 Wd  S(   Ni}   t   balancedR*   i    RX   (	   R1   Rj   Rk   R#   RN   RO   RP   R   RQ   (   t   unbalanced_Xt   unbalanced_yRX   RT   Rz   RV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_unbalanced_irisô  s    c          C   sL  xEt  t j ƒ  t j t j g ƒ D]"\ \ }  } } | d d ƒ } t j t j d | ƒ} t j	 } t
 | j | | ƒ j | ƒ | ƒ t j t j d d d | ƒ} t j	 } t
 | j | | ƒ j | ƒ | ƒ t j t j d d d | ƒ} t j	 } t
 | j | | ƒ j | ƒ | ƒ t j t j d | ƒ} t j	 } t
 | j | | ƒ j | ƒ | ƒ | j sçt t j d | ƒ} t j	 } t
 | j | | ƒ j | ƒ | ƒ t t j d | ƒ} t j	 } t
 | j | | ƒ j | ƒ | ƒ n  t j t j d  d  d … d | ƒ} t j	 d  d  d … } t
 | j | | ƒ j | ƒ | ƒ q" Wd  S(   NR*   i    R®   t   ordert   Ct   Fi   (   R   R˜   RO   R?   t   float64R½   R¥   R1   Rj   Rk   R	   RP   RQ   t   ascontiguousarrayR)   R   R   (   RT   Rš   R®   R›   R/   R0   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_memory_layout   s2    %	"	"	"	"		"	%%c          C   s…  t  j d ƒ d  d  … t  j f }  t  j d ƒ } d | d *t  j d ƒ } d | | d k <t d d ƒ } | j |  | d | ƒt | j |  ƒ t  j d ƒ ƒ t  j d ƒ d  d  … t  j f }  t  j d ƒ } d | d d +d	 | d d +d |  d d … d f <t  j d ƒ } d
 | | d	 k <t d d d d ƒ } | j |  | d | ƒt	 | j
 j d d ƒ d | | d	 k <t d d d d ƒ } | j |  | d | ƒt	 | j
 j d d ƒ t j }  t j } t j d |  j d d ƒ } t d d ƒ } | j |  | | | ƒ t  j | d |  j d ƒ} t d d ƒ } | j |  | d | ƒ| j
 j t j j k } t | j
 j | | j
 j | ƒ d  S(   Nid   g        i2   i    R*   RX   iÈ   i   i   gR¸…ëQà?Ro   g     °b@g      à?g     ÀH@t	   minlength(   R?   Rv   Rw   RY   R   RP   R	   RQ   R8   R   R‘   RB   R1   Rj   Rk   R¾   t   randintRa   Rµ   R>   R   R¯   R   R
   (   R/   R0   RX   RV   t
   duplicatesRŒ   RK   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_sample_weight+  sB    "
"		c          C   s   t  j d ƒ d  d  … t  j f }  t  j d ƒ } d | d *t d d ƒ } t  j j d d ƒ } t t | j	 |  | d | ƒt  j
 d ƒ } t t | j	 |  | d | ƒt  j d ƒ } t t | j	 |  | d | ƒt  j d	 ƒ } t t | j	 |  | d | ƒd  S(
   Nid   g        i2   R*   i    i   RX   ie   ic   (   R?   Rv   Rw   RY   R   t   randomR¿   R   RŽ   RP   R   (   R/   R0   RV   RX   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_sample_weight_invalid^  s    "
c   	      C   so  t  |  } | d d ƒ } | j t j t j ƒ | d d d d ƒ } | j t j t j ƒ t | j | j ƒ t j t j t j t j f ƒ j	 } | d i d d 6d d 6d d 6i d d 6d d 6d d 6i d d 6d d 6d d 6g d d ƒ } | j t j | ƒ t | j | j ƒ | d d d d ƒ } | j t j | ƒ t | j | j ƒ t j
 t j j ƒ } | t j d k c d	 9<i d d 6d
 d 6d d 6} | d d ƒ } | j t j t j | ƒ | d | d d ƒ } | j t j t j ƒ t | j | j ƒ | d d ƒ } | j t j t j | d ƒ | d | d d ƒ } | j t j t j | ƒ t | j | j ƒ d S(   s5   Check class_weights resemble sample_weights behavior.R*   i    t   class_weightRü   g       @i   g      ð?i   id   g      Y@N(   RN   RP   R1   Rj   Rk   R   R‰   R?   Rb   RR   RY   Ra   (	   RT   Rz   t   clf1RŒ   t
   iris_multit   clf3t   clf4RX   R  (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_class_weightss  s:    
$	c         C   s   t  |  ƒ d  S(   N(   R  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_class_weightsž  s    c         C   sÛ   t  |  } t j t t j t ƒ d f ƒ j } | d d d d ƒ } t t | j t	 t ƒ t t | j t	 | ƒ | d d d d ƒ } t t | j t	 | ƒ | d i d d 6d	 d 6g d d ƒ } t t | j t	 | ƒ d  S(
   Ni   R  s	   the larchR*   i    i   g      à?iÿÿÿÿg      ð?(
   RN   R?   Rb   R0   R   RR   R   RŽ   RP   R/   (   RT   Rz   Rú   RV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_class_weight_errors£  s    
%&c         C   s   t  |  ƒ d  S(   N(   R  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_class_weight_errors¶  s    c          C   s$  d d l  m }  t j d d d d ƒ \ } } d } xé t j ƒ  D]Û \ } } | d d  d	 | d ƒ j | | ƒ } | j } t	 | j
 |  k j ƒ  | d ƒ | d d  d	 d
 ƒ } t t | j | | ƒ | d d  d	 d ƒ } t t | j | | ƒ | d d  d	 d ƒ } t t | j | | ƒ qA Wd  S(   Niÿÿÿÿ(   R   R+   id   R*   i   i   Ro   R†   i    gš™™™™™¹?(   t   sklearn.tree._treeR   R"   t   make_hastie_10_2R˜   RO   Rx   RP   R‘   R   R>   RD   R   RŽ   (   R   R/   R0   t   kRT   Rš   R›   R   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_max_leaf_nodes»  s    %	 c          C   s   t  j d d d d ƒ \ }  } d } xT t j ƒ  D]F \ } } | d d d | ƒ j |  | ƒ } | j } t | j d ƒ q1 Wd  S(   NR+   id   R*   i   i   Ro   R†   (   R"   R  R˜   RO   RP   R‘   R   Ro   (   R/   R0   R  RT   Rš   R›   R   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_max_leaf_nodes_max_depthÎ  s    !	c          C   sŠ   xƒ d d d d d d d d g D]c }  t  t ƒ  j d	 g d
 g g d	 d
 g ƒ j |  ƒ } t d | j d	 k oy d k  n d ƒ q Wd  S(   Nt	   n_classesRF   R>   R=   RB   RE   RA   RC   i    i   iýÿÿÿi   s    Array points to arbitrary memory(   R   R   RP   R‘   R   t   flat(   t   attrRF   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_arrays_persistØ  s    #c          C   sƒ   t  d ƒ }  t j d ƒ } |  j d d d ƒ } xL t j ƒ  D]> \ } } | d d ƒ } | j | | ƒ t | j j	 d ƒ q= Wd  S(   Ni    i
   i   i   R*   (   i
   i   (   i
   (
   R   R?   R8   R  R˜   RO   RP   R   R‘   Ro   (   R*   R/   R0   RT   Rš   R›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_only_constant_featuresä  s    c          C   sí   t  j t  j d d d d d d d d d d d g g t  j d ƒ f ƒ ƒ }  d d d d d d d d d	 d	 d	 g } xt t j ƒ  D]f \ } } d
 | k r | d d d d ƒ } | j |  | ƒ t | j j	 d ƒ t | j j
 d ƒ q q Wd  S(   Ni    i   i   i   i   i   i   i   i   t	   ExtraTreeR*   RM   (   i   i   (   R?   t	   transposeRb   R8   R˜   RO   RP   R   R‘   Ro   R;   (   R/   R0   RT   Rš   R›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt,   test_behaviour_constant_feature_after_splitsî  s    3'c          C   sL  t  j t  j d g d g d g d g g ƒ t  j d ƒ g ƒ }  t  j d d d d g ƒ } xt t j ƒ  D]f \ } } | d d d d ƒ } | j |  | ƒ t | j j	 d ƒ t
 | j |  ƒ t  j d d
 ƒ ƒ qg Wxt t j ƒ  D]f \ } } | d d d d ƒ } | j |  | ƒ t | j j	 d ƒ t
 | j |  ƒ t  j d d
 ƒ ƒ qÞ Wd  S(   Ng      ð?g        i   iè  R*   i    RM   i   i   g      à?(   i   iè  (   i   i   (   i   (   R?   t   hstackR   R8   RN   RO   RP   R   R‘   Ro   R	   Rp   R[   R]   RQ   (   R/   R0   RT   Rš   R›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt(   test_with_only_one_non_constant_featuresû  s    *&c          C   s€   t  j d d ƒ j t  j ƒ j d d ƒ }  t ƒ  } y  | j |  d d d d g ƒ Wn& t k
 r{ } t d t	 | ƒ ƒ n Xd  S(	   Ni
   g      D@i   iÿÿÿÿi   i    R½   g¥\Ãñ)c=H(
   R?   t   repeatR¼   R  t   reshapeR   RP   RŽ   R   t   str(   R/   RV   t   e(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_big_input  s    *	 c          C   s!   d d l  m }  t t |  ƒ d  S(   Niÿÿÿÿ(   t   _realloc_test(   t   sklearn.tree._utilsR)  R   t   MemoryError(   R)  (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_realloc  s    c          C   sº   d t  j d ƒ }  t j j d d ƒ } t j j d d d ƒ } d |  d } t d d d	 | ƒ } t t | j	 | | ƒ d |  d d } t d d d	 | ƒ } t t
 | j	 | | ƒ d  S(
   Ni   t   Pi
   i   i    i   t   splittert   bestR†   (   t   structt   calcsizeR?   R
  t   randnR  R   R   t	   ExceptionRP   R+  (   t   n_bitsR/   R0   t   hugeRV   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_huge_allocations  s    c         C   s¹  t  |  } t | d } t | d } t | d } | d k rr | j d d } | |  } | |  } | |  } n  x@t t t f D]/} | | ƒ } | d d d	 | ƒ j | | ƒ }	 | d d d	 | ƒ j | | ƒ }
 t |	 j |
 j d
 j	 |  ƒ ƒ |	 j
 | ƒ } |  t k r1|	 j | ƒ } |	 j | ƒ } n  x} t t t f D]l } | | d t j ƒ} t |
 j
 | ƒ | ƒ |  t k rAt |
 j | ƒ | ƒ t |
 j | ƒ | ƒ qAqAWq‚ Wd  S(   NR/   R9   R0   R3   R2   i    i   R*   Ro   s5   {0} with dense and sparse format gave different treesR®   (   R3   R2   (   R˜   R»   Ra   R   R   R   RP   RL   R‘   R<   RQ   RN   Rp   Rs   R?   R½   R
   (   R   t   datasetRo   Rš   R/   R9   R0   R+   t   sparse_formatRG   RH   t   y_predt   y_probat   y_log_probat   sparse_matrixt   X_sparse_test(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_sparse_input/  s8    


!!
t	   tree_typeR7  c         C   s,   | d k r d n d  } t |  | | ƒ d  S(   NR3   i   (   Rx   R>  (   R?  R7  Ro   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_sparse_inputX  s    c         C   s   t  |  | d ƒ d  S(   Ni   (   R>  (   R?  R7  (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_sparse_input_reg_treesd  s    c         C   sf  t  |  } t | d } t | d } t | d } | d d d d d d	 ƒ j | | ƒ } | d d d d d d	 ƒ j | | ƒ } t | j | j d
 j |  ƒ ƒ t | j | ƒ | j | ƒ ƒ | d d d d d d ƒ j | | ƒ } | d d d d d d ƒ j | | ƒ } t | j | j d
 j |  ƒ ƒ t | j | ƒ | j | ƒ ƒ | d d d | j d d	 ƒ j | | ƒ } | d d d | j d d	 ƒ j | | ƒ } t | j | j d
 j |  ƒ ƒ t | j | ƒ | j | ƒ ƒ | d d d d ƒ j | | ƒ } | d d d d ƒ j | | ƒ } t | j | j d
 j |  ƒ ƒ t | j | ƒ | j | ƒ ƒ d  S(   NR/   R9   R0   R*   i    RM   i   Ro   i   s5   {0} with dense and sparse format gave different treesRŸ   i
   R   R†   i   (	   R˜   R»   RP   RL   R‘   R<   R
   RQ   Ra   (   R   R7  Rš   R/   R9   R0   RG   RH   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_sparse_parametersm  sB    
'

  
!!
c   
      C   sí   t  |  } t | d } t | d } t | d } |  t k rF t n t } xš | D]’ } | d d d d d | ƒ j | | ƒ } | d d d d d | ƒ j | | ƒ }	 t | j |	 j d	 j |  ƒ ƒ t	 |	 j
 | ƒ | j
 | ƒ ƒ qS Wd  S(
   NR/   R9   R0   R*   i    Ro   i   Rh   s5   {0} with dense and sparse format gave different trees(   R˜   R»   R]   Rm   Ri   RP   RL   R‘   R<   R
   RQ   (
   R   R7  Rš   R/   R9   R0   t
   CRITERIONSRh   RG   RH   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_sparse_criterion™  s    

t   checkc         C   s   | |  | ƒ d  S(   N(    (   R?  R7  RE  (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_sparse­  s    c         C   s‰  t  |  } | } t j | ƒ } t d ƒ } g  } g  } d }	 |	 g }
 x‰ t | ƒ D]{ } | j | d ƒ } | j | ƒ |  } | j | ƒ | j d d d | f ƒd } | j | ƒ |	 | 7}	 |
 j |	 ƒ qS Wt j | ƒ } t j	 t j | ƒ d t j
 ƒ} t | | |
 f d | | f ƒ} | j ƒ  } t | | |
 f d | | f ƒ} | j ƒ  } | j d d d | f ƒ} | j ƒ  } t | j d k j ƒ  d ƒ t | j d k j ƒ  d ƒ | d	 d d
 | ƒ j | | ƒ } | d	 d d
 | ƒ j | | ƒ } t | j | j d j |  ƒ ƒ | | f } xZt | | ƒ D]I\ } } t | j j | ƒ | j j | ƒ ƒ t | j | ƒ | j | ƒ ƒ t | j | ƒ | j j | ƒ ƒ t | j j | ƒ j ƒ  | j j | ƒ j ƒ  ƒ t | j | ƒ j ƒ  | j | ƒ j ƒ  ƒ t | j | ƒ j ƒ  | j j | ƒ j ƒ  ƒ t | j | ƒ | j | ƒ ƒ |  t k r8t | j | ƒ | j | ƒ ƒ q8q8Wd  S(   Ni    g      à?i   R-   i   R®   Ra   g        R*   Ro   s5   {0} with dense and sparse format gave different trees(   R˜   R?   Rv   R   RÐ   t   binomialt   permutationt   appendt   concatenateR   R½   R   t   toarrayR   R  t   copyR   Rj   RD   RP   RL   R‘   R<   R   R
   R§   t   decision_pathRQ   RN   Rp   (   R   Ro   R,   Rš   R+   t   samplesR*   R`   Rj   t   offsett   indptrt   it   n_nonzero_it	   indices_it   data_iR9   R/   R=  t   X_testR0   RG   RH   t   Xst   X1R¨   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_explicit_sparse_zeros¶  s`    
	
!!!
%"c         C   s   t  |  ƒ d  S(   N(   RX  (   R?  (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_explicit_sparse_zerosû  s    c         C   s¬   t  |  } t j d  d  … d f j ƒ  } t j d  d  … d f j d ƒ } t j } t t | d d ƒ j | | ƒ | d d ƒ } | j | | ƒ t t | j	 | g ƒ d  S(   Ni    iÿÿÿÿi   R*   (   iÿÿÿÿi   (
   R˜   R1   Rj   Rc   R%  Rk   R   RŽ   RP   RQ   (   RT   Rš   R/   t   X_2dR0   R›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_raise_error_on_1d_input   s    
"	c         C   s   t  ƒ   t |  ƒ Wd  QXd  S(   N(   R   R[  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_1d_input  s    
c         C   sz   |  d d ƒ } | j  | | d | ƒt | j j d ƒ |  d d d d ƒ } | j  | | d | ƒt | j j d ƒ d  S(   NR*   i    RX   i   Rž   gš™™™™™Ù?(   RP   R   R‘   Ro   (   Rš   R/   R0   RX   R›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt"   _check_min_weight_leaf_split_level  s    c         C   s    t  |  } t j d g d g d g d g d g g ƒ } d d d d d g } d d d d d g } t | | | | ƒ | ƒ  j sœ t | t | ƒ | | ƒ n  d  S(   Ni    i   gš™™™™™É?(   R˜   R?   R   R]  R)   R   (   RT   Rš   R/   R0   RX   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt!   check_min_weight_leaf_split_level  s    
-c         C   s   t  |  ƒ d  S(   N(   R^  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt    test_min_weight_leaf_split_level,  s    c         C   sX   t  j t j j ƒ } t |  ƒ  } | j t  t ƒ t | j	 t  ƒ | j
 j	 | ƒ ƒ d  S(   N(   t   X_smallR¼   R   R¯   R°   R˜   RP   t   y_smallR	   R§   R‘   (   RT   t	   X_small32R›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_public_apply1  s
    c         C   s^   t  t j t j j ƒ ƒ } t |  ƒ  } | j t t ƒ t	 | j
 t ƒ | j j
 | ƒ ƒ d  S(   N(   R   R`  R¼   R   R¯   R°   R˜   RP   Ra  R	   R§   R‘   (   RT   Rb  R›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_public_apply_sparse:  s
    c         C   s   t  |  ƒ d  S(   N(   Rc  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_public_apply_all_treesC  s    c         C   s   t  |  ƒ d  S(   N(   Rd  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_public_apply_sparse_treesH  s    c         C   s   t  t |  j | | ƒ d  S(   N(   R   RŽ   RP   (   R›   R/   R0   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_presort_sparseM  s    c       	   C   s§   t  d t ƒ t d t ƒ f }  t t t f } t j d d d d d d d d	 ƒ \ } } | d  d  … d f } x3 t |  | ƒ D]" \ } } t	 | | | ƒ | ƒ q} Wd  S(
   NR)   R*   i    R+   i2   R,   i   R  i   (
   R   RÉ   R   R   R   R   R"   t   make_multilabel_classificationR   Rg  (   t   estst   sparse_matricesR0   R/   R›   R<  (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_presort_sparseQ  s    t   clsc         C   sS   d t  t f } d } d j | | ƒ } |  d | ƒ } t t | | j t t ƒ d  S(   NR“   t   invalids,   'presort' should be in {}. Got {!r} instead.R)   (   RÉ   Rˆ   R<   R   RŽ   RP   R/   R0   (   Rl  t   allowed_presortt   invalid_presortt   msgR›   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_invalid_presort`  s    c          C   su   t  j }  t  j } t d d d d ƒ j |  | ƒ } | j |  d  ƒ j ƒ  } t | d d d g d d d g g ƒ d  S(   NR*   i    Ro   i   i   (   R1   Rj   Rk   R   RP   RM  RK  R	   (   R/   R0   R›   t   node_indicator(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_decision_path_hardcodedk  s
    		!c         C   sB  t  j } t  j } | j d } t |  } | d d d d ƒ } | j | | ƒ | j | ƒ } | j ƒ  } t | j | | j	 j
 f ƒ | j | ƒ } g  t | ƒ D] \ }	 }
 | |	 |
 f ^ q¡ } t | t j d | ƒ ƒ | j	 j t k } t t j | | ƒ t j d | ƒ ƒ | j d d ƒ j ƒ  } t | j	 j | ƒ d  S(   Ni    R*   Ro   i   Ra   t   axisi   (   R1   Rj   Rk   Ra   R˜   RP   RM  RK  R   R‘   R;   R§   t	   enumerateR
   R?   RY   R>   R   R¦   RD   RË   R   Ro   (   RT   R/   R0   R+   Rš   R›   t   node_indicator_csrRr  t   leavesRQ  t   jt   leave_indicatort
   all_leavesRo   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_decision_paths  s"    		
/c         C   s   t  |  ƒ d  S(   N(   R{  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_decision_path  s    c         C   s@   t  t t ƒ } } t |  } t t | d d ƒ j | | ƒ d  S(   NR*   i    (   t   X_multilabelR   t   y_multilabelR˜   R   t	   TypeErrorRP   (   RT   R/   R0   Rš   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   check_no_sparse_y_support”  s    
c         C   s   t  |  ƒ d  S(   N(   R€  (   RT   (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_no_sparse_y_supportš  s    c          C   sÑ  t  d d d d d d ƒ }  |  j d d g d	 g d g d
 g d	 g g d d d d d d g d d d d d d g ƒ t |  j j d d d d d d g ƒ t |  j j j d d d g ƒ |  j d d g d	 g d g d
 g d	 g g d d d d d d g d t j	 d	 ƒ ƒ t |  j j d d d d g ƒ t |  j j j d d d g ƒ |  j d d g d	 g d g d
 g d	 g g d d d d d d g ƒ t |  j j d d d d g ƒ t |  j j j d d d g ƒ d S(    sQ	  Check MAE criterion produces correct results on small toy dataset:

    ------------------
    | X | y | weight |
    ------------------
    | 3 | 3 |  0.1   |
    | 5 | 3 |  0.3   |
    | 8 | 4 |  1.0   |
    | 3 | 6 |  0.6   |
    | 5 | 7 |  0.3   |
    ------------------
    |sum wt:|  2.3   |
    ------------------

    Because we are dealing with sample weights, we cannot find the median by
    simply choosing/averaging the centre value(s), instead we consider the
    median where 50% of the cumulative weight is found (in a y sorted data set)
    . Therefore with regards to this test data, the cumulative weight is >= 50%
    when y = 4.  Therefore:
    Median = 4

    For all the samples, we can get the total error by summing:
    Absolute(Median - y) * weight

    I.e., total error = (Absolute(4 - 3) * 0.1)
                      + (Absolute(4 - 3) * 0.3)
                      + (Absolute(4 - 4) * 1.0)
                      + (Absolute(4 - 6) * 0.6)
                      + (Absolute(4 - 7) * 0.3)
                      = 2.5

    Impurity = Total error / total weight
             = 2.5 / 2.3
             = 1.08695652173913
             ------------------

    From this root node, the next best split is between X values of 3 and 5.
    Thus, we have left and right child nodes:

    LEFT                    RIGHT
    ------------------      ------------------
    | X | y | weight |      | X | y | weight |
    ------------------      ------------------
    | 3 | 3 |  0.1   |      | 5 | 3 |  0.3   |
    | 3 | 6 |  0.6   |      | 8 | 4 |  1.0   |
    ------------------      | 5 | 7 |  0.3   |
    |sum wt:|  0.7   |      ------------------
    ------------------      |sum wt:|  1.6   |
                            ------------------

    Impurity is found in the same way:
    Left node Median = 6
    Total error = (Absolute(6 - 3) * 0.1)
                + (Absolute(6 - 6) * 0.6)
                = 0.3

    Left Impurity = Total error / total weight
            = 0.3 / 0.7
            = 0.428571428571429
            -------------------

    Likewise for Right node:
    Right node Median = 4
    Total error = (Absolute(4 - 3) * 0.3)
                + (Absolute(4 - 4) * 1.0)
                + (Absolute(4 - 7) * 0.3)
                = 1.2

    Right Impurity = Total error / total weight
            = 1.2 / 1.6
            = 0.75
            ------
    R*   i    Rh   R'   R†   i   R/   i   i   i   R0   i   i   i   RX   g333333ã?g333333Ó?gš™™™™™¹?g      ð?g      @gffffff@gffffffæ?g333333ó?gš™™™™™ù?g      @g      @gffffffö?g      ø?g      @g      @N(
   R   RP   R   R‘   RE   R	   RF   R  R?   RY   (   t   dt_mae(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_mae   s    J	B(B C c          C   sE  d }  t  j d d t  j ƒ} d } d „  } xt j t j | g D]ú } xw t j ƒ  D]i \ } } | |  | ƒ } | | ƒ j ƒ  } | \ }	 \ }
 } } t | |	 ƒ t |  |
 ƒ t	 | | ƒ qV Wxw t
 j ƒ  D]i \ } } | |  | ƒ } | | ƒ j ƒ  } | \ }	 \ }
 } } t | |	 ƒ t |  |
 ƒ t | | ƒ qÐ WqC Wd  S(   Ni   R®   id   c         S   s   t  j t  j |  ƒ ƒ S(   N(   R×   RÙ   RØ   (   t   obj(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   _pickle_copy  s    (   R?   Rv   t   intpRL  t   deepcopyR    RO   t
   __reduce__R   R	   R!   (   t	   n_outputsR  R+   R…  t	   copy_funct   _t   typenamet   criteriat   resultt	   typename_t
   n_outputs_Rø   t
   n_samples_(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   test_criterion_copy  s&    	c    
      C   sD  t  j j d ƒ j d d ƒ d }  t  j |  j d ƒ ƒ }  |  d  d  … d  d … f } t | ƒ } |  d  d  … d f } xÅ | | g D]· } t d d ƒ j | | ƒ } | j	 | ƒ } t
 t  j | j j t k ƒ d ƒ } | j | ƒ } t  j t  j | j j ƒ ƒ d }	 t |	 ƒ d k s$t ‚ t | ƒ d k s… t ‚ q… Wd  S(   Ni    id   i   g±¡*ÓÎâGR½   iÿÿÿÿR*   (   R?   R
  t   RandomStateR2  t
   nan_to_numR¼   R   R   RP   R§   t   sett   whereR‘   R>   R   t
   differencet   isfiniteRB   RZ   RÏ   (
   Rj   t   X_fullR9   R0   R/   R   t   terminal_regionst	   left_leaft
   empty_leaft   infinite_threshold(    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt"   test_empty_leaf_infinite_threshold  s    "%#(   R$   R%   (   R&   R'   R(   (   i   i   (   i   (   i   i   (   R5   R4   R3   R7   s
   sparse-poss
   sparse-negs
   sparse-mixR8   (³   t   __doc__RL  R×   t	   functoolsR    t	   itertoolsR   R0  t   pytestt   numpyR?   t   scipy.sparseR   R   R   t   sklearn.random_projectionR   t   sklearn.metricsR   R   t   sklearn.utils.testingR   R	   R
   R   R   R   R   R   R   R   R   R   R   R   R   R   t   sklearn.utils.validationR   t   sklearn.exceptionsR   t   sklearn.treeR   R   R   R   t   sklearnR   R  R   t   sklearn.tree.treeR    R!   R"   t   sklearn.utilsR#   Ri   Rm   RÉ   RN   R]   RÖ   R˜   t   updatet   SPARSE_TREESR   R`  Ra  t   y_small_regR/   R0   RR   RS   t	   load_irisR1   R
  R“  R¾   RH  Rk   R-   t   permRj   t   load_bostonR2   t   load_digitsR3   R*   Rh  R}  R~  t   uniformt   X_sparse_posR  t   y_randomRK  t   X_sparse_mixR8   R»   RT   RL   RW   R\   R_   Rg   Rl   Rn   Ru   Ry   R|   R   R   R   R’   Rœ   R­   R´   R¹   Rˆ   RÇ   t   markt   parametrizeRÈ   RÊ   RÌ   RÍ   RÎ   RÒ   Rò   R÷   Rû   Rÿ   R  R	  R  R  R  R  R  R  R  R  R  R!  R#  R(  R,  R6  Rx   R>  R@  R•  t   intersectionRA  RB  RD  RF  RX  RY  R[  R\  R]  R^  R_  Rc  Rd  Re  Rf  Rg  Rk  Rq  Rs  R{  R|  R€  R  Rƒ  R’  Rž  (    (    (    s;   lib/python2.7/site-packages/sklearn/tree/tests/test_tree.pyt   <module>   s¦  	

	

	----------------------6?$'<!	! 															A	M	!	#??	8	Y	8			+	3		+			
		
			
		)	  '	,	D	
							
				a	