ó
‡ˆ\c           @   sè  d  Z  d d l m 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 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 e# f d „  ƒ  YZ$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d „  Z* d „  Z+ e j, j- d ƒ d „  ƒ Z. d „  Z/ d „  Z0 e j, j- d ƒ d „  ƒ Z1 e j, j- d  ƒ d! „  ƒ Z2 d S("   s'   
Testing Recursive feature elimination
iÿÿÿÿ(   t   divisionN(   t   assert_array_almost_equalt   assert_array_equal(   t   sparse(   t   RFEt   RFECV(   t	   load_irist   make_friedman1(   t   zero_one_loss(   t   SVCt   SVR(   t   RandomForestClassifier(   t   cross_val_score(   t
   GroupKFold(   t   check_random_state(   t   ignore_warnings(   t   assert_greatert   assert_equal(   t   make_scorer(   t
   get_scorert   MockClassifierc           B   sb   e  Z d  Z d d „ Z d „  Z d „  Z e Z e Z e Z d d d „ Z
 e d „ Z d „  Z RS(	   s@   
    Dummy classifier to test recursive feature elimination
    i    c         C   s   | |  _  d  S(   N(   t	   foo_param(   t   selfR   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   __init__    s    c         C   sD   t  | ƒ t  | ƒ k s t ‚ t j | j d d t j ƒ|  _ |  S(   Ni   t   dtype(   t   lent   AssertionErrort   npt   onest   shapet   float64t   coef_(   R   t   Xt   Y(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   fit#   s    "c         C   s   | j  d S(   Ni    (   R   (   R   t   T(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   predict(   s    c         C   s"   |  j  d k r d } n d } | S(   Ni   g      ð?g        (   R   (   R   R    R!   t   score(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyR%   /   s    	c         C   s   i |  j  d 6S(   NR   (   R   (   R   t   deep(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt
   get_params6   s    c         K   s   |  S(   N(    (   R   t   params(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt
   set_params9   s    N(   t   __name__t
   __module__t   __doc__R   R"   R$   t   predict_probat   decision_functiont	   transformt   NoneR%   t   TrueR'   R)   (    (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyR      s   		c          C   s	  t  d ƒ }  t ƒ  } t j | j |  j d t | j ƒ d f ƒ f } | j } t d d d |  d d ƒ } t	 d	 | d
 d d d ƒ } | j
 | | ƒ t t | j ƒ | j d ƒ t d d ƒ } t	 d	 | d
 d d d ƒ } | j
 | | ƒ t | j ƒ  | j ƒ  ƒ d  S(   Ni    t   sizei   t   n_estimatorsi   t   random_statet	   max_depthi   t	   estimatort   n_features_to_selecti   t   stepgš™™™™™¹?i   t   kernelt   linear(   R   R   R   t   c_t   datat   normalR   t   targetR   R   R"   R   t   ranking_R   R	   R   t   get_support(   t	   generatort   irisR    t   yt   clft   rfet   clf_svct   rfe_svc(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfe_features_importance=   s    	1	c          C   s¯  t  d ƒ }  t ƒ  } t j | j |  j d t | j ƒ d f ƒ f } t j | ƒ } | j	 } t
 d d ƒ } t d | d d d	 d
 ƒ } | j | | ƒ | j | ƒ } | j | | ƒ t t | j ƒ | j d ƒ t
 d d ƒ } t d | d d d	 d
 ƒ }	 |	 j | | ƒ |	 j | ƒ }
 t | j | j j ƒ t | d  | j d  ƒ t | j | ƒ | j | j ƒ ƒ t | j | | ƒ | j | j | j	 ƒ ƒ t | |
 j ƒ  ƒ d  S(   Ni    R2   i   R9   R:   R6   R7   i   R8   gš™™™™™¹?i   i
   (   R   R   R   R;   R<   R=   R   R   t
   csr_matrixR>   R	   R   R"   R/   R   R?   R   R   R$   R%   t   toarray(   RA   RB   R    t   X_sparseRC   RD   RE   t   X_rt
   clf_sparset
   rfe_sparset
   X_r_sparse(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfeQ   s(    	1	"+c          C   sÙ   t  d ƒ }  t ƒ  } t j | j |  j d t | j ƒ d f ƒ f } | j } t ƒ  } t	 d | d d d d ƒ } | j
 | | ƒ | j | ƒ } | j
 | | ƒ t t | j ƒ | j d	 ƒ t | j | j j ƒ d  S(
   Ni    R2   i   R6   R7   i   R8   gš™™™™™¹?i   (   R   R   R   R;   R<   R=   R   R>   R   R   R"   R/   R   R?   R   (   RA   RB   R    RC   RD   RE   RL   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfe_mockclassifiern   s    	1		c       	   C   sï  t  d ƒ }  t ƒ  } t j | j |  j d t | j ƒ d f ƒ f } t | j ƒ } t	 d t
 d d ƒ d d d	 d
 ƒ } | j | | ƒ t t | j ƒ | j d ƒ t t | j ƒ | j d ƒ | j | ƒ } t | | j ƒ t	 d t
 d d ƒ d d d	 d
 ƒ } t j | ƒ } | j | | ƒ | j | ƒ } t | j ƒ  | j ƒ t t d t ƒ}	 t	 d t
 d d ƒ d d d	 d
 d |	 ƒ } t | j ƒ | | ƒ | j | ƒ } t | | j ƒ t d ƒ }
 t	 d t
 d d ƒ d d d	 d
 d |
 ƒ } | j | | ƒ | j | ƒ } t | | j ƒ d „  } t	 d t
 d d ƒ d d d	 d
 d | ƒ } | j | | ƒ t | j t j t | j ƒ ƒ ƒ t | j d ƒ t	 d t
 d d ƒ d d d	 d
 ƒ } | j | | ƒ t t | j ƒ d ƒ t t | j ƒ | j d ƒ | j | ƒ } t | | j ƒ t	 d t
 d d ƒ d d d	 d
 ƒ } t j | ƒ } | j | | ƒ | j | ƒ } t | j ƒ  | j ƒ t	 d t
 d d ƒ d d d	 d
 ƒ } t j | ƒ } | j | | ƒ | j | ƒ } t | j ƒ  | j ƒ d  S(   Ni    R2   i   R6   R9   R:   R8   i   t   cvi   t   greater_is_bettert   scoringt   accuracyc         S   s   d S(   Ng      ð?(    (   R6   R    RC   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_scorer§   s    i   gš™™™™™É?(   R   R   R   R;   R<   R=   R   t   listR>   R   R	   R"   R   t   grid_scores_R   R?   R/   R   R   RI   RJ   R   R   t   FalseR   R   R   t   n_features_(   RA   RB   R    RC   t   rfecvRL   t   rfecv_sparseRK   RO   RT   t   scorerRV   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt
   test_rfecv~   sb    	1$$!	!		!	"$$$c          C   sÁ   t  d ƒ }  t ƒ  } t j | j |  j d t | j ƒ d f ƒ f } t | j ƒ } t	 d t
 ƒ  d d d d ƒ } | j | | ƒ t t | j ƒ | j d ƒ t t | j ƒ | j d ƒ d  S(	   Ni    R2   i   R6   R8   i   RR   i   (   R   R   R   R;   R<   R=   R   RW   R>   R   R   R"   R   RX   R   R?   (   RA   RB   R    RC   R[   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfecv_mockclassifierÉ   s    	1c       	   C   sê   d d l  m }  d d  l } |  ƒ  | _ t d ƒ } t ƒ  } t j | j | j	 d t
 | j ƒ d f ƒ f } t | j ƒ } t d t d d ƒ d	 d
 d d d d
 ƒ } | j | | ƒ | j } | j d ƒ t t
 | j ƒ  ƒ d ƒ d  S(   Niÿÿÿÿ(   t	   cStringIOi    R2   i   R6   R9   R:   R8   i   RR   i   t   verbose(   t   sklearn.externals.six.movesR`   t   syst   stdoutR   R   R   R;   R<   R=   R   RW   R>   R   R	   R"   t   seekR   t   readline(   t   StringIORc   RA   RB   R    RC   R[   t   verbose_output(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfecv_verbose_output×   s    	1*	c       
   C   s3  t  d ƒ }  t ƒ  } t j | j |  j d t | j ƒ d f ƒ f } t | j ƒ } x× d d g d d g d d g g D]´ \ } } t	 d t
 ƒ  d | d	 | d
 d ƒ } | j | | ƒ t j | j d | | ƒ d } t | j ƒ | k sô t ‚ t | j ƒ | j d k st ‚ | j | k sw t ‚ qw Wd  S(   Ni    R2   i   i   i   i   R6   R8   t   min_features_to_selectRR   i   (   R   R   R   R;   R<   R=   R   RW   R>   R   R   R"   t   ceilR   RX   R   R?   RZ   (   RA   RB   R    RC   R8   Rj   R[   t	   score_len(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfecv_grid_scores_sizeê   s    	1."s"   ignore: You should specify a valuec          C   s]   t  t d d ƒ ƒ }  t |  j d ƒ t ƒ  } t |  | j | j ƒ } t | j	 ƒ  d ƒ d  S(   NR9   R:   t
   classifiergffffffæ?(
   R   R	   R   t   _estimator_typeR   R   R<   R>   R   t   min(   RE   RB   R%   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfe_estimator_tagsþ   s
    	c          C   s  d }  t  d d d |  d d ƒ \ } } | j \ } }  t d d ƒ } t | d	 d
 ƒ} | j | | ƒ } t | j j ƒ  |  d ƒ t | d	 d ƒ} | j | | ƒ } t | j j ƒ  |  d ƒ t | d	 d ƒ} | j | | ƒ } t | j j ƒ  |  d ƒ d  S(   Ni
   t	   n_samplesi2   t
   n_featuresR4   i    R9   R:   R8   g{®Gáz„?i   gš™™™™™É?i   (   R   R   R
   R   R"   R   t   support_t   sum(   Rs   R    RC   Rr   R6   t   selectort   sel(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfe_min_step  s    !c          C   s  d „  }  d „  } d d g } d d g } d d g } xÚ t  | | | ƒ D]Æ \ } } } t d ƒ } | j d d | f ƒ }	 | j d ƒ j ƒ  }
 t d	 t d
 d ƒ d | d | ƒ } | j |	 |
 ƒ t t	 j
 | j ƒ |  | | | ƒ ƒ t t	 j
 | j ƒ | | | | ƒ ƒ qI Wd } d d g } d d g } xÐ t  | | ƒ D]¿ \ } } t d ƒ } | j d d | f ƒ }	 | j d ƒ j ƒ  }
 t d	 t d
 d ƒ d | d d ƒ } | j |	 |
 ƒ t | j j d |  | | | ƒ ƒ t | j j d | | | | ƒ ƒ qAWd  S(   Nc         S   s   d |  | | d | S(   Ni   (    (   Rs   R7   R8   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   formula1'  s    c         S   s   d t  j |  | t | ƒ ƒ S(   Ni   (   R   Rk   t   float(   Rs   R7   R8   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   formula2*  s    i   i   i   i+   R2   id   R6   R9   R:   R7   R8   i   i
   RR   i   i    (   t   zipR   R=   t   randt   roundR   R	   R"   R   R   t   maxR?   R   RX   R   (   Ry   R{   t   n_features_listt   n_features_to_select_listt	   step_listRs   R7   R8   RA   R    RC   RE   R[   (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt"   test_number_of_subsets_of_features  s<    			$c          C   sÍ   t  d ƒ }  t ƒ  } t j | j |  j d t | j ƒ d f ƒ f } | j } t d t	 d d ƒ ƒ } | j
 | | ƒ | j } | j } | j d d ƒ | j
 | | ƒ t | j | ƒ t | j | ƒ d  S(	   Ni    R2   i   R6   R9   R:   t   n_jobsi   (   R   R   R   R;   R<   R=   R   R>   R   R	   R"   R?   RX   R)   R   (   RA   RB   R    RC   R[   t   rfecv_rankingt   rfecv_grid_scores(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfe_cv_n_jobsZ  s    	1			s(   ignore:The default value of n_estimatorsc          C   sÅ   t  d ƒ }  t ƒ  } d } t j t j d | t | j ƒ ƒ ƒ } | j } | j d k j t	 ƒ } t
 d t d |  ƒ d d d d d	 t d
 d ƒ ƒ } | j | | d | ƒ| j d k sÁ t ‚ d  S(   Ni    i   R6   R4   R8   i   RT   RU   RR   t   n_splitsi   t   groups(   R   R   R   t   floort   linspaceR   R>   R<   t   astypet   intR   R   R   R"   RZ   R   (   RA   RB   t   number_groupsR‰   R    RC   t
   est_groups(    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   test_rfe_cv_groupsl  s    	'	(3   R,   t
   __future__R    t   pytestt   numpyR   t   numpy.testingR   R   t   scipyR   t   sklearn.feature_selection.rfeR   R   t   sklearn.datasetsR   R   t   sklearn.metricsR   t   sklearn.svmR	   R
   t   sklearn.ensembleR   t   sklearn.model_selectionR   R   t   sklearn.utilsR   t   sklearn.utils.testingR   R   R   R   R   t   objectR   RH   RP   RQ   R^   R_   Ri   Rm   t   markt   filterwarningsRq   Rx   Rƒ   R‡   R   (    (    (    sG   lib/python2.7/site-packages/sklearn/feature_selection/tests/test_rfe.pyt   <module>   s<   "				K			
		<