
    0Ph_                        d Z ddlmZ ddlZddlZddlmZ ddlm	Z	m
Z
mZ ddlmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ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"m#Z# ddl$m%Z%m&Z&m'Z' ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8  G d dee          Z9d Z:ej;        <                    de8          d             Z=d Z>d Z?d Z@ej;        <                    de8          d             ZAd ZBd  ZCd! ZDd" ZEd# ZFd$ ZGd% ZHd& ZIej;        <                    d' ed(          d(g          ej;        <                    d)ed*fed+fg          d,                         ZJej;        <                    d-d.eKfd/eLfd0 eLfg          ej;        <                    d1eeg          d2                         ZMej;        <                    d3dd*g          d4             ZNd5 ZOd6 ZPej;        <                    g d7d8d+d8 ejQ        g d9          gd8d*d8 ejQ        g d:          gd8d+d; ejQ        g d<          gd8d*d; ejQ        g d=          gd8d+d> ejQ        d8d+g          gd8d*d> ejQ        g d?          gd8d+d+ ejQ        d8d+g          gd8d*d+ ejQ        d8d*g          gd+d+d; ejQ        d+g          gd+d*d8 ejQ        d+d*g          gd+d*d; ejQ        d+d*g          gg          d@             ZRej;        <                    dAeeg          dB             ZSej;        <                    dAeeg          dC             ZTej;        <                    dAeeg          ej;        <                    dDeeeg          dE                         ZUdF ZVej;        <                    dGedHfedIfg          dJ             ZWdK ZXdL ZYdS )Mz'
Testing Recursive feature elimination
    )
attrgetterN)parallel_backend)assert_allcloseassert_array_almost_equalassert_array_equal)BaseEstimatorClassifierMixinis_classifier)TransformedTargetRegressor)CCAPLSCanonicalPLSRegression)	load_irismake_classificationmake_friedman1)RandomForestClassifier)RFERFECV)SimpleImputer)LinearRegressionLogisticRegression)
get_scorermake_scorerzero_one_loss)
GroupKFoldcross_val_score)make_pipeline)StandardScaler)SVCSVR	LinearSVR)check_random_state)ignore_warnings)CSR_CONTAINERSc                   X     e Zd ZdZddZd Zd ZeZeZeZ	ddZ
dd	Zd
 Z fdZ xZS )MockClassifierz@
    Dummy classifier to test recursive feature elimination
    r   c                     || _         d S N	foo_param)selfr*   s     h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/feature_selection/tests/test_rfe.py__init__zMockClassifier.__init__#   s    "    c                     t          |          t          |          k    sJ t          j        |j        d         t          j                  | _        t          t          |                    | _        | S )N   )dtype)	lennponesshapefloat64coef_sortedsetclasses_r+   Xys      r,   fitzMockClassifier.fit&   sU    1vvQWQWQZrz:::
s1vvr.   c                 @    t          j        |j        d                   S )Nr   )r3   r4   r5   )r+   Ts     r,   predictzMockClassifier.predict,   s    wqwqz"""r.   Nc                     dS )Ng         r;   s      r,   scorezMockClassifier.score3       sr.   Tc                     d| j         iS )Nr*   r)   )r+   deeps     r,   
get_paramszMockClassifier.get_params6   s    T^,,r.   c                     | S r(   rC   )r+   paramss     r,   
set_paramszMockClassifier.set_params9   s    r.   c                 `    t                                                      }d|j        _        |S )NT)super__sklearn_tags__
input_tags	allow_nan)r+   tags	__class__s     r,   rN   zMockClassifier.__sklearn_tags__<   s'    ww''))$(!r.   )r   )NN)T)__name__
__module____qualname____doc__r-   r>   rA   predict_probadecision_function	transformrD   rH   rK   rN   __classcell__)rR   s   @r,   r&   r&      s         # # # #  # # # MI   - - - -          r.   r&   c                  f   t          d          } t                      }t          j        |j        |                     t          |j                  df          f         }|j        }t          d| d          }t          |dd	          }|
                    ||           t          |j                  |j        d
         k    sJ t          d          }t          |dd	          }|
                    ||           t          |                                |                                           d S )Nr      size      )n_estimatorsrandom_state	max_depth   皙?	estimatorn_features_to_selectstepr0   linearkernel)r"   r   r3   c_datanormalr2   targetr   r   r>   ranking_r5   r   r   get_support)	generatoririsr<   r=   clfrfeclf_svcrfe_svcs           r,   test_rfe_features_importancery   B   s   "1%%I;;D 	di))DI/B)CCCDAA
 byTU
V
V
VC
!#
>
>
>CGGAqMMMs|
****"""GG!#FFFGKK1 s(('*=*=*?*?@@@@@r.   csr_containerc                 6   t          d          }t                      }t          j        |j        |                    t          |j                  df          f         } | |          }|j        }t          d          }t          |dd          }|
                    ||           |                    |          }|
                    ||           t          |j                  |j        d	         k    sJ t          d          }	t          |	dd          }
