
    -i~                        S r SSKrSSKrSSKrSSKrSSKJr  SSKJ	r	J
r
  SSKJrJrJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJr  SSKJr  SSKJ r J!r!J"r"J#r#J$r$  SS	K%J&r&  S
 r'S r(\RR                  RU                  S\&5      S 5       r+\RR                  RU                  SSS/5      S 5       r,\RR                  RU                  S\&5      S 5       r-S r.S r/\RR                  RU                  S\R`                  " SS/SS/SS/SS//5      \R`                  " / SQ5      \R`                  " SS/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S Q5      \R`                  " SS/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / SQ5      \R`                  " \Rb                  S/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S Q5      \R`                  " \Rb                  \Rb                  /5      S4/5      S! 5       r2\RR                  RU                  S"\R`                  " SS/SS/SS/SS//5      \R`                  " / SQ5      \R`                  " SS#/5      \R`                  " S$S%/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S Q5      \R`                  " SS/5      \R`                  " S$S$/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S&Q5      \R`                  " \Rf                  " \Rh                  5      Rj                  S'/5      \R`                  " SS(/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S&Q5      \R`                  " \Rf                  " \Rh                  5      Rj                  S'/5      \R`                  " SS(/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / SQ5      \R`                  " \Rb                  S#/5      \R`                  " \Rb                  S%/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S Q5      \R`                  " \Rb                  \Rb                  /5      \R`                  " \Rb                  \Rb                  /5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S&Q5      \R`                  " \Rl                  S'/5      \R`                  " SS(/5      S4\R`                  " SS/SS/SS/SS//5      \R`                  " / S&Q5      \R`                  " \Rl                  S'/5      \R`                  " SS(/5      S4/5      S) 5       r7S* r8S+ r9\RR                  RU                  S\&5      S, 5       r:S- r;S. r<\RR                  RU                  S/\Rz                  \Rh                  /5      S0 5       r>S1 r?S2 r@S3 rAS4 rBS5 rCS6 rDS7 rE\RR                  RU                  S8/ S9Q5      \RR                  RU                  S:/ S;Q5      S< 5       5       rFS= rGS> rHS? rIS@ rJSA rKSB rLSC rMSD rNSE rOSF rPSG rQSH rRSI rS\RR                  RU                  SJ\" SSK9\" SLSM9\" SNSSO9\" SPSLSO9/5      SQ 5       rTg)Rz0
Todo: cross-check the F-value with stats model
    N)assert_allclose)sparsestats)	load_irismake_classificationmake_regression)GenericUnivariateSelect	SelectFdr	SelectFpr	SelectFweSelectKBestSelectPercentilechi2	f_classiff_onewayf_regressionmutual_info_classifmutual_info_regressionr_regression)	safe_mask)_convert_containerassert_almost_equalassert_array_almost_equalassert_array_equalignore_warnings)CSR_CONTAINERSc                  N   [         R                  R                  S5      n U R                  SS5      nSU R                  SS5      -   n[        R
                  " X5      u  p4[        X5      u  pV[         R                  " X55      (       d   e[         R                  " XF5      (       d   eg )Nr   
         )nprandomRandomStaterandnr   r   allclose)rngX1X2fpvf2pv2s          f/var/www/html/venv/lib/python3.13/site-packages/sklearn/feature_selection/tests/test_feature_select.pytest_f_oneway_vs_scipy_statsr.   +   s    
))


