
    sg~                        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jR                  jU                  de&      d        Z+ejR                  jU                  dddg      d        Z,ejR                  jU                  de&      d        Z-d Z.d Z/ejR                  jU                  d ej`                  ddgddgddgddgg       ej`                  g d       ej`                  ddg      df ej`                  ddgddgddgddgg       ej`                  g d        ej`                  ddg      df ej`                  ddgddgddgddgg       ej`                  g d       ej`                  ejb                  dg      df ej`                  ddgddgddgddgg       ej`                  g d        ej`                  ejb                  ejb                  g      dfg      d!        Z2ejR                  jU                  d" ej`                  ddgddgddgddgg       ej`                  g d       ej`                  dd#g       ej`                  d$d%g      df ej`                  ddgddgddgddgg       ej`                  g d        ej`                  ddg       ej`                  d$d$g      df ej`                  ddgddgddgddgg       ej`                  g d&       ej`                   ejf                  ejh                        jj                  d'g       ej`                  dd(g      df ej`                  ddgddgddgddgg       ej`                  g d&       ej`                   ejf                  ejh                        jj                  d'g       ej`                  dd(g      df ej`                  ddgddgddgddgg       ej`                  g d       ej`                  ejb                  d#g       ej`                  ejb                  d%g      df ej`                  ddgddgddgddgg       ej`                  g d        ej`                  ejb                  ejb                  g       ej`                  ejb                  ejb                  g      df ej`                  ddgddgddgddgg       ej`                  g d&       ej`                  ejl                  d'g       ej`                  dd(g      df ej`                  ddgddgddgddgg       ej`                  g d&       ej`                  ejl                  d'g       ej`                  dd(g      dfg      d)        Z7d* Z8d+ Z9ejR                  jU                  de&      d,        Z:d- Z;d. Z<ejR                  jU                  d/ejz                  ejh                  g      d0        Z>d1 Z?d2 Z@d3 ZAd4 ZBd5 ZCd6 ZDd7 ZEejR                  jU                  d8g d9      ejR                  jU                  d:g d;      d<               ZFd= ZGd> ZHd? ZId@ ZJdA ZKdB ZLdC ZMdD ZNdE ZOdF ZPdG ZQdH ZRdI ZSejR                  jU                  dJ edK       edLM       edNdO       edPdLO      g      dQ        ZTy)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         j                  j                  d      } | j                  dd      }d| j                  dd      z   }t	        j
                  ||      \  }}t        ||      \  }}t        j                  ||      sJ t        j                  ||      sJ y )Nr   
         )nprandomRandomStaterandnr   r   allclose)rngX1X2fpvf2pv2s          f/var/www/html/venv/lib/python3.12/site-packages/sklearn/feature_selection/tests/test_feature_select.pytest_f_oneway_vs_scipy_statsr.   +   s    
))


"C	2q	B	
SYYr1	BNN2r"EArr2GB;;q";;r3    c                  ,   t         j                  j                  d      } | j                  dd      }t        j                  d      }t        ||      \  }}t        |j                  t              |      \  }}t        ||d       t        ||d       y )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   sx     ))


"CBX&A
		"A!QJD$ AHHUOQ'DAqaq1aq1r/   csr_containerc                    t        ddddddddd	d
