
    Pi~                        d Z ddlZddlZddlZddl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mZmZmZmZmZmZmZmZmZmZmZ ddlmZ ddlm Z m!Z!m"Z"m#Z#m$Z$ dd	l%m&Z& d
 Z'd Z(ej)        *                    de&          d             Z+ej)        *                    dddg          d             Z,ej)        *                    de&          d             Z-d Z.d Z/ej)        *                    d ej0        ddgddgddgddgg           ej0        g d           ej0        ddg          df ej0        ddgddgddgddgg           ej0        g d            ej0        ddg          df ej0        ddgddgddgddgg           ej0        g d           ej0        ej1        dg          df ej0        ddgddgddgddgg           ej0        g d            ej0        ej1        ej1        g          dfg          d!             Z2ej)        *                    d" ej0        ddgddgddgddgg           ej0        g d           ej0        dd#g           ej0        d$d%g          df ej0        ddgddgddgddgg           ej0        g d            ej0        ddg           ej0        d$d$g          df ej0        ddgddgddgddgg           ej0        g d&           ej0         ej3        ej4                  j5        d'g           ej0        dd(g          df ej0        ddgddgddgddgg           ej0        g d&           ej0         ej3        ej4                  j5        d'g           ej0        dd(g          df ej0        ddgddgddgddgg           ej0        g d           ej0        ej1        d#g           ej0        ej1        d%g          df ej0        ddgddgddgddgg           ej0        g d            ej0        ej1        ej1        g           ej0        ej1        ej1        g          df ej0        ddgddgddgddgg           ej0        g d&           ej0        ej6        d'g           ej0        dd(g          df ej0        ddgddgddgddgg           ej0        g d&           ej0        ej6        d'g           ej0        dd(g          dfg          d)             Z7d* Z8d+ Z9ej)        *                    de&          d,             Z:d- Z;d. Z<ej)        *                    d/ej=        ej4        g          d0             Z>d1 Z?d2 Z@d3 ZAd4 ZBd5 ZCd6 ZDd7 ZEej)        *                    d8g d9          ej)        *                    d:g d;          d<                         ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQdH ZRdI ZSej)        *                    dJ edK           edLM           edNdO           edPdLO          g          dQ             ZTdS )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                  T   t           j                            d          } |                     dd          }d|                     dd          z   }t	          j        ||          \  }}t          ||          \  }}t          j        ||          sJ t          j        ||          sJ d S )Nr   
         )nprandomRandomStaterandnr   r   allclose)rngX1X2fpvf2pv2s          /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/feature_selection/tests/test_feature_select.pytest_f_oneway_vs_scipy_statsr.   +   s    
)


"
"C	2q		B	
SYYr1	BN2r""EArr2GB;q";r3    c                  ^   t           j                            d          } |                     dd          }t          j        d          }t          ||          \  }}t          |                    t                    |          \  }}t          ||d           t          ||d           d S )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   s     )


"
"CBX&&A
	"A!QJD$ AHHUOOQ''DAqaq1111aq111111r/   csr_containerc                    t          ddddddddd	d