|

                    ||           |
                    |          }|j        |j        j        k    sJ t          |d d
         |j        d d
                    t          |                    |          |                    |j                             |                    ||          |                    |j        |j                  k    sJ t          ||                                           d S )Nr   r\   r]   rj   rk   rd   re   rf   r0   
   )r"   r   r3   rm   rn   ro   r2   rp   r   r   r>   rY   rq   r5   r   rA   rD   toarray)rz   rs   rt   r<   X_sparser=   ru   rv   X_r
clf_sparse
rfe_sparse
X_r_sparses               r,   test_rfer   W   s   "1%%I;;D 	di))DI/B)CCCDA}QHA X


C
!#
>
>
>CGGAqMMM
--

CGGCOOOs|
**** H%%%JzLLLJNN8Q%%h//J9	''''c#2#h	#2#777ckk!nnckk$).D.DEEE99Q??cii	4;??????c:#5#5#7#788888r.   c                      G d dt           t                    } t          d          \  }}t          j        t
          d          5  t           |                                           ||           d d d            n# 1 swxY w Y   t          j        t
          d          5  t           |                                           ||d	
                              ||           d d d            n# 1 swxY w Y   t           |                                           ||d	
                              ||d	
           d S )Nc                       e Zd ZddZddZdS )0test_RFE_fit_score_params.<locals>.TestEstimatorNc                     |t          d          t          d                              ||          | _        | j        j        | _        | S )Nfit: prop cannot be Nonerj   rk   )
ValueErrorr   r>   svc_r7   r+   r<   r=   props       r,   r>   z4test_RFE_fit_score_params.<locals>.TestEstimator.fit{   sH    | !;<<<8,,,00A66DIDJKr.   c                 Z    |t          d          | j                            ||          S )Nscore: prop cannot be None)r   r   rD   r   s       r,   rD   z6test_RFE_fit_score_params.<locals>.TestEstimator.score   s,    | !=>>>9??1a(((r.   r(   )rS   rT   rU   r>   rD   rC   r.   r,   TestEstimatorr   z   s<        	 	 	 		) 	) 	) 	) 	) 	)r.   r   T
return_X_yr   matchrg   r   foo)r   )	r   r	   r   pytestraisesr   r   r>   rD   )r   r<   r=   s      r,   test_RFE_fit_score_paramsr   w   s   ) ) ) ) ) ) ) ) %%%DAq	z)C	D	D	D 1 1mmoo&&&**1a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1	z)E	F	F	F I Immoo&&&**1ae*<<BB1aHHHI I I I I I I I I I I I I I I --//"""&&q!%&88>>q!%>PPPPPs%   -BBB'AC66C:=C:c                     t          d          } t                      }t          j        |j        |                     t          |j                  df          f         }|j        }t          d          }t          |dd          }|
                    ||           t          |d	d          }|
                    ||           t          |j        |j                   t          |j        |j                   d S )
Nr   r\   r]   rj   rk   rd   re   rf   g?)r"   r   r3   rm   rn   ro   r2   rp   r   r   r>   r   rq   support_)rs   rt   r<   r=   ru   rfe_numrfe_percs          r,   test_rfe_percent_n_featuresr      s    "1%%I;;D 	di))DI/B)CCCDAA
X


