
    -i!]                        S SK r S SKrS SKJr  S SKrS SKrS SKJr  S SK	J
r
  S SKJrJrJr  S SKJrJr  S SKJr  S SKJrJr  S S	KJr  S S
KJr  S SK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'  S SK(J)r)J*r*J+r+J,r,J-r-   " S S\
5      r. " S S\
5      r/ " S S\5      r0\Rb                  " 5       r2\2Rf                  \2Rh                  sr3r5S r6S r7\Rp                  Rs                  S\3Rt                  S   S-   \;S4S \<S4S \;S4S \;S4/5      S 5       r=\Rp                  Rs                  SS S \3Rt                  S   S/5      S! 5       r>\Rp                  Rs                  SS" S# S$ /5      S% 5       r?\Rp                  Rs                  SS& S /5      S' 5       r@\Rp                  Rs                  SS( S) S* /5      S+ 5       rA " S, S-\
5      rBS. rCS/ rDS0 rE\-S1 5       rFS2 rG\Rp                  Rs                  S3\" S4S5S69\" S5S79\" SS5S89\" S/S5S89/5      S9 5       rH\-S: 5       rIS; rJS< rKS= rLS> rMS? rNS@ rOSA rPSB rQSC rRSD rSSE rTSF rU\Rp                  Rs                  SG\%" \" S S79\!" 5       5      SH4\" S S79\U4/5      SI 5       rV\Rp                  Rs                  SJ\\\/5      SK 5       rWSL rX\Rp                  Rs                  SM\;SNSO/\;SPSQ /45      SR 5       rY\Rp                  Rs                  SSSTSU/5      SV 5       rZSW r[g)X    N)Mock)datasets)BaseEstimator)CCAPLSCanonicalPLSRegression)make_friedman1make_regression)PCA)HistGradientBoostingClassifierRandomForestClassifier)NotFittedError)SelectFromModel)
ElasticNetElasticNetCVLassoLassoCVLinearRegressionLogisticRegressionPassiveAggressiveClassifierSGDClassifier)make_pipeline)	LinearSVC)MinimalClassifierassert_allcloseassert_array_almost_equalassert_array_equalskip_if_32bitc                   (   ^  \ rS rSrU 4S jrSrU =r$ )NaNTag%   c                 F   > [         TU ]  5       nSUR                  l        U$ NTsuper__sklearn_tags__
input_tags	allow_nanselftags	__class__s     b/var/www/html/venv/lib/python3.13/site-packages/sklearn/feature_selection/tests/test_from_model.pyr&   NaNTag.__sklearn_tags__&   !    w')$(!     __name__
__module____qualname____firstlineno__r&   __static_attributes____classcell__r,   s   @r-   r    r    %        r0   r    c                   (   ^  \ rS rSrU 4S jrSrU =r$ )NoNaNTag,   c                 F   > [         TU ]  5       nSUR                  l        U$ )NFr$   r)   s     r-   r&   NoNaNTag.__sklearn_tags__-   s!    w')$)!r0   r1   r2   r9   s   @r-   r<   r<   ,   r:   r0   r<   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )NaNTagRandomForest3   c                 F   > [         TU ]  5       nSUR                  l        U$ r#   r$   r)   s     r-   r&   #NaNTagRandomForest.__sklearn_tags__4   r/   r0   r1   r2   r9   s   @r-   rA   rA   3   r:   r0   rA   c                  
   [        SSSS S S9n S H^  n[        XS9nUR                  [        [        5        [
        R                  " [        5         UR                  [        5        S S S 5        M`     g ! , (       d  f       Mr  = f)N皙?
   Talphamax_itershufflerandom_statetol)gobbledigookz.5 * gobbledigook	threshold)	r   r   fitdataypytestraises
ValueError	transform)clfrP   models      r-   test_invalid_inputrZ   >   sd    
B4TC ;	9		$]]:&OOD! '& ; '&s   A33
B	c                      [        5       n [        U S9nUR                  [        [        5        UR
                  U L d   eg )N	estimator)r   r   rQ   rR   rS   r]   esttransformers     r-   test_input_estimator_unchangedra   I   s6    
 
"C!C0KOOD!  C'''r0   zmax_features, err_type, err_msg   zmax_features ==c                     g)Ng      ?r1   Xs    r-   <lambda>rf   Z   s    cr0   z3max_features must be an instance of int, not float.c                 .    [         R                  S   S-   $ Nrb   )rR   shaperd   s    r-   rf   rf   _   s    djjma'r0   c                     g)Nr1   rd   s    r-   rf   rf   d   s    br0   c                    [         R                  " U5      n[        SSS9n[        X0[        R
                  * S9n[        R                  " XS9   UR                  [        [        5        S S S 5        g ! , (       d  f       g = f)N   r   n_estimatorsrL   r]   max_featuresrP   match)reescaper   r   npinfrT   rU   rQ   rR   rS   )rq   err_typeerr_msgrX   r`   s        r-   test_max_features_errorrz   Q   s[    4 ii G
 aa
@C!RVVGK 
x	/a  
0	/	/s   A22
B rq      c                 Z   [        SSS9n[        X[        R                  * S9nUR	                  [
        [        5      nU b2  UR                  U :X  d   eUR                  S   UR                  :X  d   eg[        US5      (       a   eUR                  S   [
        R                  S   :X  d   eg)z>Check max_features_ and output shape for integer max_features.rm   r   rn   rp   Nrb   max_features_)
r   r   rv   rw   fit_transformrR   rS   r}   ri   hasattrrq   rX   r`   X_transs       r-   "test_inferred_max_features_integerr   u   s     !aa
@C!RVVGK ''a0G((L888}}Q;#<#<<<<;8888}}Q4::a=000r0   c                     grh   r1   rd   s    r-   rf   rf      s    qr0   c                      U R                   S   $ rh   ri   rd   s    r-   rf   rf      s    AGGAJr0   c                 4    [        U R                  S   S5      $ Nrb   i'  minri   rd   s    r-   rf   rf      s    #aggaj%2Hr0   c                     [        SSS9n[        X[        R                  * S9nUR	                  [
        [        5      nUR                  U " [
        5      :X  d   eUR                  S   UR                  :X  d   eg)z?Check max_features_ and output shape for callable max_features.rm   r   rn   rp   rb   N)	r   r   rv   rw   r~   rR   rS   r}   ri   r   s       r-   #test_inferred_max_features_callabler      so     !aa
@C!RVVGK ''a0G$$T(::::=={88888r0   c                 6    [        [        U S   5      S-  5      $ )Nr   r{   )roundlenrd   s    r-   rf   rf      s    E#ad)a-4Hr0   c                     / SQ/ SQ/ SQ/ SQ/n/ SQn[        SSS9n[        X0[        R                  * S	9nUR	                  X5      nUR
                  S
   UR                  :X  d   eg )N)gףp=
?q=
ףpgףp=
?)gRQg{Gzg333333)r   gQ޿gffffff)gQ?gGz?g?)r   rb   r   rb   rm   r   rn   rp   rb   )r   r   rv   rw   r~   ri   r}   )rq   re   rS   rX   r`   r   s         r-   test_max_features_array_liker      sn     			A 	A
 aa
@C!RVVGK ''-G=={88888r0   c                 4    [        U R                  S   S5      $ r   r   rd   s    r-   rf   rf      s    s1771:u%r0   c                      U R                   S   $ rh   r   rd   s    r-   rf   rf      s    r0   c                     grh   r1   rd   s    r-   rf   rf      s    qr0   c                     [        SSS9n[        U S9n[        X[        R                  * S9nUR                  [        [        5        UR                  [        5        g)z7Tests that the callable passed to `fit` is called on X.2   r   rn   )side_effectrp   N)	r   r   r   rv   rw   r~   rR   rS   assert_called_with)rq   rX   mr`   s       r-   test_max_features_callable_datar      sJ     !bq
AC&A!CBFF7SKdA&r0   c                   $    \ rS rSrS rSS jrSrg)FixedImportanceEstimator   c                     Xl         g N)importances)r*   r   s     r-   __init__!FixedImportanceEstimator.__init__   s    &r0   Nc                 N    [         R                  " U R                  5      U l        g r   )rv   arrayr   feature_importances_)r*   re   rS   s      r-   rQ   FixedImportanceEstimator.fit   s    $&HHT-=-=$>!r0   )r   r   r   )r3   r4   r5   r6   r   rQ   r7   r1   r0   r-   r   r      s    '?r0   r   c            
         [         R                  " SSSSSSSS9u  pU R                  S   n[        SSS	9n[	        U[
        R                  * S
9n[	        X2[
        R                  * S9nUR                  X5      nUR                  X5      n[        Xg5        [	        [        SSS9S9nUR                  X5      n[
        R                  " UR                  R                  5      n[
        R                  " U* SS9n	[        SUR                  S   S-   5       H  n
[	        [        SSS9U
[
        R                  * S9nUR                  X5      n[
        R                  " UR                  R                  5      n[
        R                  " U* SS9n[        U S S 2U	S U
 4   U S S 2US U
 4   5        M     [        UR                  R                  UR                  R                  5        g )N  rG      r   F	n_samples
n_featuresn_informativen_redundant
n_repeatedrK   rL   rb   r   rn   r]   rP   rp   g?*   rI   rL   r\   	mergesort)kind)r   make_classificationri   r   r   rv   rw   r~   r   r   abs
estimator_coef_argsortrange)re   rS   rq   r_   transformer1transformer2X_new1X_new2scores1candidate_indices1r   scores2candidate_indices2s                r-   test_max_featuresr      s   ''DA 771:L
 bq
AC"SRVVGDL"RVVGL ''-F''-FF# #UR-PQL''-Fff\,,223GWH;?Av||A23
&%b9#vvg

 ++A1&&00667ZZ{Ca#KZ0011Q8J;J8W5W3X	
 4 L++11<3J3J3P3PQr0   c            
         [         R                  " SSSSSSSS9u  pU R                  S   n[        R                  " / SQ5      n[        SUS-   5       H  n[        [        U5      U[        R                  * S	9nUR                  X5      n[        R                  " UR                  5       5      S   n[        U[        R                  " U5      5        UR                  S   U:X  a  M   e   g )
Nr   rG   r   r   Fr   rb   )
   r   r   r   r   r   r   r{   r{   rb   )rq   rP   )r   r   ri   rv   r   r   r   r   rw   r~   where_get_support_maskr   arange)re   rS   rq   feature_importancesr   r`   X_newselected_feature_indicess           r-   test_max_features_tiebreakr      s    ''DA 771:L((#ABA|a/0
%$%89#vvg

 ))!/#%88K,I,I,K#LQ#O 3RYYz5JK{{1~+++ 1r0   c            
      >   [         R                  " SSSSSSSS9u  p[        SSS9n[        US[        R
                  * S	9nUR                  X5      n[        US
S9nUR                  X5      n[        USS
S	9nUR                  X5      nUR                  S   [        UR                  S   UR                  S   5      :X  d   eUR                  [        R                  " U R                  S   5      [        R                  S S 24   5      n	[        XS S 2U	S   4   5        g )Nr   rG   r   r   Fr   r   rn   rp   g{Gz?r   rb   )r   r   r   r   rv   rw   r~   ri   r   rW   r   newaxisr   )
re   rS   r_   r   r   r   r   transformer3X_new3selected_indicess
             r-   test_threshold_and_max_featuresr      s
   ''DA !bq
AC"SqRVVGTL''-F"SDAL''-F"SqDQL''-F<<?c&,,q/6<<?CCCC#--bii
.CBJJPQM.RSFa!1!!4456r0   c            
         [         R                  " SSSSSSSS9u  p[        SSS9n[        S	S
/[        R
                  [        R                  /5       H  u  p4[        X#S9nUR                  X5        [        UR                  S5      (       d   eUR                  U 5      nUR                  S   U R                  S   :  d   eUR                  R                  n[        R                  " U5      U" U5      :  n[        X`S S 2U4   5        M     g )Nr   rG   r   r   Fr   r   rn   meanmedianr   r   rb   )r   r   r   ziprv   r   r   r   rQ   r   r   rW   ri   r   r   r   )	re   rS   r_   rP   funcr`   r   r   feature_masks	            r-   test_feature_importancesr     s    ''DA !bq
AC1BGGRYY3GH	%I{--/EFFFF%%a({{1~
***!,,AAvvk*T+->>!%1l?);< Ir0   c            
         [         R                  " SSSSSSSS9u  p[        R                  " UR                  5      nX!S:H  ==   S-  ss'   [        SSS9n[        US	9nUR                  XS S
9  UR                  5       nUR                  XUS
9  UR                  5       n[        R                  " Xe:H  5      (       a   eUR                  XSU-  S
9  UR                  5       n[        R                  " Xg:H  5      (       d   eg )Nd   rG   r   r   Fr   rb   )rL   fit_interceptr\   )sample_weight)
r   r   rv   onesri   r   r   rQ   r   all)re   rS   r   r_   r`   maskweighted_maskreweighted_masks           r-   test_sample_weightr   3  s    ''DA GGAGG$Mq&S 
!5
AC!C0KOOAO-((*DOOAO6113Mvvm+,,,,OOAM(9O:!335O66-23333r0   r]   rF   r   r   rL   l1_ratiorL   c           
         [         R                  " SSSSSSSS9u  p[        U S9nUR                  X5        UR	                  U5      n[
        R                  " UR                  R                  5      S:  n[        XAS S 2U4   5        g )	Nr   rG   r   r   Fr   r\   gh㈵>)
r   r   r   rQ   rW   rv   r   r   r   r   )r]   re   rS   r`   r   r   s         r-   test_coef_default_thresholdr   O  s     ''DA "I6KOOA!!!$E66+((../$6Deq$wZ0r0   c                     [         R                  " SSSSSSSSS9u  p[        5       n[        SS	/[        R
                  [        R                  /5       H  u  p4S
S[        R                  4 H  n[        [        5       X5S9nUR                  X5        [        UR                  S5      (       d   eUR                  U 5      nUR                  S
   U R                  S
   :  d   eUR                  X5        [        R                  R                  UR                   SUS9nX" U5      :  n	[#        XpS S 2U	4   5        M     M     g )Nr   rG   r   r   Fr   )r   r   r   r   r   rK   rL   	n_classesr   r   rb   r{   )r]   rP   
norm_orderr   )axisord)r   r   r   r   rv   r   r   rw   r   rQ   r   r   rW   ri   linalgnormr   r   )
re   rS   r_   rP   r   orderr`   r   r   r   s
             r-   test_2d_coefr   k  s    ''	DA 
C1BGGRYY3GH	BFF^E),.)K OOA!;117;;;;))!,E;;q>AGGAJ... GGAM))...FK&k)::L%eq,-?@ $ Ir0   c                  x   [        SSSS S9n [        U S9nUR                  [        [        [
        R                  " [        5      S9  UR                  nUR                  [        [        [
        R                  " [        5      S9  UR                  nX#L d   eUR                  [        5      nUR                  [
        R                  " [        [        45      [
        R                  " [        [        45      5        [        XAR                  [        5      5        [        [        5       S9n[        US5      (       a   eg )Nr   Frm   )rL   rK   rJ   rM   r\   classespartial_fit)r   r   r   rR   rS   rv   uniquer   rW   rQ   vstackconcatenater   r   r   )r_   r`   	old_model	new_modelX_transforms        r-   test_partial_fitr     s    
%tC "C0KD!RYYq\:&&ID!RYYq\:&&I!!!''-KOOBIItTl+R^^QF-CDk+@+@+FG ",B,DEK{M22222r0   c                      [        SS9n [        U S9nUR                  [        [        5        UR                  SS9  UR                  [        [        5        UR                  R                  S:X  d   eg )Nr   r   r\   r   )estimator__C)r   r   rQ   rR   rS   
set_paramsr   Cr^   s     r-   test_calling_fit_reinitializesr    s]    

#C!C0KOOD!,OOD!!!##s***r0   c                  Z   [        SSSSS S9n [        U 5      nUR                  [        [        5        UR                  [        5      nU R                  [        [        5        [        U SS9n[        UR                  [        5      U5        UR                  [        [        5        UR                  U Ld   e[        U SS9nUR                  [        [        5        [        UR                  [        5      U5        [        SSSSS S9n [        U SS9nSn[        R                  " [        US	9   UR                  [        [        5        S S S 5        [        R                  " [        US	9   UR                  [        [        5        S S S 5        [        R                  " [        US	9   UR                  [        5        S S S 5        [        SSSS S
9R                  [        [        5      n [        U SS9nUR                  [        [        5        [        UR                  R                  U R                  5        UR                  [        [        5        [        UR                  R                  U R                  5        g ! , (       d  f       GN9= f! , (       d  f       GN= f! , (       d  f       N= f)NrF   rG   Tr   rH   )prefitFzEWhen `prefit=True`, `estimator` is expected to be a fitted estimator.rr   )rI   rJ   rK   rM   )r   r   rQ   rR   rS   rW   r   r   rT   rU   r   r   r   r   )rX   rY   r   ry   s       r-   test_prefitr    s   
 cB1RV
WCC E	IIdA//$'KGGD!C-Eeood3[A	IIdA3&&& C.E	IIdAeood3[A cB1RV
WCC-EUG	~W	5		$ 
6	~W	5$" 
6	~W	5 
6
 cB$
G
K
KDRS
TCC-E	IIdAE$$**CII6	dAE$$**CII6 
6	5	5	5	5	5s$   +I8'J
#J8
J

J
J*c                     [        SSS9n U R                  [        [        5        [	        U SS S9nSn[
        R                  " [        US9   UR                  [        5        S	S	S	5        S
nUR                  US9  [
        R                  " [        SS9   UR                  [        5        S	S	S	5        g	! , (       d  f       NW= f! , (       d  f       g	= f)z:Check the interaction between `prefit` and `max_features`.rm   r   rn   Tc                      U R                   S   $ rh   r   rd   s    r-   rf   *test_prefit_max_features.<locals>.<lambda>  s    177ST:r0   r  rq   z[When `prefit=True` and `max_features` is a callable, call `fit` before calling `transform`.rr   Ng      @)rq   z!`max_features` must be an integer)r   rQ   rR   rS   r   rT   rU   r   rW   r   rV   )r]   rY   ry   rq   s       r-   test_prefit_max_featuresr	    s     'AAFIMM$IdAUVE	&  
~W	5 
6 L	,/	z)L	M 
N	M 
6	5 
N	Ms   B3C3
C
Cc                  P   [        SSSS9u  p[        / SQSS9n[        US9nUR                  X5        UR	                  5       nUR                  5       n[        R                  " [        U R                  S   5       Vs/ s H  nS	U 3PM
     sn5      U   n[        XG5        g
s  snf )zSCheck if ElasticNetCV works with a list of floats.

Non-regression test for #30936.rm   r   r   )r   r   rL   )g      ?      ?g      ?r   r\   rb   xN)r
   r   r   rQ   get_feature_names_outget_supportrv   r   r   ri   r   )re   rS   r]   selector	names_outr   iexpecteds           r-   'test_get_feature_names_out_elasticnetcvr    s     aqqIDA&7aHI3HLL..0I!Dxx%
*;<*;Q1QC*;<=dCHy+ =s   >B#c                     [        SSS9n U R                  [        [        5        [	        U SSS9n[        U5      R                  nSU S3n[        R                  " [        US	9   UR                  5         S
S
S
5        UR                  [        [        5        UR                  5       nUS/:X  d   eg
! , (       d  f       NB= f)z;Check the interaction between prefit and the feature names.r{   r   rn   Trb   r  zThis z_ instance is not fitted yet. Call 'fit' with appropriate arguments before using this estimator.rr   Nx3)r   rQ   rR   rS   r   typer3   rT   rU   r   r  )rX   rY   namery   feature_namess        r-   !test_prefit_get_feature_names_outr    s    
 aa
@CGGD!C1=E;D
v = 	=  
~W	5##% 
6 
IIdA//1MTF""" 
6	5s   $B11
B?c                  P   [        SSS9n [        U SS9nUR                  [        [        5        UR                  [        5      nU R                  [        [        5        S[        R                  " U R                  5      -  nU R                  U:  n[        U[        S S 2U4   5        g )Nr   r   rn   z0.5*meanrO   r  )
r   r   rQ   rR   rS   rW   rv   r   r   r   )r_   rY   r   rP   r   s        r-   test_threshold_stringr    s    
 bq
ACC:6E	IIdA//$'K GGD!bggc6677I##i/Dk44=9r0   c                     [        SSSSS S9n [        U SS9nUR                  [        [        5        UR                  [        5      nSUl        UR                  S	   UR                  [        5      R                  S	   :  d   eg )
NrF   rG   Tr   rH   z
0.1 * meanrO   z
1.0 * meanrb   )r   r   rQ   rR   rS   rW   rP   ri   )rX   rY   r   s      r-    test_threshold_without_refittingr    ss    
cB1RV
WCC<8E	IIdA//$'K #EOQ%//$"7"="=a"@@@@r0   c                      [        SS9n [        U S9n[        R                  5       n[        R
                  US'   [        R                  US'   UR                  [        [        5        g )Nr   r   r\   rb   )	r   r   rR   copyrv   nanrw   rQ   rS   )rX   rY   nan_datas      r-   test_fit_accepts_nan_infr"  '  sI    
(a
8Cc*Eyy{H&&HQK&&HQK	IIdAr0   c                      [        SSS9n [        R                  5       n[        U S9nUR	                  U[
        5        [        R                  US'   [        R                  US'   UR                  U5        g )Nr   r   rn   r\   rb   )
rA   rR   r  r   rQ   rS   rv   r   rw   rW   )rX   r!  rY   s      r-   test_transform_accepts_nan_infr$  4  sW    
#A
>Cyy{Hc*E	IIh&&HQK&&HQK	OOHr0   c                      [        5       n [        U S9nUR                  5       R                  R                  SL d   e[        5       n[        US9nUR                  5       R                  R                  SL d   eg )Nr\   TF)r    r   r&   r'   r(   r<   )allow_nan_estrY   
no_nan_ests      r-   'test_allow_nan_tag_comes_from_estimatorr(  B  sj    HMm4E!!#..88D@@@Jj1E!!#..88EAAAr0   c                 B    [         R                  " U R                  5      $ r   )rv   r   explained_variance_)pca_estimators    r-   _pca_importancesr,  L  s    66-3344r0   zestimator, importance_getterz$named_steps.logisticregression.coef_c                     [        U SUS9nUR                  [        [        5        UR	                  [        5      R
                  S   S:X  d   eg )Nr   )rP   importance_getterrb   )r   rQ   rR   rS   rW   ri   )r]   r.  r  s      r-   test_importance_getterr/  P  sJ     V7HH LLqd#))!,111r0   PLSEstimatorc                     [        SSSS9u  pU " SS9n[        [        U5      U5      R                  X5      nUR	                  X5      S:  d   eg)	zCheck the behaviour of SelectFromModel with PLS estimators.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/12410
r   rG   r   r   r   rL   rb   )n_componentsr  N)r	   r   r   rQ   score)r0  re   rS   r]   rY   s        r-   test_select_from_model_plsr5  b  sQ     B2AFDA!,I/)4i@DDQJE;;qs"""r0   c                  ,  ^ [         R                  " S5        [        R                  " SSS9u  mn [	        TR
                  5      nU4S jn[        [        5       US9R                  TU 5      n[        UR                  TR
                  5        [	        UR                  5       5      nXA:  d   e[        R                  " 5          [        R                  " S[        5        UR!                  TR"                  SS 5        S	S	S	5        g	! , (       d  f       g	= f)
znSelectFromModel works with estimators that do not support feature_names_in_.

Non-regression test for #21949.
pandasTas_frame
return_X_yc                 J   > [         R                  " TR                  S   5      $ rh   )rv   r   ri   )r]   re   s    r-   r.  Htest_estimator_does_not_support_feature_names.<locals>.importance_getterx  s    yy$$r0   )r.  errorrb   r   N)rT   importorskipr   	load_irissetcolumnsr   r   rQ   r   feature_names_in_r  warningscatch_warningssimplefilterUserWarningrW   iloc)rS   all_feature_namesr.  r  feature_names_outre   s        @r-   -test_estimator_does_not_support_feature_namesrJ  o  s    
 !t=DAqAII% /@	c!Qi 
 x11199=H::<=000		 	 	"g{3166!A;' 
#	"	"s   :D
Dzerror, err_msg, max_featuresz max_features == 10, must be <= 4rG   zmax_features == 5, must be <= 4c                 &    U R                   S   S-   $ rh   r   )r  s    r-   rf   rf     s    !''!*q.r0   c                     [         R                  " SSSS9u  p4[        R                  " XS9   [	        [        5       US9R                  X4SS/S9  S	S	S	5        g	! , (       d  f       g	= f)
zDTest that partial_fit from SelectFromModel validates `max_features`.r   r   r   r2  rr   r]   rq   rb   r   N)r   r   rT   rU   r   r   r   )r=  ry   rq   re   rS   s        r-   &test_partial_fit_validate_max_featuresrN    sZ     ''DA 
u	,#oL	

+aQF+
+ 
-	,	,s   #A
A'r9  TFc                    [         R                  " S5        [        R                  " U SS9u  p[	        [        5       SS9R                  X/ SQS9nU (       a!  [        UR                  UR                  5        g	[        US5      (       a   eg	)
zITest that partial_fit from SelectFromModel validates `feature_names_in_`.r7  Tr8  r   rM  )r   rb   r{   r   rB  N)rT   r>  r   r?  r   r   r   r   rB  rA  r   )r9  re   rS   r  s       r-   'test_partial_fit_validate_feature_namesrP    sz     !xDADAqIUU	i V H 855qyyA8%899999r0   c                     [        [        5       S9n SnSn[        R                  " [        US9 nU R                  [        [        5      R                  [        5        SSS5        [        WR                  R                  [        5      (       d   eU[        UR                  R                  5      ;   d   eg! , (       d  f       N_= f)zCheck that we raise the proper AttributeError when the estimator
does not implement the `partial_fit` method, which is decorated with
`available_if`.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/28108
r\   z5This 'SelectFromModel' has no attribute 'partial_fit'z8'LinearRegression' object has no attribute 'partial_fit'rr   N)r   r   rT   rU   AttributeErrorrQ   rR   rS   r   
isinstancevalue	__cause__str)
from_model	outer_msg	inner_msg	exec_infos       r-   )test_from_model_estimator_attribute_errorr[    s     !+;+=>JGIJI	~Y	79tQ++D1 
8ioo//@@@@IOO556666 
8	7s   .B66
C)\rt   rC  unittest.mockr   numpyrv   rT   sklearnr   sklearn.baser   sklearn.cross_decompositionr   r   r   sklearn.datasetsr	   r
   sklearn.decompositionr   sklearn.ensembler   r   sklearn.exceptionsr   sklearn.feature_selectionr   sklearn.linear_modelr   r   r   r   r   r   r   r   sklearn.pipeliner   sklearn.svmr   sklearn.utils._testingr   r   r   r   r   r    r<   rA   r?  irisrR   targetrS   rZ   ra   markparametrizeri   rV   	TypeErrorrz   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r  r  r  r  r"  r$  r(  r,  r/  r5  rJ  rN  rP  r[  r1   r0   r-   <module>ro     s   	      & H H < % S - 5	 	 	 + ! ] } /  
))T[[a"( % JJqMA	
 A	
 (	
 	
!2!32! !Q

1t)DE1 F1 &(HI9	9 *H!)LM9 N9" %';[I	?} ?(RV,472 = =248 Cb)R AB/qc3	11& A A>3(+(7V2,#&
:	A
B5 " #1-/A/CD2	
 
!	./	2	2 #|])KL	# M	#(8 "	7<	68PQ,, dE]3: 4:7r0   