
    e!h_                     j   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jv                  jy                  de8      d        Z=d Z>d Z?d Z@ejv                  jy                  de8      d        ZAd ZBd  ZCd! ZDd" ZEd# ZFd$ ZGd% ZHd& ZIejv                  jy                  d' ed(      d(g      ejv                  jy                  d)ed*fed+fg      d,               ZJejv                  jy                  d-d.eKfd/eLfd0 eLfg      ejv                  jy                  d1eeg      d2               ZMejv                  jy                  d3dd*g      d4        ZNd5 ZOd6 ZPejv                  jy                  g d7d8d+d8 ej                  g d9      gd8d*d8 ej                  g d:      gd8d+d; ej                  g d<      gd8d*d; ej                  g d=      gd8d+d> ej                  d8d+g      gd8d*d> ej                  g d?      gd8d+d+ ej                  d8d+g      gd8d*d+ ej                  d8d*g      gd+d+d; ej                  d+g      gd+d*d8 ej                  d+d*g      gd+d*d; ej                  d+d*g      gg      d@        ZRejv                  jy                  dAeeg      dB        ZSejv                  jy                  dAeeg      dC        ZTejv                  jy                  dAeeg      ejv                  jy                  dDeeeg      dE               ZUdF ZVejv                  jy                  dGedHfedIfg      dJ        ZWdK ZXdL ZYy)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
    c                     || _         y N	foo_param)selfr*   s     p/var/www/html/diagnosisapp-backend/venv/lib/python3.12/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&   sJ    1vQWWQWWQZrzz:
s1vr.   c                 F    t        j                  |j                  d         S )Nr   )r3   r4   r5   )r+   Ts     r,   predictzMockClassifier.predict,   s    wwqwwqz""r.   c                      y)Ng         r;   s      r,   scorezMockClassifier.score3       r.   c                     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                 F    t         |          }d|j                  _        |S )NT)super__sklearn_tags__
input_tags	allow_nan)r+   tags	__class__s     r,   rN   zMockClassifier.__sklearn_tags__<   s!    w')$(!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&      sB    ## MI- r.   r&   c                      t        d      } t               }t        j                  |j                  | j                  t        |j                        df      f   }|j                  }t        d| d      }t        |dd	      }|j                  ||       t        |j                        |j                  d
   k(  sJ t        d      }t        |dd	      }|j                  ||       t        |j                         |j                                y )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 	dii))DII/B)CCDAA
 byTU