CCacBBBGKK1SsEEEHLLAx('*:;;;x('*:;;;;;r.   c                  
   t          d          } t                      }t          j        |j        |                     t          |j                  df          f         }|j        }t                      }t          |dd          }|
                    ||           |                    |          }|
                    ||           t          |j                  |j        d         k    sJ |j        |j        j        k    sJ d S )Nr   r\   r]   rd   re   rf   r0   )r"   r   r3   rm   rn   ro   r2   rp   r&   r   r>   rY   rq   r5   )rs   rt   r<   r=   ru   rv   r   s          r,   test_rfe_mockclassifierr      s    "1%%I;;D 	di))DI/B)CCCDAA 

C
!#
>
>
>CGGAqMMM
--

CGGCOOOs|
****9	''''''r.   c                 N	   t          d          }t                      }t          j        |j        |                    t          |j                  df          f         }t          |j                  }t          t          d          d          }|                    ||           |j                                        D ]-}t          |j        |                   |j        d         k    sJ .t          |j                  |j        d         k    sJ |                    |          }t#          ||j                   t          t          d          d          } | |          }	|                    |	|           |                    |	          }
t#          |
                                |j                   t'          t(          d	          }t          t          d          d|
          } t+          |j                  ||           |                    |          }t#          ||j                   t-          d          }t          t          d          d|
          }|                    ||           |                    |          }t#          ||j                   d }t          t          d          d|
          }|                    ||           |j        dk    sJ t          t          d          d          }|                    ||           |j                                        D ]"}t          |j        |                   dk    sJ #t          |j                  |j        d         k    sJ |                    |          }t#          ||j                   t          t          d          d          } | |          }	|                    |	|           |                    |	          }
t#          |
                                |j                   t          t          d          d          } | |          }	|                    |	|           |                    |	          }
t#          |
                                |j                   d S )Nr   r\   r]   rj   rk   r0   rg   ri   F)greater_is_better)rg   ri   scoringaccuracyc                     dS )Ng      ?rC   )rg   r<   r=   s      r,   test_scorerztest_rfecv.<locals>.test_scorer   rE   r.   r`   皙?)r"   r   r3   rm   rn   ro   r2   listrp   r   r   r>   cv_results_keysr5   rq   rY   r   r}   r   r   r#   r   n_features_)rz   rs   rt   r<   r=   rfecvkeyr   rfecv_sparser~   r   r   scorerr   s                 r,   
test_rfecvr      s^   "1%%I;;D 	di))DI/B)CCCDAT[A Cx000q999E	IIaOOO  %%'' 9 95$S)**agaj88888u~!'!*,,,,
//!

C sDI&&& 3h#7#7#7a@@@L}QHXq!!!''11Jz))++TY777 -5AAAGCx000q'JJJEOEIq!$$$
//!

CsDI&&& 
##FCx000q&IIIE	IIaOOO
//!

CsDI&&&   Cx000q+NNNE	IIaOOO !!!! Cx000q999E	IIaOOO %%'' 0 05$S)**a/////u~!'!*,,,,
//!

CsDI&&&3h#7#7#7a@@@L}QHXq!!!''11Jz))++TY777 3h#7#7#7cBBBL}QHXq!!!''11Jz))++TY77777r.   c                  (   t          d          } t                      }t          j        |j        |                     t          |j                  df          f         }t          |j                  }t          t                      d          }|                    ||           |j                                        D ]-}t          |j        |                   |j        d         k    sJ .t          |j                  |j        d         k    sJ d S )Nr   r\   r]   r0   r   )r"   r   r3   rm   rn   ro   r2   r   rp   r   r&   r>   r   r   r5   rq   )rs   rt   r<   r=   r   r   s         r,   test_rfecv_mockclassifierr     s    "1%%I;;D
di))DI/B)CCCDAT[A N,,1555E	IIaOOO  %%'' 9 95$S)**agaj88888u~!'!*,,,,,,r.   c                     dd l } ddlm}  |            | _        t	          d          }t                      }t          j        |j        |	                    t          |j                  df          f         }t          |j                  }t          t          d          dd          }|                    ||           | j        }|                    d           t          |                                          dk    sJ d S )	Nr   )StringIOr\   r]   rj   rk   r0   )rg   ri   verbose)sysior   stdoutr"   r   r3   rm   rn   ro   r2   r   rp   r   r   r>   seekreadline)r   r   rs   rt   r<   r=   r   verbose_outputs           r,   test_rfecv_verbose_outputr     s    JJJCJ"1%%I;;D
di))DI/B)CCCDAT[ACx000q!DDDE	IIaOOOZN~&&(())A------r.   c                    t          |           }t                      }t          j        |j        |                    t          |j                  df          f         }t          |j                  }ddgddgddgfD ]\  }}t          t                      ||          }|                    ||           t          j        |j        d         |z
  |z            dz   }|j                                        D ]"}	t          |j        |	                   |k    sJ #t          |j                  |j        d         k    sJ |j        |k    sJ d S )Nr\   r]   r`   r0      rg   ri   min_features_to_select)r"   r   r3   rm   rn   ro   r2   r   rp   r   r&   r>   ceilr5   r   r   rq   r   )