d      \  }}t        ||      \  }}t         | |      |      \  }}|dkD  j                         sJ |dkD  j                         sJ |dk  j                         sJ |d d dk  j                         sJ |dd  dkD  j                         sJ t        ||       t        ||       y 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OEAr#M!$4a8HiE;;==F<<>>F<<>>rFTM   qrFVO  """h*i,r/   centerTFc                    t        ddddd      \  }}t        |||       }d|k  j                         sJ |d	k  j                         sJ t        |d
      }t        |||       }t	        ||       t        j                  ||d d t
        j                  f   f      }t        j                  |d      }|d ddf   }t        ||d       y )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3K!!###!O  """!!X.H%h&A&4 			1a2::&'(AQu5'R0Nnk1Er/   c                 &   t        ddddd      \  }}t        ||      \  }}|dkD  j                         sJ |dkD  j                         sJ |dk  j                         sJ |d d dk  j                         sJ |dd  d	kD  j                         sJ t        ||d
      \  }}t         | |      |d
      \  }}t        ||       t        ||       t        ||d      \  }}t         | |      |d      \  }}t        ||       t        ||       y )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FTM   qrFVO  """ Ad+EAr&}Q'74HHiHa Ir" Ae,EAr&}Q'75IHiHa Ir"r/   c                  L   t         j                  j                  d      } | j                  dd      }t        j                  d      j                  t              }t        ||      \  }}t        ||j                  t                    \  }}t        ||d       t        ||d       y )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1ahhuo.GBBACa r/   c                  N   t        j                  dd      j                  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       y )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Ad+EBAe,EBB)c/*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                     t        j                         5  t        j                  dt               t	        | ||      }ddd       t
        j                  j                  |       y# 1 sw Y   *xY w)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g~6 ALA	B JJ((4FGB Bs   )A''A0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       t
        j                  j                  |       t
        j                  j                  |       y# 1 sw Y   JxY w)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      sy    Z 
	 	 	" Ng~6 ,Q MXN JJ((6JKJJ((3DE	N Ns   ,B

Bc                  2   t        ddddddddd	d
d      \  } }t        | |      \  }}|dkD  j                         sJ |dkD  j                         sJ |dk  j                         sJ |d d dk  j                         sJ |dd  dkD  j                         sJ y rB   )r   r   rW   )r:   r;   rY   r*   s       r-   test_f_classif_multi_classr   2  s     DAq aOEArE;;==F<<>>F<<>>rFTM   qrFVO  """r/   c                     t        ddddddddd	d
d      \  } }t        t        d      }|j                  | |      j	                  |       }t        t        dd      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d|d d t        ||       y 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


1
%
/
/
2C	BG	Q	1 	
 sD!++-GXXb\FF2AJw'r/   c                    t        ddddddddd	d
d      \  }} | |      }t        t        d      }|j                  ||      j	                  |      }t        t        dd      j                  ||      j	                  |      }t        |j                         |j                                |j                         }t        j                  d      }d|d d t        ||       |j                  |      }t        j                  |      sJ t        ||      }	|j                  |j                  k(  sJ t        |d d |	f   j                         |j                                |j                   |j                   k(  sJ y 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  sR   
 DAq 	aA(rB


1
%
/
/
2C	BG	Q	1 	
 s{{}dlln5++-GXXb\FF2AJw'11$7G??7###Wg.L==AGG###wq,/7793;;=I;;#''!!!r/   c                     t        ddddddddd	d
d      \  } }t        t        d      }|j                  | |      j	                  |       }t        t        dd      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d|d d t        ||       y )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


1
%
/
/
2C	B	Q	1 	
 sD!++-GXXb\FF2AJw'r/   c                     t        dddd      \  } }t        t        d      }|j                  | |      j	                  |       }t        | |       t        t        dd	      j                  | |      j	                  |       }t        ||       y )
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


1
%
/
/
2Cq# 	 	F	Q	1 	
 sD!r/   dtype_inc                    t        dddd      \  }}|j                  |       }t        t        d      }|j	                  ||       |j                         }t        j                  dt              }t        ||       t        j                  t        d	      5  |j                  |      }d d d        j                  d