d          \  }}t          ||          \  }}t           | |          |          \  }}|dk                                    sJ |dk                                    sJ |dk                                     sJ |d d         dk                                     sJ |dd          dk                                    sJ t          ||           t          ||           d S 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!      DAq aOOEAr#MM!$4$4a88HiE;;===F<<>>>F<<>>>rrFTM     qrrFVO  """""h***i,,,,,r/   centerTFc                    t          ddddd          \  }}t          |||           }d|k                                     sJ |d	k                                     sJ t          |d
          }t          |||           }t	          ||           t          j        ||d d t
          j        f         f          }t          j        |d          }|d ddf         }t          ||d           d S )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  DAq q!F333K!!#####!O  """""!!X..H%h&AAA&444 		1a2:&'((AQu555'R0Nnk1EEEEEEr/   c                    t          ddddd          \  }}t          ||          \  }}|dk                                    sJ |dk                                    sJ |dk                                     sJ |d d         dk                                     sJ |dd          d	k                                    sJ t          ||d
          \  }}t           | |          |d
          \  }}t          ||           t          ||           t          ||d          \  }}t           | |          |d          \  }}t          ||           t          ||           d S )NrC   rD   rT   Fr   r_   r    rU   rV   Tr`   )r   r   rW   r   rX   s          r-   test_f_regressionrn   w   s    "AuST  DAq AEArE;;===F<<>>>F<<>>>rrFTM     qrrFVO  """"" Ad+++EAr&}}Q'7'74HHHHiHa   Ir""" Ae,,,EAr&}}Q'7'75IIIHiHa   Ir"""""r/   c                     t           j                            d          } |                     dd          }t          j        d                              t                    }t          ||          \  }}t          ||                    t                              \  }}t          ||d           t          ||d           d S )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      s     )


"
"CRA
	"S!!A1a  GB1ahhuoo..GBBACa     r/   c                  v   t          j        dd                              dd          } | j        }t          j        |          }|d d dxx         dz  cc<   d|d<   t          | |d	
          \  }}t          | |d
          \  }}t          ||dz
  z  |dz
  z  |           t          |d         d           d S )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cccFFFdNFFFAaDAd+++EBAe,,,EBB)c/*i#o>CC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                     t          j                    5  t          j        dt                     t	          | ||          }ddd           n# 1 swxY w Y   t
          j                            ||           dS )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      s    N 
	 	"	" B Bg~666 ALAAA	B B B B B B B B B B B B B B B J((4FGGGGGs   -AAAz;X, y, expected_f_statistic, expected_p_values, force_finiteg
[?ry   gSr.j?)r   r    rE   r   g?gajK?c                 :   t          j                    5  t          j        dt                     t	          | ||          \  }}ddd           n# 1 swxY w Y   t
          j                            ||           t
          j                            ||           dS )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      s    Z 
	 	"	" N Ng~666 ,Q M M MXN N N N N N N N N N N N N N N J((6JKKKJ((3DEEEEEs   0AAAc                     t          ddddddddd	d
d          \  } }t          | |          \  }}|dk                                    sJ |dk                                    sJ |dk                                     sJ |d d         dk                                     sJ |dd          dk                                    sJ d S rB   )r   r   rW   )r:   r;   rY   r*   s       r-   test_f_classif_multi_classr   2  s       DAq aOOEArE;;===F<<>>>F<<>>>rrFTM     qrrFVO  """""""r/   c                     t          ddddddddd	d
d          \  } }t          t          d          }|                    | |                              |           }t          t          dd                              | |                              |           }t          ||           |                                }t          j	        d          }d|d d<   t          ||           d S 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       DAq )rBBB


1
%
%
/
/
2
2C	BGGG	Q	1 	
 sD!!!++--GXb\\FF2A2Jw'''''r/   c                 p   t          ddddddddd	d
d          \  }} | |          }t          t          d          }|                    ||                              |          }t          t          dd                              ||                              |          }t          |                                |                                           |                                }t          j
        d          }d|d d<   t          ||           |                    |          }t          j        |          sJ t          ||          }	|j        |j        k    sJ t          |d d |	f                                         |                                           |j        |j        k    sJ d S 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  s   
   DAq 	aA(rBBB


1
%
%
/
/
2
2C	BGGG	Q	1 	
 s{{}}dllnn555++--GXb\\FF2A2Jw'''11$77G?7#####Wg..L=AG####wqqq,/77993;;==III;#'!!!!!!r/   c                     t          ddddddddd	d
d          \  } }t          t          d          }|                    | |                              |           }t          t          dd                              | |                              |           }t          ||           |                                }t          j	        d          }d|d d<   t          ||           d S )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       DAq $I333


1
%
%
/
/
2
2C	BBB	Q	1 	
 sD!!!++--GXb\\FF2A2Jw'''''r/   c                  l   t          dddd          \  } }t          t          d          }|                    | |                              |           }t          | |           t          t          dd	                              | |                              |           }t          ||           d S )
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     s    U  DAq $I777


1
%
%
/
/
2
2Cq# 	 	FFF	Q	1 	
 sD!!!!!r/   dtype_inc                    t          dddd          \  }}|                    |           }t          t          d          }|                    ||           |                                }t          j        dt                    }t          ||           t          j        t          d	          5  |                    |          }d d d            n# 1 swxY w Y   |j        d
k    sJ |j        | k    sJ d S )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     sB    U  DAq 	
A#I333!Q++--GXb%%%Fw'''	k)D	E	E	E 4 4&0033
4 4 4 4 4 4 4 4 4 4 4 4 4 4 4w&&&&x''''''s   2CCCc                     t          ddddddddd	d
d          \  } }t          t          d          }|                    | |                              |           }t          j        d          }d|d d<   dD ]t}t          t          |d                              | |                              |           }t          ||           |	                                }t          ||           ud S )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      DAq ")4888


1
%
%
/
/
2
2CXb\\FF2A2J% ) )#IDEEESAYYYq\\ 	
 	3%%%#//11(((() )r/   c                     | j         }|                                 }t          t          j        ||                   t          j        |          |                                 d                     d S N)scores_r   r   r!   sortsum)score_filterscoresr   s      r-   assert_best_scores_keptr     s\    !F&&((GBGF7O,,bgfoow{{}}n>N>N.OPPPPPr/   c                  4   t          ddddd          \  } }t          t          d          }|                    | |                              |           }t          |           t          t          d	d
                              | |                              |           }t          ||           |                                }t          j
        d          }d|d d<   t          ||           |                                 }d|d d t          j        |          f<   t          ||                    |                     t          |                    t                    |                    |                    t                                         d S )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  DAq )"EEE


1
%
%
/
/
2
2C-...<rJJJ	Q	1 	
 sD!!!++--GXb\\FF2A2Jw'''
&&((C&'C2>'"""#s-??DDEEE

4+==cjj>N>NOO    r/   c                     t          ddddd          \  } }t          t          d          }|                    | |                              |           }t          |           t          t          d	d
                              | |                              |           }t          ||           |                                }t          j
        d          }t          ||           d S )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  DAq )#FFF


1
%
%
/
/
2
2C-...<sKKK	Q	1 	
 sD!!!++--GWR[[Fw'''''r/   c                     t          dddddd          \  } }t          t          d          }|                    | |                              |           }t          |           t          t          d	d
                              | |                              |           }t          ||           |                                }t          j
        d          }d|d d<   t          ||           d S )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       DAq $LA666


1
%
%
/
/
2
2C-...81EEE	Q	1 	
 sD!!!++--GXb\\FF2A2Jw'''''r/   c                  f   t          dddddd          \  } }t          t          d	          }|                    | |                              |           }t          j        d          }d
|d d<   dD ]}t          t          |d                              | |                              |           }t          ||           |	                                }t          |d d         t          j
        dt                               t          j        |dd          d
k              dk     sJ d S )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=      DAq ",d;;;


1
%
%
/
/
2
2CXb\\FF2A2J% 	, 	,#Lt4HHHSAYYYq\\ 	
 	3%%%#//1172A2;D(A(A(ABBBvgabbkQ&''!+++++	, 	,r/   c                     t          j        ddgddgddgg          } t          j        dgdgdgg          }t          | |          \  }}t          |t          j        ddg                     t          |t          j        dd	g                     t	          t          d
          }|                    | |           |                                }t          |t          j        ddg                     t          t          d          }|                    | |           |                                }t          |t          j        ddg                     t          t          d          }|                    | |           |                                }	t          |	t          j        ddg                     t          t          d
          }
|
                    | |           |
                                }t          |t          j        ddg                     t          t          d
          }|                    | |           |                                }t          |t          j        ddg                     d S )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  sD   
2r(RHr2h/00A
1#sQC!!A1ajjOFGfbhZ/@&A&ABBBgrxZ0H'I'IJJJ4s+++JNN1a((**K{BHdE]$;$;<<<tq)))LQ ,,..M}bhe}&=&=>>>("===!Q*6688)28T5M+B+BCCC4s+++JNN1a((**K{BHdE]$;$;<<<4s+++JNN1a((**K{BHdE]$;$;<<<<<r/   r   )gMbP?r   r   rK   )r    rT   r   c                      d t          j         fdt          d          D                       } |k    sJ |dk    r| dz  k    sJ d S d S )Nc                 r   t          dd|d|d          \  }}t          j        d          5  t          t          |           }|                    ||                              |          }t          t          d	| 
                              ||                              |          }d d d            n# 1 swxY w Y   t          ||           |	                                }t          j        ||d          dk              }	t          j        |d |         dk              }
|	dk    rdS |	|
|	z   z  }|S )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_fdrz.test_select_fdr_regression.<locals>.single_fdr  s   '%
 
 
1 $D111 		 		 !*,e D D D#''1--77::C'5NNNQ1 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 	3%%%#//11 fW]^^%<%ABBVGN]N$;q$@AA!##32!44 
 $#s   A>B88B<?B<c                 *    g | ]} |          S  r   ).0rS   r   rK   r   s     r-   
<listcomp>z.test_select_fdr_regression.<locals>.<listcomp>  s'    WWWLE=,	7	7WWWr/   r   r   r   )r!   meanrange)r   rK   r   r   s   `` @r-   test_select_fdr_regressionr    s    $ $ $H 7WWWWWWERUJJWWW  ((((( q  #ebj0000 ! 00r/   c                  Z   t          ddddd          \  } }t          t          d          }|                    | |                              |           }t          t          d	d
                              | |                              |           }t          ||           |                                }t          j	        d          }d|d d<   t          |d d         t          j
        dt                               t          j        |dd          dk              dk     sJ d S )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  DAq ",d;;;


1
%
%
/
/
2
2C5EEE	Q	1 	
 sD!!!++--GXb\\FF2A2Jwrr{BGD$=$=$=>>>6'!""+"##a''''''r/   c                     g dg dg dg dg} dg}d }| D ]}t          |d          } t          |j                  |g|          }|j        d         dk    sJ t	          |           t          |d          } t          |j                  |g|          }|j        d         dk    sJ t	          |           d S )	Nr   r    r    r   r   r    r    r   r   r    r    r   r    c                 "    | d         | d         fS Nr   r   r:   r;   s     r-   <lambda>z.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     ))YYY			999	5B	
A++K 	% 	%++++/_S.//Q77x{a$$$++++/_S.//Q77x{a$$$$	% 	%r/   c                     g dg dg dg dg} dg}d }| D ]}t          |d          } t          |j                  |g|          }|j        d         dk    sJ t	          |           t          |d	          } t          |j                  |g|          }|j        d         d
k    sJ t	          |           d S )Nr	  r
  r  r  r    c                 "    | d         | d         fS r  r   r  s     r-   r  z3test_selectpercentile_tiebreaking.<locals>.<lambda>  r  r/   "   r   C   rE   )r   r   r  r   r   r  s          r-   !test_selectpercentile_tiebreakingr    s    
))YYY			999	5B	
A++K 	% 	%{r:::/_S.//Q77x{a$$${r:::/_S.//Q77x{a$$$$	% 	%r/   c                  |   t          j        g dg dg          } ddg}t          j        d          D ]}| d d |f         }t	          t
          d                              ||          }|j        dk    sJ d	|vsJ t          t
          d
                              ||          }|j        dk    sJ d	|vsJ d S )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	3	3B	
AA&y11  qqq$wK###11!Q77x6!!!!2~~~~dr222@@AFFx6!!!!2~~~~~ r/   c                  J   t          j        g dg dg dg          } ddgddgddgg}t          t          d                              | |          }|j        dk    sJ d|vsJ t          t          d	
                              | |          }|j        dk    sJ d|vsJ d S )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     	"""NNNMMMBCCA
Q!Q!Q A	TQ				-	-a	3	3B8vB;;;;	$2	.	.	.	<	<Q	B	BB8vB;;;;;;r/   c                  2   t          j        g dg dg          } ddg}dD ]u}t          t          |                              | |          }|                    g dg          }t          |d         t          j        d          | d                     vd S )	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  %  s    h			999-..G!fG B B
$*---11'7CC			{++6!9billJ;<<&@AAAAB Br/   c                  .   g dg dg dg} g d}t          t          d          t          t          d          fD ]X} t          |j                  | |           t          |                    d	
          t          j        ddg                     Yd S )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  s     
KKK/A		A 	I###r222 O O 	$
##Aq)))6--d-;;RXq!f=M=MNNNNO Or/   c                     g dg dg dg} g d}d}t          j        t          |          5  t          d                              | |           d d d            n# 1 swxY w Y   t          j        t          |          5  t          d	d
                              | |           d d d            d S # 1 swxY w Y   d S )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<  ?  sc   	KKK/A		A
PC	k	-	-	- # #aQ"""# # # # # # # # # # # # # # #	k	-	-	- B BXQ777;;AqAAAB B B B B B B B B B B B B B B B B Bs#   %AA"%A"&B77B;>B;c                      t          dd          \  } }d| d d df<   t          j        t                    5  t	          | |           d d d            d S # 1 swxY w Y   d S )Nr   rT   )rI   rJ   rz   r   )r   r   r   r   r   r  s     r-   test_f_classif_constant_featurer>  J  s     :::DAqAaaadG	k	"	"  !Q                 s   AAAc                     t           j                            d          } |                     dd          }|                     ddd          }t          d                              ||          t          d                              ||          t          d                              ||          t          d                              ||          t          d	                              ||          g}|D ]}t          |                                t          j        d                     t          j        t           d
          5  |                    |          }d d d            n# 1 swxY w Y   |j        dk    sJ d S )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!!!Q''!!!Q''!!!Q''A&&&**1a00aQ"" % + +8//1128B<<@@@\+-HIII 	/ 	/!++A..J	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/7*****	+ +s   E44E8	;E8	c                  p   t          ddddddddddd	          \  } }t          t          d
          }|                    | |                              |           }t          t          dd                              | |                              |           }t          ||           |                                }t          j	        d          }d|d d<   t          ||           t          t          d          }|                    | |                              |           }t          t          dd                              | |                              |           }t          ||           |                                }t          j	        d          }d|d d<   t          ||           d S )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     DAq $$71===


1
%
%
/
/
2
2C 3(!LLL	Q	1 	
 sD!!!++--GXa[[FF2A2Jw''' ))<LLL


1
%
%
/
/
2
2C 3,bQQQ	Q	1 	
 sD!!!++--GXa[[FF2A2Jw'''''r/   c                     t          dddddd          \  } }t          t          d          }|                    | |                              |           }t          |           t          t          dd	                              | |                              |           }t          ||           |                                }t          j
        d          }d
|d d<   t          ||           t          t          d          }|                    | |                              |           }t          t          dd	                              | |                              |           }t          ||           |                                }t          j
        d          }d
|d d<   t          ||           d S )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    s     DAq $$:a@@@


1
%
%
/
/
2
2C-... 6XQOOO	Q	1 	
 sD!!!++--GXb\\FF2A2Jw''' ))?BOOO


1
%
%
/
/
2
2C 6\QSTTT	Q	1 	
 sD!!!++--GXb\\FF2A2Jw'''''r/   c                     t          j        d          } t          dd          \  }}|                    t          j        t          j        d          }|                     |d         d          |d<   |j        fd	}t          |d
          
                    d          }|                    ||          }t          |j        g d           |j                                        D ]\  }}||j        |         k    sJ dS )zmCheck 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                 V    ddddddt          j        fdD                       S )Nr    rE   r   r3   rT   )zsepal length (cm)zsepal width (cm)rL  rM  rO  c                      g | ]
}|         S r   r   )r  namerankings     r-   r  zBtest_dataframe_output_dtypes.<locals>.selector.<locals>.<listcomp>  s    BBBT74=BBBr/   )r!   asarray)r:   r;   rS  column_orders     @r-   rB  z.test_dataframe_output_dtypes.<locals>.selector  sF    !" !!" !"#
 
 zBBBB\BBBCCCr/   r   r   )r   )rL  rM  rO  N)r   importorskipr   r8   r!   float32float64cutcolumnsr   
set_outputr  r   dtypesitems)	pdr:   r;   rB  r   outputrR  r   rU  s	           @r-   test_dataframe_output_dtypesr`    s<   
 
	X	&	&Bt444DAq	!# "
	
 	
	 	A !ffQ'9%:fDDA9LD D D D D $H222===QQ,,Q22FWWW   }**,, ' 'e&&&&&' 'r/   rB  r   P   r   r   r   r   c                    t           j                            d          }|                    dd          }dd}|                     |           |                     |           |                     |          }t          ||ddddf                    |                     |          }t          ||ddddf                    dS )	zeCheck support for unsupervised feature selection for the filter that could
    require only `X`.
    r   r   rT   Nc                 .    t          j        g d          S )N)r    r    r    r    r   )r!   r   r  s     r-   