global_random_seedrs   rt   r<   r=   ri   r   r   	score_lenr   s
             r,   test_rfecv_cv_results_sizer   -  sc   "#566I;;D
di))DI/B)CCCDAT[A +,Q!Q!Q(@ ; ;$$$&&#9
 
 

 			!QGQWQZ*@@DHIIAM	$))++ 	< 	<Cu(-..);;;;;5>""agaj0000 $::::::; ;r.   c                      t          t          d                    } t          |           sJ t                      }t	          | |j        |j                  }|                                dk    sJ d S )Nrj   rk   gffffff?)r   r   r
   r   r   rn   rp   min)rv   rt   rD   s      r,   test_rfe_estimator_tagsr   F  sk    
c"""
#
#C;;DCDK88E99;;r.   c                    d}t          d||           \  }}|j        \  }}t          d          }t          |d          }|                    ||          }|j                                        |dz  k    sJ t          |d	          }|                    ||          }|j                                        |dz  k    sJ t          |d
          }|                    ||          }|j                                        |dz  k    sJ d S )Nr|   2   	n_samples
n_featuresrb   rj   rk   g{Gz?ri   r`   r      )r   r5   r    r   r>   r   sum)r   r   r<   r=   r   rg   selectorsels           r,   test_rfe_min_stepr   O  s)   J:L  DAq GIz8$$$I 94(((H
,,q!

C<q0000 94(((H
,,q!

C<q0000 91%%%H
,,q!

C<q000000r.   c                 4   d }d }ddg}ddg}ddg}t          |||          D ]\  }}}t          |           }	|	                    d|f          }
|	                    d                                          }t          t          d	          ||
          }|                    |
|           t          j	        |j
                   ||||          k    sJ t          j	        |j
                   ||||          k    sJ d}ddg}ddg}t          ||          D ]\  }}t          |           }	|	                    d|f          }
|	                    d                                          }t          t          d	          |          }|                    |
|           |j                                        D ]X}t          |j        |                    ||||          k    sJ t          |j        |                    ||||          k    sJ Yd S )Nc                 $    d| |z   |z
  dz
  |z  z   S Nr0   rC   r   rh   ri   s      r,   formula1z4test_number_of_subsets_of_features.<locals>.formula1p  s"    Z$&)==AdJKKr.   c                 V    dt          j        | |z
  t          |          z            z   S r   )r3   r   floatr   s      r,   formula2z4test_number_of_subsets_of_features.<locals>.formula2s  s(    27J)==tLMMMMr.      r   r`   d   r]   rj   rk   rf   r0   r|   r   )zipr"   ro   randroundr   r   r>   r3   maxrq   r   r   r   r2   )r   r   r   n_features_listn_features_to_select_list	step_listr   rh   ri   rs   r<   r=   rv   r   r   s                  r,   "test_number_of_subsets_of_featuresr   g  s   L L LN N N 2hO!"AAI252I3 3 X X.
($ ''9::	3
"344NN3%%''***!5
 
 

 	1vcl##xx
<PRV'W'WWWWWvcl##xx
<PRV'W'WWWWWW 2hOAI;;  
D&'9::	3
"344NN3%%''8 4 4 44@@@		!Q$))++ 	 	Cu(-..((0$3 3     u(-..((0$3 3     		 r.   c                    t          |           }t                      }t          j        |j        |                    t          |j                  df          f         }|j        }t          t          d                    }|
                    ||           |j        }|j        }|                    d           |
                    ||           t          |j        |           |                                |j                                        k    sJ |                                D ]-}||         t!          j        |j        |                   k    sJ .d S )Nr\   r]   rj   rk   r   r`   )n_jobs)r"   r   r3   rm   rn   ro   r2   rp   r   r   r>   rq   r   rK   r   r   r   approx)	r   rs   rt   r<   r=   r   rfecv_rankingrfecv_cv_results_r   s	            r,   test_rfe_cv_n_jobsr     sG   "#566I;;D
di))DI/B)CCCDAACx000111E	IIaOOONM)	A	IIaOOOenm<<<!!##u'8'='='?'????? %%'' O O %u7H7M)N)NNNNNNO Or.   c            	         t          d          } t                      }d}t          j        t          j        d|t          |j                                      }|j        }|j        dk                        t                    }t          t          |           ddt          d                    }|                    |||	           |j        dk    sJ d S )
Nr   rd   rb   r0   r   r`   )n_splits)rg   ri   r   cv)groups)r"   r   r3   floorlinspacer2   rp   rn   astypeintr   r   r   r>   r   )rs   rt   number_groupsr   r<   r=   
est_groupss          r,   test_rfe_cv_groupsr     s    "1%%I;;DMXbk!]C4D4DEEFFF	A	q  %%A(i@@@q!!!	  J NN1aN'''!A%%%%%%r.   importance_getterzregressor_.coef_zselector, expected_n_featuresr   rd   c                     t          ddd          \  }}t          d          }t          |t          j        t          j                  } |||           }|                    ||          }|j                                        |k    sJ d S )Nr   r|   r   r   r   	regressorfuncinverse_funcr   )	r   r!   r   r3   logexpr>   r   r   )r   r   expected_n_featuresr<   r=   rg   log_estimatorr   s           r,   test_rfe_wrapped_estimatorr    s     B2AFFFDAqq)))I."&rv  M x9JKKKH
,,q!

C<!4444444r.   zimportance_getter, err_typeautorandomc                     | j         S r(   )
importance)xs    r,   <lambda>r    s    1< r.   Selectorc                 8   t          ddd          \  }}t                      }t          |t          j        t          j                  }t          j        |          5   |||           }|                    ||           d d d            d S # 1 swxY w Y   d S )Nr   r|   *   r   r   r   )	r   r!   r   r3   r   r   r   r   r>   )r   err_typer	  r<   r=   rg   r  models           r,   %test_rfe_importance_getter_validationr    s     B2BGGGDAqI."&rv  M 
x	 	   :KLLL		!Q                 s   $BBBr   c                 L   t                      }|j        }|j        }t          j        |d         d<   t          j        |d         d<   t                      }| t          ||           }nt          |          }|	                    ||           |
                    |           d S )Nr   r0   )rg   r   r   )r   rn   rp   r3   naninfr&   r   r   r>   rY   )r   rt   r<   r=   ru   rv   s         r,   test_rfe_allow_nan_inf_in_xr    s    ;;D	AA fAaDGfAaDG


C	~cb)))C   GGAqMMMMM!r.   c                     t          t                      t                                } t          d          \  }}t	          | dd          }|                    ||           |                    |          j        d         dk    sJ d S )NTr   r`   $named_steps.logisticregression.coef_)rh   r   r0   )r   r   r   r   r   r>   rY   r5   )pipelinern   r=   sfms       r,   test_w_pipeline_2d_coef_r  
  s    ^--/A/C/CDDH4(((GD!
@  C GGD!==$Q'1,,,,,,r.   c                   	 t          |           }t                      }t          j        |j        |                    t          |j                  df          f         }|j        }t          t          d                    		
                    ||           d 	j                                        D             }t          j        	fd|D                       }t          j        |d	          }t          j        |d	          }t!          	j        d
         |           t!          	j        d         |           d S )Nr\   r]   rj   rk   r   c                     g | ]}d |v |	S )splitrC   ).0r   s     r,   
<listcomp>z+test_rfecv_std_and_mean.<locals>.<listcomp>   s    LLL#W^^#^^^r.   c                 *    g | ]}j         |         S rC   )r   )r  r   r   s     r,   r  z+test_rfecv_std_and_mean.<locals>.<listcomp>!  s!    IIIsE-c2IIIr.   r   axismean_test_scorestd_test_score)r"   r   r3   rm   rn   ro   r2   rp   r   r   r>   r   r   asarraymeanstdr   )
r   rs   rt   r<   r=   
split_keys	cv_scoresexpected_meanexpected_stdr   s
            @r,   test_rfecv_std_and_meanr)    s$   "#566I;;D
di))DI/B)CCCDAACx000111E	IIaOOOLL!2!7!7!9!9LLLJ
IIIIjIIIJJIGIA...M6)!,,,LE%&78-HHHE%&67FFFFFr.   )r   r   ri   cv_results_n_featuresr0   )r0   r`   r   rd   )r0   r`   r   rd   r   r`   )r0   r`   rd   )r0   r   r   r   )r0   r`   r   c                 >   t          d||d          \  }}t          t          d          ||                               ||           t	          j        d         |           t          fdj                                        D                       sJ d S )	Nr_   r   )r   r   n_informativen_redundantrj   rk   r   r   c              3   n   K   | ]/}t          |          t          j        d                    k    V  0dS )r   N)r2   r   )r  valuer   s     r,   	<genexpr>z3test_rfecv_cv_results_n_features.<locals>.<genexpr>I  sR         	E

c%+L9:::     r.   )r   r   r   r>   r   r   allvalues)r   r   ri   r*  r<   r=   r   s         @r,    test_rfecv_cv_results_n_featuresr3  )  s    , :ST  DAq X&&&5  E
 
IIaOOOu(68MNNN    &--//         r.   ClsRFEc                     t           j                            d          }t           j                            dd          }t	          d          } | |          }|                    ||           d S )N)r|   r   r]   r`   )r|   r`   r   )ra   )r3   r  ro   randintr   r>   )r4  r<   r=   ru   rfe_tests        r,   test_multioutputr8  O  sk    
	g&&A
	!'**A
 a
0
0
0Cvc{{HLLAr.   c                     t          d          \  }}t          j        |d<   t          t	                      t                      t                                } | |d          }|                    ||           dS )z`Check that RFE works with pipeline that accept nans.

    Non-regression test for gh-21743.
    Tr   )r   r   r  )rg   r   N)r   r3   r  r   r   r   r   r>   )r4  r<   r=   pipefss        r,   test_pipeline_with_nansr<  X  s     %%%DAqfAdG D 
@
 
 
B FF1aLLLLLr.   PLSEstimatorc                     t          ddd          \  }} |d          } | |d                              ||          }|                    ||          dk    sJ d	S )
zCheck the behaviour of RFE with PLS estimators.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/12410
    r   r|   r   r   r0   )n_componentsr   g      ?N)r   r>   rD   )r4  r=  r<   r=   rg   r   s         r,   test_rfe_plsr@  n  sw     B2AFFFDAq!,,,Ivia(((,,Q22H>>!Q#%%%%%%r.   c                     t                      } t          t                                }d}d}t          j        t
          |          5 }|                    | j        | j                  	                    | j                   ddd           n# 1 swxY w Y   t          |j        j        t
                    sJ |t          |j        j                  v sJ dS )a  Check that we raise the proper AttributeError when the estimator
    does not implement the `decision_function` method, which is decorated with
    `available_if`.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/28108
    r   z/This 'RFE' has no attribute 'decision_function'z>'LinearRegression' object has no attribute 'decision_function'r   N)r   r   r   r   r   AttributeErrorr>   rn   rp   rX   
isinstancer/  	__cause__str)rt   rv   	outer_msg	inner_msg	exec_infos        r,   "test_rfe_estimator_attribute_errorrI  |  s    ;;D (**
+
+
+CAIPI	~Y	7	7	7 E9	4;''99$)DDDE E E E E E E E E E E E E E Eio/@@@@@IO566666666s   
9BBBzClsRFE, paramrh   r   c                     t          dd          \  }}t          j        t          | d          5   | d	dt	                      i|di}|                    ||           ddd           dS # 1 swxY w Y   dS )
zCheck if the correct warning is raised when trying to initialize a RFE
    object with a n_features_to_select attribute larger than the number of
    features present in the X variable that is passed to the fit method
    r_   r   )r   rb   z=21 > n_features=20r   rg      NrC   )r   r   warnsUserWarningr   r>   )r4  paramr<   r=   clsrfes        r,   %test_rfe_n_features_to_select_warningrP    s     "1===DAq	kE)F)F)F	G	G	G   FF"4"6"6F5"+FF

1a	                 s   /A//A36A3c                     t          d          \  } }| j        d         }t          j        |          }d|d|dz  <   t          j        | | d|dz           gd          }t          j        ||d|dz           g          }t          d          }t          |d	          }|                    | ||
           t          |d	          }|                    ||           t          |j	        |j	                   t          |d	          }	t          j        |          }
|	                    | ||

           t          j
        |	j	        |j	                  rJ dS )z4Test that `RFE` works correctly with sample weights.r   r   r`   Nr  rj   rk   re   r   )sample_weight)r   r5   r3   	ones_likeconcatenater   r   r>   r   rq   array_equal)r<   r=   r   rR  X2y2rg   rfe_swrv   rfe_sw_2sample_weight_2s              r,   test_rfe_with_sample_weightr[    s^   A...DAq
I LOOM&'M"IN"# 
A.	Q./0q	9	9	9B	A.	Q./0	1	1B8$$$I93///F
JJq!=J111
	
,
,
,CGGBOOOv555 YS111Hl1ooOLLA_L555~h/>>>>>>>r.   c                 H   t          |           \  }}t                      }t          |d          }|                    ||           |j        }t          d          5  |                    ||           d d d            n# 1 swxY w Y   t          ||j                   d S )Nr   r`   )rg   r   	threading)r   r   r   r>   rq   r   r   )r   r<   r=   ru   rv   ranking_refs         r,   &test_rfe_with_joblib_threading_backendr_    s    ,>???DAq


C
  C
 GGAqMMM,K	+	&	&  1               {CL11111s   BB	B)ZrV   operatorr   numpyr3   r   joblibr   numpy.testingr   r   r   sklearn.baser   r	   r
   sklearn.composer   sklearn.cross_decompositionr   r   r   sklearn.datasetsr   r   r   sklearn.ensembler   sklearn.feature_selectionr   r   sklearn.imputer   sklearn.linear_modelr   r   sklearn.metricsr   r   r   sklearn.model_selectionr   r   sklearn.pipeliner   sklearn.preprocessingr   sklearn.svmr   r    r!   sklearn.utilsr"   sklearn.utils._testingr#   sklearn.utils.fixesr$   r&   ry   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rB  r  r  r  r)  arrayr3  r8  r<  r@  rI  rP  r[  r_  rC   r.   r,   <module>rw     s                # # # # # # X X X X X X X X X X F F F F F F F F F F 6 6 6 6 6 6 H H H H H H H H H H K K K K K K K K K K 3 3 3 3 3 3 0 0 0 0 0 0 0 0 ( ( ( ( ( ( E E E E E E E E B B B B B B B B B B ? ? ? ? ? ? ? ? * * * * * * 0 0 0 0 0 0 + + + + + + + + + + , , , , , , 2 2 2 2 2 2 . . . . . .! ! ! ! !_m ! ! !HA A A* .999 9 :99>Q Q Q2< < <(( ( ($ .99N8 N8 :9N8b- - -". . .(; ; ;2  1 1 10> > >BO O O*& & &$ **%788:LM  8C8eQZ:PQQ5 5 RQ 5 !		>"		0  c5\22	 	 32 	 ay))  *)$- - -G G G" MMM	
Aq("(<<<(()	
Aq("(???++,	
Aq("(999%%&	
Aq("(999%%&	
Aq("(Aq6""#	
Aq("(999%%&	
Aq("(Aq6""#	
Aq("(Aq6""#	
Aq("(A3-- 	
Aq("(Aq6""#	
Aq("(Aq6""#   !  , C<00  10 C<00  10* C<00#|])KLL	& 	& ML 10	&7 7 7, s23e=U5VW   ? ? ?B2 2 2 2 2r.   