k(  sJ |j                  | k(  sJ y # 1 sw Y   ,xY w)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DAq 	
A#I3!Q++-GXXb%Fw'	k)D	E 4&003
4w&&&x'''4 4s   CCc                     t        ddddddddd	d
d      \  } }t        t        d      }|j                  | |      j	                  |       }t        j                  d      }d|d d dD ][  }t        t        |d      j                  | |      j	                  |       }t        ||       |j                         }t        ||       ] y )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


1
%
/
/
2CXXb\FF2AJ% )#IDESAYYq\ 	
 	3%#//1()r/   c                     | j                   }| j                         }t        t        j                  ||         t        j                  |      |j                          d         y N)scores_r   r   r!   sortsum)score_filterscoresr   s      r-   assert_best_scores_keptr     sJ    !!F&&(GBGGF7O,bggfow{{}n>N.OPr/   c                     t        ddddd      \  } }t        t        d      }|j                  | |      j	                  |       }t        |       t        t        d	d
      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d|d d t        ||       | j                         }d|d d t        j                  |      f<   t        ||j                  |             t        |j                  t              |j                  |j                  t                           y )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


1
%
/
/
2C-.<rJ	Q	1 	
 sD!++-GXXb\FF2AJw'
&&(C&'C2>>'""#s-??DE

4+==cjj>NOr/   c                     t        ddddd      \  } }t        t        d      }|j                  | |      j	                  |       }t        |       t        t        d	d
      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }t        ||       y )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


1
%
/
/
2C-.<sK	Q	1 	
 sD!++-GWWR[Fw'r/   c                     t        dddddd      \  } }t        t        d      }|j                  | |      j	                  |       }t        |       t        t        d	d
      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d|d d t        ||       y )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


1
%
/
/
2C-.81E	Q	1 	
 sD!++-GXXb\FF2AJw'r/   c                     t        dddddd      \  } }t        t        d	      }|j                  | |      j	                  |       }t        j                  d      }d
|d d dD ]  }t        t        |d      j                  | |      j	                  |       }t        ||       |j                         }t        |d d t        j                  dt                     t        j                  |dd  d
k(        dk  rJ  y )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
%
/
/
2CXXb\FF2AJ% 	,#Lt4HSAYYq\ 	
 	3%#//172A;D(ABvvgabkQ&'!+++	,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
      }|j                  | |       |j                         }t        |t        j                  ddg             t        t        d      }|j                  | |       |j                         }t        |t        j                  ddg             t        t        d      }|j                  | |       |j                         }	t        |	t        j                  ddg             t        t        d
      }
|
j                  | |       |
j                         }t        |t        j                  ddg             t        t        d
      }|j                  | |       |j                         }t        |t        j                  ddg             y )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1ajOFGfbhhZ/@&ABgrxxZ0H'IJ4s+JNN1a((*K{BHHdE]$;<tq)LQ ,,.M}bhhe}&=>("=!Q*668)288T5M+BC4s+JNN1a((*K{BHHdE]$;<4s+JNN1a((*K{BHHdE]$;<r/   r   )gMbP?r   r   rK   )r    rT   r   c           
          d }t        j                  t        d      D cg c]  } || ||       c}      }| |k\  sJ |dk7  r|| dz  kD  sJ y y c c}w )Nc                 
   t        dd|d|d      \  }}t        j                  d      5  t        t        |       }|j                  ||      j                  |      }t        t        d	| 
      j                  ||      j                  |      }d d d        t               j                         }t        j                  ||d  dk(        }	t        j                  |d | dk(        }
|	dk(  ry|	|
|	z   z  }|S # 1 sw Y   kxY w)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 		 !*,e D#''1-77:C'5NQ1 		 	3%#//1 ffW]^%<%ABVVGN]$;q$@A!#2!44 
 $#+		 		s   A$C99Dr   r   r   )r!   meanrange)r   rK   r   rS   r   s        r-   test_select_fdr_regressionr    sm    $H 77LQRUJWLE=,	7W (((( q #ebj000 ! 	Xs   Ac                     t        ddddd      \  } }t        t        d      }|j                  | |      j	                  |       }t        t        d	d
      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d|d d t        |d d t        j                  dt                     t        j                  |dd  dk(        dk  sJ y )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
%
/
/
2C5E	Q	1 	
 sD!++-GXXb\FF2AJwr{BGGD$=>66'!"+"#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	        |        y )	Nr   r    r    r   r   r    r    r   r   r    r    r   r    c                     | d   | d   fS Nr    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     Y	9	5B	
A+K 	%++/_S../Q7xx{a$++/_S../Q7xx{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	        |        y )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    
Y	9	5B	
A+K 	%{r:/_S../Q7xx{a${r:/_S../Q7xx{a$	%r/   c                  h   t        j                  g dg dg      } ddg}t        j                  d      D ]{  }| d d |f   }t	        t
        d      j                  ||      }|j                  dk(  sJ d	|vsJ t        t
        d
      j                  ||      }|j                  dk(  sJ d	|vr{J  y )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!Q7xx6!!!2~~dr2@@AFxx6!!!2~~r/   c                  6   t        j                  g dg dg dg      } ddgddgddgg}t        t        d      j	                  | |      }|j
                  dk(  sJ d|vsJ t        t        d	
      j	                  | |      }|j
                  dk(  sJ d|vsJ y )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                     t        j                  g dg dg      } ddg}dD ]]  }t        t        |      j	                  | |      }|j                  g dg      }t        |d   t        j                  d      | d         _ y )	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_scoresr-  %  sw    hh	9-.G!fG B
$*-11'7C	{+6!9biilJ;<&@ABr/   c                  
   g dg dg dg} g d}t        t        d      t        t        d      fD ]O  } t        |j                        | |       t        |j                  d	
      t        j                  ddg             Q y )Nr   r    r   r   ra   ra   r         ?r2  r    r   r    rE   r   r  r   T)indicesr    )	r   r   r   r   r   r   r   r!   r   )r:   r;   selects      r-   	test_nansr6  0  sz     
K/AA 	I#r2 O 	$

#Aq)6--d-;RXXq!f=MNOr/   c                  X   g dg dg dg} g d}d}t        j                  t        |      5  t        d      j	                  | |       d d d        t        j                  t        |      5  t        d	d
      j	                  | |       d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nr/  r0  r1  r3  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_kr9  ?  s    	K/AA
PC	k	- #aQ"#	k	- BXQ7;;AqAB B# #B Bs   B-B B B)c                      t        dd      \  } }d| d d df<   t        j                  t              5  t	        | |       d d d        y # 1 sw Y   y xY w)Nr   rT   )rI   rJ   rz   r   )r   r   r   r   r   r  s     r-   test_f_classif_constant_featurer;  J  sK     :DAqAadG	k	" !Q  s   A		Ac                     t         j                  j                  d      } | j                  dd      }| j	                  ddd      }t        d      j                  ||      t        d      j                  ||      t        d      j                  ||      t        d      j                  ||      t        d	      j                  ||      g}|D ]u  }t        |j                         t        j                  d             t        j                  t         d
      5  |j#                  |      }d d d        j$                  dk(  ruJ  y # 1 sw Y   xY w)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_selectedr@  S  s!   
))


"C 	RAAqr"A!!!Q'!!!Q'!!!Q'A&**1a0aQ" % +8//1288B<@\\+-HI 	/!++A.J	/7***	+	/ 	/s   E

E	c                     t        ddddddddddd	      \  } }t        t        d
      }|j                  | |      j	                  |       }t        t        dd      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d|d d t        ||       t        t        d      }|j                  | |      j	                  |       }t        t        dd      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d|d d t        ||       y )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_classifrB  h  sO   DAq $$71=


1
%
/
/
2C 3(!L	Q	1 	
 sD!++-GXXa[FF2AJw' ))<L


1
%
/
/
2C 3,bQ	Q	1 	
 sD!++-GXXa[FF2AJw'r/   c                     t        dddddd      \  } }t        t        d      }|j                  | |      j	                  |       }t        |       t        t        dd	      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d
|d d t        ||       t        t        d      }|j                  | |      j	                  |       }t        t        dd	      j                  | |      j	                  |       }t        ||       |j                         }t        j                  d      }d
|d d t        ||       y )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_regressionrD    sJ   DAq $$:a@


1
%
/
/
2C-. 6XQO	Q	1 	
 sD!++-GXXb\FF2AJw' ))?BO


1
%
/
/
2C 6\QST	Q	1 	
 sD!++-GXXb\FF2AJw'r/   c                     t        j                  d      } t        dd      \  }}|j                  t        j
                  t        j                  d      }| j                  |d   d      |d<   |j                  fd	}t        |d
      j                  d      }|j                  ||      }t        |j                  g d       |j                  j                         D ]  \  }}||j                  |   k(  rJ  y)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)rJ  r   )binspetal_width_binnedc                 j    dddddd}t        j                  D cg c]  }||   	 c}      S c c}w )Nr    rE   r   r3   rT   )zsepal length (cm)zsepal width (cm)rI  rJ  rL  )r!   asarray)r:   r;   rankingnamecolumn_orders       r-   r?  z.test_dataframe_output_dtypes.<locals>.selector  s<    !" !!" !"#
 zz\BT74=BCCBs   0r   r   )r   )rI  rJ  rL  N)r   importorskipr   r8   r!   float32float64cutcolumnsr   
set_outputr  r   dtypesitems)	pdr:   r;   r?  r   outputrP  r   rQ  s	           @r-   test_dataframe_output_dtypesr\    s    
 
		X	&Bt4DAq	!# "

	
	A !ffQ'9%:fDA99LD $H2===Q,,Q2FW }}**, 'e&&&'r/   r?  r   P   r   r   r   r   c                 L   t         j                  j                  d      }|j                  dd      }dd}| j	                  |       | j                  |       | j                  |      }t        ||ddddf          | j                  |      }t        ||ddddf          y)	zeCheck support for unsupervised feature selection for the filter that could
    require only `X`.
    r   r   rT   Nc                 0    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    xx((r/   )r`  r3   r   )	r!   r"   r#   r$   
set_paramsr   r   r   r  )r?  r&   r:   r`  X_transs        r-   test_unsupervised_filterrc    s     ))


"C		"aA) :.LLO  #GGQq"1"uX&$$Q'GGQq"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   finforT  maxinfr   r   r   r   r   r   rS  r   r   r   r   r   r   r   r   r  r  r  r  r%  r(  r-  r6  r9  r;  r@  rB  rD  r\  rc  r  r/   r-   <module>rs     sa       )  L L    $  / 2 .9- :-8 D%=1F 2F* .9# :#6
!," , BHHq!fq!fq"g1v67BHH\"BHHc7^$	
 BHHq!fq!fq"g1v67BHH\"BHHc3Z 	
 BHHq!fq!fq"g1v67BHH\"BHHbffg&'	
 BHHq!fq!fq"g1v67BHH\"BHHbffbff%&	
- B	HC B	H A BHHq!fq!fq"g1v67BHH\"BHHc9%&BHHc:&'	
 BHHq!fq!fq"g1v67BHH\"BHHc3Z BHHc3Z 	
 BHHq!fq!fq"g1v67BHH\"BHHhbhhrzz*..9:BHHc8_%	
 BHHq!fq!fq"g1v67BHH\"BHHhbhhrzz*..9:BHHc8_%	
 BHHq!fq!fq"g1v67BHH\"BHHbffi()BHHbffj)*	
 BHHq!fq!fq"g1v67BHH\"BHHbffbff%&BHHbffbff%&	
 BHHq!fq!fq"g1v67BHH\"BHHbffh'(BHHc8_%	
 BHHq!fq!fq"g1v67BHH\"BHHbffh'(BHHc8_%	
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/   