VC
!#
>CGGAqMs||
***"GG!#FGKK1 s('*=*=*?@r.   csr_containerc                    t        d      }t               }t        j                  |j                  |j                  t        |j                        df      f   } | |      }|j                  }t        d      }t        |dd      }|j                  ||       |j                  |      }|j                  ||       t        |j                        |j                  d	   k(  sJ t        d      }	t        |	dd      }
|
j                  ||       |
j                  |      }|j                  |j                  j                  k(  sJ t        |d d
 |j                  d d
        t        |j                  |      |j                  |j                               |j!                  ||      |j!                  |j                  |j                        k(  sJ t        ||j#                                y )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 	dii))DII/B)CCDAQHA X
C
!#
>CGGAqM
--
CGGCOs||
*** H%JzLJNN8Q%%h/J99		'''c#2h		#27ckk!nckk$)).DE99Q?cii		4;;????c:#5#5#78r.   c                      G d dt         t              } t        d      \  }}t        j                  t
        d      5  t         |              j                  ||       d d d        t        j                  t
        d      5  t         |              j                  ||d	
      j                  ||       d d d        t         |              j                  ||d	
      j                  ||d	
       y # 1 sw Y   xY w# 1 sw Y   KxY w)Nc                       e Zd ZddZddZy)0test_RFE_fit_score_params.<locals>.TestEstimatorNc                     |t        d      t        d      j                  ||      | _        | 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{   s@    | !;<<8,00A6DIDJKr.   c                 T    |t        d      | j                  j                  ||      S )Nscore: prop cannot be None)r   r   rD   r   s       r,   rD   z6test_RFE_fit_score_params.<locals>.TestEstimator.score   s(    | !=>>99??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 1mo&**1a01	z)E	F Imo&**1ae*<BB1aHI -/"&&q!%&8>>q!%>P1 1I Is   "C64D6C?Dc                     t        d      } t               }t        j                  |j                  | j                  t        |j                        df      f   }|j                  }t        d      }t        |dd      }|j                  ||       t        |d	d      }|j                  ||       t        |j                  |j                         t        |j                  |j                         y )
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 	dii))DII/B)CCDAA
X
CCacBGKK1SsEHLLAx(('*:*:;x(('*:*:;r.   c                      t        d      } t               }t        j                  |j                  | j                  t        |j                        df      f   }|j                  }t               }t        |dd      }|j                  ||       |j                  |      }|j                  ||       t        |j                        |j                  d   k(  sJ |j                  |j                  j                  k(  sJ y )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 	dii))DII/B)CCDAA 
C
!#
>CGGAqM
--
CGGCOs||
***99		'''r.   c                 6   t        d      }t               }t        j                  |j                  |j                  t        |j                        df      f   }t        |j                        }t        t        d      d      }|j                  ||       |j                  j                         D ],  }t        |j                  |         |j                  d   k(  r,J  t        |j                        |j                  d   k(  sJ |j!                  |      }t#        ||j                         t        t        d      d      } | |      }	|j                  |	|       |j!                  |	      }
t#        |
j%                         |j                         t'        t(        d	      }t        t        d      d|
      } t+        |j                        ||       |j!                  |      }t#        ||j                         t-        d      }t        t        d      d|
      }|j                  ||       |j!                  |      }t#        ||j                         d }t        t        d      d|
      }|j                  ||       |j.                  dk(  sJ t        t        d      d      }|j                  ||       |j                  j                         D ]  }t        |j                  |         dk(  rJ  t        |j                        |j                  d   k(  sJ |j!                  |      }t#        ||j                         t        t        d      d      } | |      }	|j                  |	|       |j!                  |	      }
t#        |
j%                         |j                         t        t        d      d      } | |      }	|j                  |	|       |j!                  |	      }
t#        |
j%                         |j                         y )Nr   r\   r]   rj   rk   r0   rg   ri   F)greater_is_better)rg   ri   scoringaccuracyc                      y)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      sd   "1%I;D 	dii))DII/B)CCDAT[[A Cx0q9E	IIaO   %%' 95$$S)*aggaj8889 u~~!''!*,,,
//!
C sDII& 3h#7a@LQHXq!''1Jz))+TYY7 -5AGCx0q'JEOEIIq!$
//!
CsDII& 
#FCx0q&IE	IIaO
//!
CsDII& Cx0q+NE	IIaO !!! Cx0q9E	IIaO  %%' 05$$S)*a///0 u~~!''!*,,,
//!
CsDII&3h#7a@LQHXq!''1Jz))+TYY7 3h#7cBLQHXq!''1Jz))+TYY7r.   c                     t        d      } t               }t        j                  |j                  | j                  t        |j                        df      f   }t        |j                        }t        t               d      }|j                  ||       |j                  j                         D ],  }t        |j                  |         |j                  d   k(  r,J  t        |j                        |j                  d   k(  sJ y )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
dii))DII/B)CCDAT[[A N,15E	IIaO   %%' 95$$S)*aggaj8889 u~~!''!*,,,r.   c                     dd l } ddlm}  |       | _        t	        d      }t               }t        j                  |j                  |j                  t        |j                        df      f   }t        |j                        }t        t        d      dd      }|j                  ||       | j                  }|j!                  d       t        |j#                               dkD  sJ y )	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    CJ"1%I;D
dii))DII/B)CCDAT[[ACx0q!DE	IIaOZZN~&&()A---r.   c                    t        |       }t               }t        j                  |j                  |j                  t        |j                        df      f   }t        |j                        }ddgddgddgfD ]  \  }}t        t               ||      }|j                  ||       t        j                  |j                  d   |z
  |z        dz   }|j                  j                         D ]  }	t        |j                  |	         |k(  rJ  t        |j                         |j                  d   k(  sJ |j"                  |k\  rJ  y )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   -  s;   "#56I;D
dii))DII/B)CCDAT[[A +,Q!Q!Q(@ ;$$$&#9

 			!QGGQWWQZ*@@DHIAM	$$))+ 	<Cu((-.);;;	< 5>>"aggaj000  $::::;r.   c                      t        t        d            } t        |       sJ t               }t	        | |j
                  |j                        }|j                         dkD  sJ y )Nrj   rk   gffffff?)r   r   r
   r   r   rn   rp   min)rv   rt   rD   s      r,   test_rfe_estimator_tagsr   F  sP    