score_funcz,test_unsupervised_filter.<locals>.score_func  s    x(((r/   )rd  r3   r   )	r!   r"   r#   r$   
set_paramsr   r   r   r  )rB  r&   r:   rd  X_transs        r-   test_unsupervised_filterrg    s     )


"
"C		"aA) ) ) ) :...LLOOO  ##GGQqqq"1"uX&&&$$Q''GGQqqq"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`  rg  r   r/   r-   <module>rw     s
              ) ) ) ) ) )         L L L L L L L L L L                              $ # # # # #              / . . . . .     2 2 2 .99- - :9-8 D%=11F F 21F* .99# # :9#6
! 
! 
!, , ," , BHq!fq!fq"g1v677BH\\\""BHc7^$$	
 BHq!fq!fq"g1v677BH\\\""BHc3Z  	
 BHq!fq!fq"g1v677BH\\\""BHbfg&''	
 BHq!fq!fq"g1v677BH\\\""BHbfbf%&&	
-   B	H 	HC   B	H A BHq!fq!fq"g1v677BH\\\""BHc9%&&BHc:&''	
 BHq!fq!fq"g1v677BH\\\""BHc3Z  BHc3Z  	
 BHq!fq!fq"g1v677BH\\\""BHhbhrz**.9::BHc8_%%	
 BHq!fq!fq"g1v677BH\\\""BHhbhrz**.9::BHc8_%%	
 BHq!fq!fq"g1v677BH\\\""BHbfi())BHbfj)**	
 BHq!fq!fq"g1v677BH\\\""BHbfbf%&&BHbfbf%&&	
 BHq!fq!fq"g1v677BH\\\""BHbfh'((BHc8_%%	
 BHq!fq!fq"g1v677BH\\\""BHbfh'((BHc8_%%	
sAD DJF FKD DJF# # #2( ( (@ .99%" %" :9%"X( ( (@" " "& bj"*%=>>( ( ?>($) ) )JQ Q Q  <( ( (*( ( (8, , ,:= = =D "4"4"455***55.1 .1 65 65.1b( ( (.% % %$% % %"  $  B B BO O OB B B  + + +*)( )( )(X%( %( %(P#' #' #'L aB'''XQ777\<<<	 ' ' ' ' 'r/   