"C	2q	B	
SYYr1	BNN2"EArGB;;q;;r    c                     [         R                  R                  S5      n U R                  SSS9n[         R                  " S5      n[        X5      u  p4[        UR                  [        5      U5      u  pV[        XSSS9  [        XdSS9  g )Nr   r   )r   r   size   decimal)	r!   r"   r#   randintaranger   astypefloatr   )r&   Xyfintpintr)   ps          r-   test_f_oneway_intsr?   6   sn     ))


"CBX&A
		"A!JD AHHUOQ'DAaq1aq1r/   csr_containerc                    [        SSSSSSSSS	S
SS9u  p[        X5      u  p4[        U " U5      U5      u  pVUS:  R                  5       (       d   eUS:  R                  5       (       d   eUS:  R                  5       (       d   eUS S S:  R                  5       (       d   eUSS  S:  R                  5       (       d   e[        XS5        [        Xd5        g N      r      r      r            r   F	n_samples
n_featuresn_informativen_redundant
n_repeated	n_classesn_clusters_per_classflip_y	class_sepshufflerandom_state   皙?-C6?)r   r   allr   r@   r:   r;   Fr*   F_sparse	pv_sparses          r-   test_f_classifr\   D   s     DA aOEA#M!$4a8HE;;===F<<>>>F<<>>>rFTM    qrFVO  """"h*i,r/   centerTFc                    [        SSSSSS9u  p[        XU S9nSU:  R                  5       (       d   eUS	:  R                  5       (       d   e[        US
5      n[        XBU S9n[	        XS5        [
        R                  " XS S 2[
        R                  4   45      n[
        R                  " USS9nUS S2S4   n[        XSS9  g )Ni  rD   rT   Fr   rI   rJ   rK   rR   rS   r]   r    r   )rowvarr   r4   )
r   r   rW   r   r   r!   hstacknewaxiscorrcoefr   )	r]   r:   r;   corr_coeffssparse_Xsparse_corr_coeffsZcorrelation_matrixnp_corr_coeffss	            r-   test_r_regressionrl   a   s    2QTUDA qF3K!!####!O  """"!!X.H%h&A&4 			12::&'(AQu5'R0Nn1Er/   c                     [        SSSSSS9u  p[        X5      u  p4US:  R                  5       (       d   eUS:  R                  5       (       d   eUS:  R                  5       (       d   eUS S S:  R                  5       (       d   eUSS  S	:  R                  5       (       d   e[        XS
S9u  p4[        U " U5      US
S9u  pV[        XS5        [        Xd5        [        XSS9u  p4[        U " U5      USS9u  pV[        XS5        [        Xd5        g )NrC   rD   rT   Fr   r_   r    rU   rV   Tr`   )r   r   rW   r   rX   s          r-   test_f_regressionrn   w   s    "AuSTDA EAE;;===F<<>>>F<<>>>rFTM    qrFVO  """" d+EA&}Q'74HHH I" e,EA&}Q'75IHH I"r/   c                  B   [         R                  R                  S5      n U R                  SS5      n[         R                  " S5      R                  [        5      n[        X5      u  p4[        XR                  [        5      5      u  pV[        X5S5        [        XFS5        g )Nr   r   rD   rT   )
r!   r"   r#   randr7   r8   intr   r9   r   )r&   r:   r;   F1pv1F2r,   s          r-   test_f_regression_input_dtyperu      st     ))


"CRA
		"S!A1 GB1hhuo.GBBACa r/   c                  <   [         R                  " SS5      R                  SS5      n U R                  n[         R                  " U5      nUS S S2==   S-  ss'   SUS'   [        XS	S
9u  p4[        XSS
9u  pT[        X1S-
  -  US-
  -  U5        [        US   S5        g )N   ra   r    rE   g      rG   r   Tr`   F      ?       @g@9w?)r!   r7   reshaper2   onesr   r   r   )r:   rI   Yrr   _rt   s         r-   test_f_regression_centerr      s    
 			"a  Q'AI
	AccFdNFAaDd+EBe,EBBc/*i#o>C1{+r/   z&X, y, expected_corr_coef, force_finiterE   r    r   r3   )r   r    r    r   rG   gI+?rT   r   rF   )r   r   r   r   c                     [         R                  " 5          [         R                  " S[        5        [	        XUS9nSSS5        [
        R                  R                  WU5        g! , (       d  f       N/= f)zCheck the behaviour of `force_finite` for some corner cases with `r_regression`.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/15672
errorforce_finiteN)warningscatch_warningssimplefilterRuntimeWarningr   r!   testingr   )r:   r;   expected_corr_coefr   	corr_coefs        r-   test_r_regression_force_finiter      sR    N 
	 	 	"g~6 LA	 
# JJ((4FG 
#	"s   &A%%
A3z;X, y, expected_f_statistic, expected_p_values, force_finiteg
[?ry   gSr.j?)r   r    rE   r   g?gajK?c                 0   [         R                  " 5          [         R                  " S[        5        [	        XUS9u  pVSSS5        [
        R                  R                  WU5        [
        R                  R                  WU5        g! , (       d  f       NO= f)zCheck the behaviour of `force_finite` for some corner cases with `f_regression`.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/15672
r   r   N)r   r   r   r   r   r!   r   r   )r:   r;   expected_f_statisticexpected_p_valuesr   f_statisticp_valuess          r-   test_f_regression_corner_caser      sj    Z 
	 	 	"g~6 ,Q M 
# JJ((6JKJJ((3DE	 
#	"s   (B
Bc                  X   [        SSSSSSSSS	S
SS9u  p[        X5      u  p#US:  R                  5       (       d   eUS:  R                  5       (       d   eUS:  R                  5       (       d   eUS S S:  R                  5       (       d   eUSS  S:  R                  5       (       d   eg rB   )r   r   rW   )r:   r;   rY   r*   s       r-   test_f_classif_multi_classr   2  s     DA aOEAE;;===F<<>>>F<<>>>rFTM    qrFVO  """"r/   c                  f   [        SSSSSSSSS	S
SS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        [        SSS9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nSUS S& [        XV5        g NrC   rD   r   rE   r   rF   r    rG   r   FrH      
percentiler   modeparamrT   )
r   r   r   fit	transformr	   r   get_supportr!   zerosr:   r;   univariate_filterX_rX_r2supportgtruths          r-   test_select_percentile_classifr   K  s     DA )rB



%
/
/
2C	BG	Q	1 	
 s!++-GXXb\FF2AJw'r/   c                    [        SSSSSSSSS	S
SS9u  pU " U5      n[        [        SS9nUR                  X5      R	                  U5      n[        [        SSS9R                  X5      R	                  U5      n[        UR                  5       UR                  5       5        UR                  5       n[        R                  " S5      nSUS S& [        Xg5        UR                  U5      n[        R                  " U5      (       d   e[        X5      n	UR                  UR                  :X  d   e[        US S 2U	4   R                  5       UR                  5       5        UR                   UR                   :X  d   eg r   )r   r   r   r   r   r	   r   toarrayr   r!   r   inverse_transformr   issparser   shapennz)
r@   r:   r;   r   r   r   r   r   X_r2invsupport_masks
             r-   %test_select_percentile_classif_sparser   k  sK   
 DA 	aA(rB



%
/
/
2C	BG	Q	1 	
 s{{}dlln5++-GXXb\FF2AJw'11$7G??7####W.L==AGG###wq,/7793;;=I;;#''!!!r/   c                  f   [        SSSSSSSSS	S
SS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        [        SSS9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nSUS S& [        XV5        g )NrC   rD   r   rE   r   rF   r    rG   r   FrH   rT   kk_bestr   )
r   r   r   r   r   r	   r   r   r!   r   r   s          r-   test_select_kbest_classifr     s     DA $I3



%
/
/
2C	B	Q	1 	
 s!++-GXXb\FF2AJw'r/   c                     [        SSSSS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        X5        [        [        SSS	9R                  X5      R	                  U 5      n[        X45        g )
NrD   r   Fr   rI   rJ   rR   rS   rW   r   r   r   )r   r   r   r   r   r   r	   )r:   r;   r   r   r   s        r-   test_select_kbest_allr     sx    UDA $I7



%
/
/
2Cq 	 	F	Q	1 	
 s!r/   dtype_inc                    [        SSSSS9u  pUR                  U 5      n[        [        SS9nUR	                  X5        UR                  5       n[        R                  " S[        S9n[        XE5        [        R                  " [        SS	9   UR                  U5      nS S S 5        WR                  S
:X  d   eUR                  U :X  d   eg ! , (       d  f       N3= f)NrD   r   Fr   r   r   dtypeNo features were selectedmatch)rD   r   )r   r8   r   r   r   r   r!   r   boolr   pytestwarnsUserWarningr   r   r   )r   r:   r;   r   r   r   
X_selecteds          r-   test_select_kbest_zeror     s     UDA 	
A#I3!++-GXXb%Fw'	k)D	E&003
 
Fw&&&x''' 
F	Es   C
Cc                  x   [        SSSSSSSSS	S
SS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[
        R                  " S5      nSUS S& S HV  n[        [        USS9R                  X5      R	                  U 5      n[        X65        UR                  5       n[        Xt5        MX     g )NrC   rD   r   rE   r   rF   r    rG   r   FrH   {Gz?alpharT   fdrfprfwer   )r   r   r   r   r   r!   r   r	   r   r   r   r:   r;   r   r   r   r   r   r   s           r-   test_select_heuristics_classifr     s     DA ")48



%
/
/
2CXXb\FF2AJ%#IDESYYq\ 	
 	3%#//1( &r/   c                     U R                   nU R                  5       n[        [        R                  " X   5      [        R                  " U5      UR                  5       * S  5        g N)scores_r   r   r!   sortsum)score_filterscoresr   s      r-   assert_best_scores_keptr     sH    !!F&&(GBGGFO,bggfow{{}n>N.OPr/   c                     [        SSSSSS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        U5        [        [        S	SS
9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nSUS S& [        XV5        U R                  5       nSUS S 2[        R                  " U5      4'   [        XrR                  U5      5        [        UR                  [        5      UR                  UR                  [        5      5      5        g )NrC   rD   rT   Fr   r_   r   r   r   r   r    )r   r   r   r   r   r   r	   r   r   r!   r   copylogical_notr   r8   r   )r:   r;   r   r   r   r   r   X_2s           r-   !test_select_percentile_regressionr   	  s    "AuSTDA )"E



%
/
/
2C-.<rJ	Q	1 	
 s!++-GXXb\FF2AJw'
&&(C&'C2>>'""#s??DE

4+==cjj>NOr/   c                  f   [        SSSSSS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        U5        [        [        S	SS
9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      n[        XV5        g )NrC   rD   rT   Fr   r_   d   r   r   r   )r   r   r   r   r   r   r	   r   r   r!   r|   r   s          r-   &test_select_percentile_regression_fullr   '  s     "AuSTDA )#F



%
/
/
2C-.<sK	Q	1 	
 s!++-GWWR[Fw'r/   c            	      r   [        SSSSSSS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        U5        [        [        S	SS
9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nSUS S& [        XV5        g )NrC   rD   rT   Fr   r   rI   rJ   rK   rR   rS   noiser   r   r   r    )r   r   r   r   r   r   r	   r   r   r!   r   r   s          r-   test_select_kbest_regressionr   <  s     DA $LA6



%
/
/
2C-.81E	Q	1 	
 s!++-GXXb\FF2AJw'r/   c            	         [        SSSSSSS9u  p[        [        SS	9nUR                  X5      R	                  U 5      n[
        R                  " S5      nS
US S& S H  n[        [        USS9R                  X5      R	                  U 5      n[        X65        UR                  5       n[        US S [
        R                  " S[        S95        [
        R                  " USS  S
:H  5      S:  a  M   e   g )NrC   rD   rT   Fr   r   r   r   r   r    r   r   rT   r   r   )r   r   r   r   r   r!   r   r	   r   r   r|   r   r   r   s           r-   !test_select_heuristics_regressionr   X  s     DA ",d;



%
/
/
2CXXb\FF2AJ%#Lt4HSYYq\ 	
 	3%#//172A;D(ABvvgabkQ&'!+++ &r/   c                  F   [         R                  " SS/SS/SS//5      n [         R                  " S/S/S//5      n[        X5      u  p#[        U[         R                  " SS/5      5        [        U[         R                  " SS	/5      5        [	        [        S
S9nUR                  X5        UR                  5       n[        U[         R                  " SS/5      5        [        [        SS9nUR                  X5        UR                  5       n[        U[         R                  " SS/5      5        [        [        SS9nUR                  X5        UR                  5       n	[        U	[         R                  " SS/5      5        [        [        S
S9n
U
R                  X5        U
R                  5       n[        U[         R                  " SS/5      5        [        [        S
S9nUR                  X5        UR                  5       n[        U[         R                  " SS/5      5        g )Nr   rD      r    r   g      @ggm?gQaK?gX٬<y?皙?r   TFr   2   r   )r!   arrayr   r   r
   r   r   r   r   r   r   r   )r:   r;   r   pvalues
filter_fdrsupport_fdrfilter_kbestsupport_kbestfilter_percentilesupport_percentile
filter_fprsupport_fpr
filter_fwesupport_fwes                 r-   test_boundary_case_ch2r   u  s   
2r(RHr2h/0A
1#sQC!A1jOFfbhhZ/@&ABgrxxZ0H'IJ4s+JNN1((*K{BHHdE]$;<tq)LQ ,,.M}bhhe}&=>("=!*668)288T5M+BC4s+JNN1((*K{BHHdE]$;<4s+JNN1((*K{BHHdE]$;<r/   r   )gMbP?r   r   rK   )r    rT   r   c           
          S n[         R                  " [        S5       Vs/ s H  o2" XU5      PM     sn5      nX:  d   eUS:w  a  X@S-  :  d   eg g s  snf )Nc           	         [        SSUSUSS9u  p4[        R                  " SS9   [        [        U S9nUR                  X45      R                  U5      n[        [        S	U S
9R                  X45      R                  U5      nS S S 5        [        WW5        WR                  5       n[        R                  " XS  S:H  5      n	[        R                  " US U S:H  5      n
U	S:X  a  gU	X-   -  nU$ ! , (       d  f       Nq= f)N   rD   Fr   r   T)recordr   r   r   r    r   rG   )r   r   r   r
   r   r   r   r	   r   r   r!   r   )r   rK   rS   r:   r;   r   r   r   r   num_false_positivesnum_true_positivesfalse_discovery_rates               r-   
single_fdr.test_select_fdr_regression.<locals>.single_fdr  s    '%
 $$D1 !*,e D#''-77:C'5NQ1  2 	3%#//1 ffW^%<%ABVVGN]$;q$@A!#24 
 $#+ 21s   AC,,
C:r   r   r   )r!   meanrange)r   rK   r   rS   r   s        r-   test_select_fdr_regressionr    sj    $H 77LQRUJWJLE,	7JW ((( q #bj000 ! 	Xs   Ac                     [        SSSSSS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        [        S	SS
9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nSUS S& [        US S [        R                  " S[        S95        [        R                  " USS  S:H  5      S:  d   eg )NrC   rD   rT   Fr   r_   r   r   r   r   r    r   r   rE   )r   r   r   r   r   r	   r   r   r!   r   r|   r   r   r   s          r-   test_select_fwe_regressionr    s     "AuSTDA ",d;



%
/
/
2C5E	Q	1 	
 s!++-GXXb\FF2AJwr{BGGD$=>66'!"+"#a'''r/   c                  Z   / SQ/ SQ/ SQ/ SQ/n S/nS nU  H  n[        USS9n[        UR                  5      " U/U5      nUR                  S   S:X  d   e[	        U5        [        USS9n[        UR                  5      " U/U5      nUR                  S   S:X  d   e[	        U5        M     g )	Nr   r    r    r   r   r    r    r   r   r    r    r   r    c                     U S   U S   4$ Nr    r:   r;   s     r-   <lambda>.test_selectkbest_tiebreaking.<locals>.<lambda>      !ad|r/   r   rE   )r   r   fit_transformr   r   Xsr;   dummy_scorer:   selr'   r(   s          r-   test_selectkbest_tiebreakingr    s     Y	9	5B	
A+K++S../Q7xx{a$++S../Q7xx{a$ r/   c                  Z   / SQ/ SQ/ SQ/ SQ/n S/nS nU  H  n[        USS9n[        UR                  5      " U/U5      nUR                  S   S:X  d   e[	        U5        [        US	S9n[        UR                  5      " U/U5      nUR                  S   S
:X  d   e[	        U5        M     g )Nr  r  r  r	  r    c                     U S   U S   4$ r  r  r  s     r-   r  3test_selectpercentile_tiebreaking.<locals>.<lambda>  r  r/   "   r   C   rE   )r   r   r  r   r   r  s          r-   !test_selectpercentile_tiebreakingr    s    
Y	9	5B	
A+K{r:S../Q7xx{a${r:S../Q7xx{a$ r/   c                  l   [         R                  " / SQ/ SQ/5      n SS/n[        R                  " S5       Hz  nU S S 2U4   n[	        [
        SS9R                  X15      nUR                  S:X  d   eS	U;  d   e[        [
        S
S9R                  X15      nUR                  S:X  d   eS	U;  a  Mz   e   g )N)'  '  '  r    r    r    r   r    r   r    rE   rE   r   )rE   rE   r   r  r   )	r!   r   	itertoolspermutationsr   r   r  r   r   )X0r;   permr:   Xts        r-   test_tied_pvaluesr(    s     
&	2	3B	
AA&&y1q$wK#11!7xx6!!!2~~dr2@@Fxx6!!!2~~ 2r/   c                  4   [         R                  " / SQ/ SQ/ SQ/5      n SS/SS/SS//n[        [        SS9R	                  X5      nUR
                  S:X  d   eSU;  d   e[        [        S	S
9R	                  X5      nUR
                  S:X  d   eSU;  d   eg )N)r  r  r   )r   r  r   )i  c   r   r    r   rE   r   )r   rE   r  r   )r!   r   r   r   r  r   r   )r:   r;   r'  s      r-   test_scorefunc_multilabelr+    s     	"NMBCA
Q!Q!Q A	TQ		-	-a	3B88vB;;	$2	.	<	<Q	BB88vB;;r/   c                     [         R                  " / SQ/ SQ/5      n SS/nS H[  n[        [        US9R	                  X5      nUR                  / SQ/5      n[        US   [         R                  " S5      U* S  5        M]     g )	N)r   r   r   r!  r   r    )r    rE   r   r   r"  r   )r!   r   r   r   r   r   r   r7   )X_trainy_trainrJ   r  X_tests        r-   test_tied_scoresr0  %  sn    hh	9-.G!fG
$*-11'C	{+6!9biilJ;<&@A  r/   c                      / SQ/ SQ/ SQ/n / SQn[        [        SS9[        [        SS94 HM  n[        UR                  5      " X5        [        UR                  S	S
9[        R                  " SS/5      5        MO     g )Nr   r    r   r   ra   ra   r         ?r5  r    r   r    rE   r   r  r   T)indicesr    )	r   r   r   r   r   r   r   r!   r   )r:   r;   selects      r-   	test_nansr9  0  so     
K/AA 	I#r2 	

#A)6--d-;RXXq!f=MNr/   c                  T   / SQ/ SQ/ SQ/n / SQnSn[         R                  " [        US9   [        SS9R	                  X5        S S S 5        [         R                  " [        US9   [        S	SS
9R	                  X5        S S S 5        g ! , (       d  f       NJ= f! , (       d  f       g = f)Nr2  r3  r4  r6  zDk=4 is greater than n_features=3. All the features will be returned.r   r3   r   r   r   )r   r   r   r   r   r	   )r:   r;   msgs      r-   test_invalid_kr<  ?  sy    	K/AA
PC	k	-aQ" 
.	k	-XQ7;;AA 
.	- 
.	-	-	-s   B%B
B
B'c                      [        SSS9u  pSU S S 2S4'   [        R                  " [        5         [	        X5        S S S 5        g ! , (       d  f       g = f)Nr   rT   )rI   rJ   rz   r   )r   r   r   r   r   r  s     r-   test_f_classif_constant_featurer>  J  s>     :DAAadG	k	"! 
#	"	"s   A
Ac                     [         R                  R                  S5      n U R                  SS5      nU R	                  SSSS9n[        SS9R                  X5      [        SS9R                  X5      [        SS9R                  X5      [        SS9R                  X5      [        SS	9R                  X5      /nU Hv  n[        UR                  5       [         R                  " S5      5        [        R                  " [         S
S9   UR#                  U5      nS S S 5        WR$                  S:X  a  Mv   e   g ! , (       d  f       N%= f)Nr   (   r   r3   r1   r   r   r   r   r   r   )r@  r   )r!   r"   r#   rp   r6   r   r   r
   r   r   r   r   r   r   r   r   r   r   r   )r&   r:   r;   strict_selectorsselectorr   s         r-   test_no_feature_selectedrC  S  s
   
))


"C 	RAAqr"A!!!'!!!'!!!'A&**10aQ" %8//1288B<@\\+-HI!++A.J J7***	 %IIs   D55
E	c                     [        SSSSSSSSSSSS	9u  p[        [        SS
9nUR                  X5      R	                  U 5      n[        [        SSS9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nSUS S& [        XV5        [        [        SS9nUR                  X5      R	                  U 5      n[        [        SSS9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nSUS S& [        XV5        g )Nr   rT   r    r   rE   rG   r   FrH   r   r   r   r@  r   r   )r   r   r   r   r   r	   r   r   r!   r   r   r   s          r-   test_mutual_info_classifrE  h  s=   DA $$71=



%
/
/
2C 3(!L	Q	1 	
 s!++-GXXa[FF2AJw' ))<L



%
/
/
2C 3,bQ	Q	1 	
 s!++-GXXa[FF2AJw'r/   c            	         [        SSSSSSS9u  p[        [        SS9nUR                  X5      R	                  U 5      n[        U5        [        [        SSS	9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nS
US S& [        XV5        [        [        SS9nUR                  X5      R	                  U 5      n[        [        SSS	9R                  X5      R	                  U 5      n[        X45        UR                  5       n[        R                  " S5      nS
US S& [        XV5        g )Nr   r   rE   Fr   r   r   r   r   r    rD   r   r   )r   r   r   r   r   r   r	   r   r   r!   r   r   r   s          r-   test_mutual_info_regressionrG    s8   DA $$:a@



%
/
/
2C-. 6XQO	Q	1 	
 s!++-GXXb\FF2AJw' ))?BO



%
/
/
2C 6\QST	Q	1 	
 s!++-GXXb\FF2AJw'r/   c                    ^ [         R                  " S5      n [        SSS9u  pUR                  [        R
                  [        R                  S.5      nU R                  US   SS9US'   UR                  mU4S	 jn[        US
S9R                  SS9nUR                  X5      n[        UR                  / SQ5        UR                  R                  5        H  u  pgXqR                  U   :X  a  M   e   g)zeCheck that the output datafarme dtypes are the same as the input.

Non-regression test for gh-24860.
pandasT)
return_X_yas_frame)petal length (cm)petal width (cm)rM  r   )binspetal_width_binnedc                 p   > SSSSSS.n[         R                  " T Vs/ s H  o2U   PM	     sn5      $ s  snf )Nr    rE   r   r3   rT   )zsepal length (cm)zsepal width (cm)rL  rM  rO  )r!   asarray)r:   r;   rankingnamecolumn_orders       r-   rB  .test_dataframe_output_dtypes.<locals>.selector  s>    !" !!" !"#
 zz\B\T4=\BCCBs   3r   r   )r   )rL  rM  rO  N)r   importorskipr   r8   r!   float32float64cutcolumnsr   
set_outputr  r   dtypesitems)	pdr:   r;   rB  r   outputrS  r   rT  s	           @r-   test_dataframe_output_dtypesr`    s    
 
		X	&Bt4DA	!# "

	
	A !ffQ'9%:fDA99LD $H2===Q,,Q2FW }}**,&&& -r/   rB  r   P   r   r   r   r   c                 D   [         R                  R                  S5      nUR                  SS5      nSS jnU R	                  US9  U R                  U5        U R                  U5      n[        XBSS2SS24   5        U R                  U5      n[        XBSS2SS24   5        g)	z]Check support for unsupervised feature selection for the filter that could
require only `X`.
r   r   rT   Nc                 2    [         R                  " / SQ5      $ )N)r    r    r    r    r   )r!   r   r  s     r-   
score_func,test_unsupervised_filter.<locals>.score_func  s    xx((r/   )rd  r3   r   )	r!   r"   r#   r$   
set_paramsr   r   r   r  )rB  r&   r:   rd  X_transs        r-   test_unsupervised_filterrh    s     ))


"C		"aA) :.LLO  #GGq"1"uX&$$Q'GGq"1"uX&r/   )U__doc__r#  r   numpyr!   r   numpy.testingr   scipyr   r   sklearn.datasetsr   r   r   sklearn.feature_selectionr	   r
   r   r   r   r   r   r   r   r   r   r   r   sklearn.utilsr   sklearn.utils._testingr   r   r   r   r   sklearn.utils.fixesr   r.   r?   markparametrizer\   rl   rn   ru   r   r   nanr   finforX  maxinfr   r   r   r   r   r   rW  r   r   r   r   r   r   r   r   r  r  r  r  r(  r+  r0  r9  r<  r>  rC  rE  rG  r`  rh  r  r/   r-   <module>rx     s       )  L L    $  / 2 .9- :-8 D%=1F 2F* .9# :#6
!," , HHq!fq!fq"g1v67HH\"HHc7^$	
 HHq!fq!fq"g1v67HH\"HHc3Z 	
 HHq!fq!fq"g1v67HH\"HHbffg&'	
 HHq!fq!fq"g1v67HH\"HHbffbff%&	
- B	HC B	H A HHq!fq!fq"g1v67HH\"HHc9%&HHc:&'	
 HHq!fq!fq"g1v67HH\"HHc3Z HHc3Z 	
 HHq!fq!fq"g1v67HH\"HHbhhrzz*..9:HHc8_%	
 HHq!fq!fq"g1v67HH\"HHbhhrzz*..9:HHc8_%	
 HHq!fq!fq"g1v67HH\"HHbffi()HHbffj)*	
 HHq!fq!fq"g1v67HH\"HHbffbff%&HHbffbff%&	
 HHq!fq!fq"g1v67HH\"HHbffh'(HHc8_%	
 HHq!fq!fq"g1v67HH\"HHbffh'(HHc8_%	
sADJFKDJF#2(@ .9%" :%"X(@"& bjj"**%=>( ?($)JQ<(*(8,:=D "45*5.1 6 6.1b(.%$%"$BOB+*)(X%(P#'L aB'XQ7\<	''r/   