c"
#C;DCDKK8E99;r.   c                    d}t        d||       \  }}|j                  \  }}t        d      }t        |d      }|j	                  ||      }|j
                  j                         |dz  k(  sJ t        |d	      }|j	                  ||      }|j
                  j                         |dz  k(  sJ t        |d
      }|j	                  ||      }|j
                  j                         |dz  k(  sJ y )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 GGIz8$I 94(H
,,q!
C<<q000 94(H
,,q!
C<<q000 91%H
,,q!
C<<q000r.   c                    d }d }ddg}ddg}ddg}t        |||      D ]  \  }}}t        |       }	|	j                  d|f      }
|	j                  d      j	                         }t        t        d	      ||
      }|j                  |
|       t        j                  |j                         ||||      k(  sJ t        j                  |j                         ||||      k(  rJ  d}ddg}ddg}t        ||      D ]  \  }}t        |       }	|	j                  d|f      }
|	j                  d      j	                         }t        t        d	      |      }|j                  |
|       |j                  j                         D ]L  }t        |j                  |          ||||      k(  sJ t        |j                  |          ||||      k(  rLJ   y )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                 P    dt        j                  | |z
  t        |      z        z   S r   )r3   r   floatr   s      r,   formula2z4test_number_of_subsets_of_features.<locals>.formula2s  s%    277J)==tL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N 2hO!"AAI252I3 X.
($ ''9:	3
"34NN3%%'*!5

 	1vvcll#x
<PRV'WWWWvvcll#x
<PRV'WWWWX2 2hOAI; 
D&'9:	3
"34NN3%%'8 44@		!Q$$))+ 	Cu((-.(0$3    u((-.(0$3   		r.   c                    t        |       }t               }t        j                  |j                  |j                  t        |j                        df      f   }|j                  }t        t        d            }|j                  ||       |j                  }|j                  }|j                  d       |j                  ||       t        |j                  |       |j                         |j                  j                         k(  sJ |j                         D ],  }||   t!        j"                  |j                  |         k(  r,J  y )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     s   "#56I;D
dii))DII/B)CCDAACx01E	IIaONNM))	A	IIaOennm<!!#u'8'8'='='???? %%' O %u7H7H7M)NNNNOr.   c            	         t        d      } t               }d}t        j                  t        j                  d|t        |j                                    }|j                  }|j                  dkD  j                  t              }t        t        |       ddt        d            }|j                  |||	       |j                  dkD  sJ y )
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XXbkk!]C4DE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                  ||      }|j                  j                         |k(  sJ y )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    st     B2AFDAqq)I."&&rvvM 9JKH
,,q!
C<<!4444r.   zimportance_getter, err_typeautorandomc                     | j                   S r(   )
importance)xs    r,   <lambda>r    s
    1<< r.   Selectorc                    t        ddd      \  }}t               }t        |t        j                  t        j
                        }t        j                  |      5   |||       }|j                  ||       d d d        y # 1 sw Y   y xY w)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    ss     B2BGDAqI."&&rvvM 
x	  :KL		!Q  s   BB
r   c                 2   t               }|j                  }|j                  }t        j                  |d   d<   t        j
                  |d   d<   t               }| t        ||       }nt        |      }|j                  ||       |j                  |       y )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 ffAaDGffAaDG

C	~cb)C GGAqMMM!r.   c                      t        t               t                     } t        d      \  }}t	        | dd      }|j                  ||       |j                  |      j                  d   dk(  sJ y )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  
  sh    ^-/A/CDH4(GD!
@C GGD!==$$Q'1,,,r.   c                    t        |       }t               }t        j                  |j                  |j                  t        |j                        df      f   }|j                  }t        t        d            }|j                  ||       |j                  j                         D cg c]	  }d|v s| }}t        j                  |D cg c]  }|j                  |    c}      }t        j                  |d      }	t        j                  |d      }
t!        |j                  d	   |	       t!        |j                  d
   |
       y c c}w c c}w )Nr\   r]   rj   rk   r   splitr   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=   r   r   
split_keys	cv_scoresexpected_meanexpected_stds              r,   test_rfecv_std_and_meanr%    s   "#56I;D
dii))DII/B)CCDAACx01E	IIaO!&!2!2!7!7!9L#W^#LJL

jIsE--c2IJIGGIA.M66)!,LE%%&78-HE%%&67F MIs   *	E4EE)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      ||       j                  ||       t	        j
                  d   |       t        fdj
                  j                         D              sJ y )	Nr_   r   )r   r   n_informativen_redundantrj   rk   r   r   c              3   f   K   | ](  }t        |      t        j                  d          k(   * yw)r   N)r2   r   ).0valuer   s     r,   	<genexpr>z3test_rfecv_cv_results_n_features.<locals>.<genexpr>I  s2       	E
c%++L9::s   .1)r   r   r   r>   r   r   allvalues)r   r   ri   r&  r<   r=   r   s         @r,    test_rfecv_cv_results_n_featuresr0  )  s    , :STDAq X&5E
 
IIaOu((68MN &&--/   r.   ClsRFEc                     t         j                  j                  d      }t         j                  j                  dd      }t	        d      } | |      }|j                  ||       y )N)r|   r   r]   r`   )r|   r`   r   )ra   )r3   r  ro   randintr   r>   )r1  r<   r=   ru   rfe_tests        r,   test_multioutputr5  O  sS    
		g&A
		!'*A
 a
0Cc{HLLAr.   c                     t        d      \  }}t        j                  |d<   t        t	               t               t                     } | |d      }|j                  ||       y)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>   )r1  r<   r=   pipefss        r,   test_pipeline_with_nansr9  X  s[     %DAqffAdGD 
@
B FF1aLr.   PLSEstimatorc                     t        ddd      \  }} |d      } | |d      j                  ||      }|j                  ||      dkD  sJ y	)
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   )r1  r:  r<   r=   rg   r   s         r,   test_rfe_plsr=  n  sR     B2AFDAq!,Iia(,,Q2H>>!Q#%%%r.   c                     t               } t        t                     }d}d}t        j                  t
        |      5 }|j                  | j                  | j                        j                  | j                         ddd       t        j                  j                  t
              sJ |t        |j                  j                        v sJ y# 1 sw Y   SxY w)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_errorrF  |  s     ;D (*
+CAIPI	~Y	7 E9		4;;'99$))DEioo//@@@IOO556666E Es   A CCzClsRFE, paramrh   r   c                     t        dd      \  }}t        j                  t        | d      5   | d	dt	               i|di}|j                  ||       ddd       y# 1 sw Y   yxY w)
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>   )r1  paramr<   r=   clsrfes        r,   %test_rfe_n_features_to_select_warningrM    si     "1=DAq	kE72E)F	G  F"4"6F5"+F

1a	  s   'AA(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	      }|j                  | ||
       t        |d	      }|j                  ||       t        |j                  |j                         t        |d	      }	t        j                  |      }
|	j                  | ||

       t        j                  |	j                  |j                        rJ y)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   rO  X2y2rg   rfe_swrv   rfe_sw_2sample_weight_2s              r,   test_rfe_with_sample_weightrX    s    A.DAq
I LLOM&'M"IN# 
A.	Q/0q	9B	A.	Q/0	1B8$I93/F
JJq!=J1
	
,CGGBOv5 YS1Hll1oOLLA_L5~~h//>>>>r.   c                    t        |       \  }}t               }t        |d      }|j                  ||       |j                  }t        d      5  |j                  ||       d d d        t        ||j                         y # 1 sw Y    xY w)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
 GGAqM,,K	+	& 1 {CLL1 s   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   r?  r  r  r  r%  arrayr0  r5  r9  r=  rF  rM  rX  r\  rC   r.   r,   <module>rt     s       # X X F F 6 H H K K 3 0 ( E B B ? * 0 + + , 2 .!_m !HA* .99 :9>Q2<(($ .9N8 :N8b-".(;210>BO*&$ *%78:LM 8C8eQZ:PQ5 R5 !		>"	0 c5\2	 3	 ay) *$-G" M	
Aq("((<()	
Aq("((?+,	
Aq("((9%&	
Aq("((9%&	
Aq("((Aq6"#	
Aq("((9%&	
Aq("((Aq6"#	
Aq("((Aq6"#	
Aq("((A3- 	
Aq("((Aq6"#	
Aq("((Aq6"# ! , C<0 1 C<0 1* C<0#|])KL	& M 1	&7, s23e=U5VW?B2r.   