
    t]e                        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Zddl	Z	ddl
Z
ddlmZ ddl	mZ ddlmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZmZ ddlmZ ddl m!Z! ddl"m#Z# ddl$m%Z% ddl&m'Z'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0 ddl1m2Z3 ddl1m4Z4 ddl5m6Z6  e+e
j7                  Z8dZ9dZ: G d d          Z; G d de;          Z< G d de<          Z= G d d e=          Z> G d! d"e>          Z? G d# d$e          Z@ G d% d&e          ZA G d' d(e>          ZB G d) d*e          ZC G d+ d,e<          ZD G d- d.e<          ZEd/ ZFd0 ZGd1 ZHd2 ZId3 ZJd4 ZKd5 ZLd6 ZMd7 ZNd8 ZOd9 ZPd: ZQd; ZRd< ZSd= ZTe	jU        V                    d>dd>g          d?             ZWe	jU        V                    d>dd>g          d@             ZXdA ZYdB ZZdC Z[dD Z\dE Z]dF Z^dG Z_dH Z`dI ZadJ ZbdK ZcdL ZddM ZedN ZfdO ZgdP ZhdQ ZidR ZjdS ZkdT ZldU ZmdV ZndW ZodX ZpdY ZqdZ  ejr         e/d[ e>            fd\ eA            fg          d]f e/d[ e>            fd^d\ eA            fg          d_f e/d[ e>            fd`d\ eA            fg          d_f e/d[ e>            fdag          d]f e/dbdc e@            fg          ddf e/dedc e@            fg          ddf e!df e@            fdg e@            fg          dhf e!didg e@            fdjg          dkfgg dl          D             Zse	jU        V                    dmes          dn             Ztdo Zudp Zve	jU        w                    e8 e+dq          k     drs          dt             ZxdS )uz
Test the pipeline module.
    N)mkdtemp)Memory)raises)BaseEstimatorclone)KMeans)	load_irismake_classification)PCA)SelectKBest	f_classif)LinearRegressionLogisticRegression)LocalOutlierFactor)FeatureUnion)StandardScaler)SVC)assert_allcloseassert_array_almost_equalassert_array_equal)parse_version)make_imbalance)Pipelinemake_pipeline)EditedNearestNeighbours)RandomUnderSampler)check_param_validation)zthe pizza pizza beer copyrightzthe pizza burger beer copyrightz!the the pizza beer beer copyrightzthe burger beer beer copyrightzthe coke burger coke copyrightzthe coke burger burgerg-C6?c                       e Zd ZdZddZdS )NoFitz*Small class to test parameter dispatching.Nc                 "    || _         || _        d S Nab)selfr#   r$   s      <lib/python3.11/site-packages/imblearn/tests/test_pipeline.py__init__zNoFit.__init__;   s        NN)__name__
__module____qualname____doc__r'    r(   r&   r   r   8   s.        44     r(   r   c                   "    e Zd Zd ZddZd ZdS )NoTransc                     | S r!   r.   r%   Xys      r&   fitzNoTrans.fitA       r(   Fc                      | j         | j        dS )Nr"   r"   )r%   deeps     r&   
get_paramszNoTrans.get_paramsD   s    V$&)))r(   c                      |d         | _         | S )Nr#   )r#   )r%   paramss     r&   
set_paramszNoTrans.set_paramsG   s    r(   NF)r*   r+   r,   r5   r9   r<   r.   r(   r&   r0   r0   @   sF          * * * *    r(   r0   c                       e Zd ZddZdS )NoInvTransfNc                     |S r!   r.   r2   s      r&   	transformzNoInvTransf.transformM       r(   r!   )r*   r+   r,   rA   r.   r(   r&   r?   r?   L   s(             r(   r?   c                       e Zd ZddZd ZdS )TransfNc                     |S r!   r.   r2   s      r&   rA   zTransf.transformR   rB   r(   c                     |S r!   r.   r%   r3   s     r&   inverse_transformzTransf.inverse_transformU   rB   r(   r!   )r*   r+   r,   rA   rH   r.   r(   r&   rD   rD   Q   s7               r(   rD   c                       e Zd Zd ZdS )TransfFitParamsc                     || _         | S r!   )
fit_params)r%   r3   r4   rL   s       r&   r5   zTransfFitParams.fitZ   s    $r(   N)r*   r+   r,   r5   r.   r(   r&   rJ   rJ   Y   s#            r(   rJ   c                   B    e Zd Zd	dZd Zd Zd Zd ZexZxZ	Z
d
dZdS )Mult   c                     || _         d S r!   mult)r%   rR   s     r&   r'   zMult.__init__`   s    			r(   c                     | S r!   r.   r2   s      r&   r5   zMult.fitc   r6   r(   c                 :    t          j        |          | j        z  S r!   npasarrayrR   rG   s     r&   rA   zMult.transformf       z!}}ty((r(   c                 :    t          j        |          | j        z  S r!   rU   rG   s     r&   rH   zMult.inverse_transformi   rX   r(   c                 b    t          j        |          | j        z                      d          S )NrO   axis)rV   rW   rR   sumrG   s     r&   predictzMult.predictl   s(    
1	)..A.666r(   Nc                 *    t          j        |          S r!   rV   r]   r2   s      r&   scorez
Mult.scoreq   s    vayyr(   )rO   r!   )r*   r+   r,   r'   r5   rA   rH   r^   predict_probapredict_log_probadecision_functionra   r.   r(   r&   rN   rN   _   s             ) ) )) ) )7 7 7 =DCMC%(9     r(   rN   c                   6    e Zd ZdZd Zd	dZd Zd	dZd
dZdS )	FitParamTzMock classifierc                     d| _         d S )NF
successful)r%   s    r&   r'   zFitParamT.__init__x   s    r(   Fc                     || _         d S r!   rh   r%   r3   r4   should_succeeds       r&   r5   zFitParamT.fit{   s    (r(   c                     | j         S r!   rh   rG   s     r&   r^   zFitParamT.predict~   s
    r(   c                 \    |                      |||           |                     |          S )N)rl   )r5   r^   rk   s       r&   fit_predictzFitParamT.fit_predict   s*    An555||Ar(   Nc                 8    |||z  }t          j        |          S r!   r`   )r%   r3   r4   sample_weights       r&   ra   zFitParamT.score   s     $M!Avayyr(   r=   r)   )	r*   r+   r,   r-   r'   r5   r^   ro   ra   r.   r(   r&   rf   rf   u   st             ) ) ) )          r(   rf   c                       e Zd ZdZd ZdS )DummyTransfz(Transformer which store the column meansc                 l    t          j        |d          | _        t          j                    | _        | S Nr   r[   rV   meanmeans_time
timestamp_r2   s      r&   r5   zDummyTransf.fit   s,    gaa((( )++r(   N)r*   r+   r,   r-   r5   r.   r(   r&   rs   rs      s)        22    r(   rs   c                        e Zd ZdZd ZddZdS )DummyEstimatorParamsz,Mock classifier that takes params on predictc                     | S r!   r.   r2   s      r&   r5   zDummyEstimatorParams.fit   r6   r(   Fc                     || _         | S r!   )got_attribute)r%   r3   r   s      r&   r^   zDummyEstimatorParams.predict   s    *r(   Nr=   )r*   r+   r,   r-   r5   r^   r.   r(   r&   r|   r|      s=        66       r(   r|   c                       e Zd ZdZd ZdS )DummySamplerz3Samplers which returns a balanced number of samplesc                 p    t          j        |d          | _        t          j                    | _        ||fS ru   rv   r2   s      r&   fit_resamplezDummySampler.fit_resample   s0    gaa((( )++!tr(   N)r*   r+   r,   r-   r   r.   r(   r&   r   r      s)        ==    r(   r   c                   2    e Zd ZdZddZd	dZd	dZd	dZdS )
FitTransformSamplez0Estimator implementing both transform and sampleFc                     d S r!   r.   rk   s       r&   r5   zFitTransformSample.fit   s    r(   Nc                 
    ||fS r!   r.   r2   s      r&   r   zFitTransformSample.fit_resample   s    !tr(   c                 T    |                      ||                              |          S r!   )r5   rA   r2   s      r&   fit_transformz FitTransformSample.fit_transform   s"    xx1~~''***r(   c                     |S r!   r.   r2   s      r&   rA   zFitTransformSample.transform   rB   r(   r=   r!   )r*   r+   r,   r-   r5   r   r   rA   r.   r(   r&   r   r      sj        ::      + + + +     r(   r   c                  j   t          j        ddgg          } t          dt                      fdt	                      ff          }|                    | d            |                    |            |                    d           |                    | d            |                    |            d S )NrO      transfclfr4   passthrough)r   )rV   arrayr   rD   rf   r5   ra   r<   r3   pipes     r&   test_pipeline_init_tupler      s    
1a&Ah)E9;;+?@AADHHQ$HJJqMMMOO=O)))HHQ$HJJqMMMMMr(   c                     t          t                    5  t                       d d d            n# 1 swxY w Y   t          d          \  } }d}t          t          |          5  t          dt	                      fg          }|                    | |           d d d            n# 1 swxY w Y   t                      }t          d|fg          }t          dd d |d|                    d	          }|                    d	          |k    sJ |	                    d
           |j
        d
k    sJ |j        J t          |           t          d          }t          t                    }t          d|fd|fg          }d}t          t          |          5  t          dt                      fd|fg          }|                    | |           d d d            n# 1 swxY w Y   |	                    d
           |j        d
k    sJ t          |           t          t"                    5  |	                    d
           d d d            n# 1 swxY w Y   t%          |          }|j        d         |j        d         usJ |                    d	          }	|                    d	          }
|                    d	          D ]}|	                    |           |                    d	          D ]}|
                    |           |	                    d           |	                    d           |
                    d           |
                    d           |	|
k    sJ d S )NT
return_X_yzILast step of Pipeline should implement fit or be the string 'passthrough'matchr   svc)svc__asvc__br   Fr8   皙?)r   scalegammaanovaz+implement fit and transform or fit_resamplet)svc__C)anova__Cr.   )r   	TypeErrorr   r	   r   r5   r0   dictr9   r<   r#   r$   reprr   r   r   C
ValueErrorr   named_stepspop)r3   r4   error_regexmodelr   r   expectedfilter1pipe2r;   params2xs               r&   test_pipeline_initr      s^   				  


               %%%DAqS  
		-	-	-  5%''*+,,		!Q               ))CeS\N##DU4#UUe9T9TUUH???%%1111 	OO3O5C<<<<5===JJJ G


C)$$Ggw'%677D @K			-	-	-  3		*UCL9::		!Q              
 	OO3O5C<<<<JJJ 

		 & &%%%& & & & & & & & & & & & & & & $KKEE"%*;E*BBBBB __$_''FD))G__%_((  

15))  A JJu
JJwKKKKWsB   044&5B''B+.B+8G""G&)G&3IIIc                     t                      } | j        }| j        }t          dd          }t	          t
          d          }t          d|fd|fg          }|                    ||           |                    |           |	                    |           |
                    |           |                    ||           d S )Nlbfgsauto)solvermulti_classr   kr   logistic)r	   datatargetr   r   r   r   r5   r^   rb   rc   ra   )irisr3   r4   r   r   r   s         r&   test_pipeline_methods_anovar     s    ;;D	AA
G
@
@
@C)q)))Ggw'*c):;<<DHHQNNNLLOOOq1JJq!r(   c                     t          dt                      fdt                      fg          } |                     d d d           |                     d           sJ | j        d         j        J | j        d         j        J t          t          d          5  |                     d d d           d d d            d S # 1 swxY w Y   d S )Nr   r   T)r3   r4   clf__should_succeedunexpected keyword argumentr   )clf__bad)
r   rD   rf   r5   r^   r   r#   r$   r   r   r   s    r&   test_pipeline_fit_paramsr     s   h)E9;;+?@AADHHttH666<<H%'///H%'///		!>	?	?	? , ,td+++, , , , , , , , , , , , , , , , , ,s   CCCc                     t          j        ddgg          } t          dt                      fdt	                      fg          }|                    | d            |                    |           dk    sJ |                    | d           dk    sJ |                    | d d           dk    sJ |                    | t          j        ddg                    d	k    sJ d S )
NrO   r   r   r   r      )r4   rq   rq      )rV   r   r   rD   rf   r5   ra   r   s     r&   %test_pipeline_sample_weight_supportedr   +  s    
1a&Ah)E9;;+?@AADHHQ$H::a==A::a4:  A%%%%::a4t:449999::arxA'7'7:88A======r(   c                     t          j        ddgg          } t          dt                      fdt	                      fg          }|                    | d            |                    |           dk    sJ |                    | d           dk    sJ t          t          d	          5  |                    | t          j        ddg                     d d d            d S # 1 swxY w Y   d S )
NrO   r   r   r   r   r   r   r   r   )	rV   r   r   rD   rN   r5   ra   r   r   r   s     r&   'test_pipeline_sample_weight_unsupportedr   6  s(   
1a&Ah)E466?;<<DHHQ$H::a==A::at:,,1111		!>	?	?	? 6 6

1BHaV$4$4
5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   *,C##C'*C'c                  T   t          dt                      fg          } t          t          d          5  |                     d           d d d            n# 1 swxY w Y   t          t          d          5  |                     d           d d d            d S # 1 swxY w Y   d S )NclszInvalid parameterr   nope)fake)fake__estimator)r   r   r   r   r<   r   s    r&   $test_pipeline_raise_set_params_errorr   A  s)   e-//0122D	
"5	6	6	6 % %V$$$% % % % % % % % % % % % % % % 

"5	6	6	6 0 0///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s#   AAA9BB!$B!c                     t                      } | j        }| j        }t          ddd          }t	          ddd          }t          d|fd	|fg          }|                    ||           |                    |           |                    |           |	                    |           |
                    ||           d S )
Nr   Tr   r   probabilityrandom_statefullmle
svd_solvern_componentswhitenpcar   )r	   r   r   r   r   r   r5   r^   rb   rc   ra   )r   r3   r4   r   r   r   s         r&   test_pipeline_methods_pca_svmr   L  s    ;;D	AA
GA
>
>
>C
eD
A
A
ACeS\E3<011DHHQNNNLLOOOq1JJq!r(   c                     t                      } | j        }| j        }|j        d         }t	          t          j        |                    }t                      }t          ddd          }t          dddd          }||fD ]}t          d	|fd
|fg          }	|	                    ||           |	                    |          }
|
j        |fk    sJ |	                    |          }|j        ||fk    sJ |	                    |          }|j        ||fk    sJ |	                    |          }|j        ||fk    sJ |	                    ||           d S )Nr   r   
randomizedT)r   r   r   r   ovr)r   r   r   decision_function_shape
preprocessr   )r	   r   r   shapelenrV   uniquer   r   r   r   r5   r^   rb   rc   rd   ra   )r   r3   r4   	n_samples	n_classesscalerr   r   preprocessingr   r^   proba	log_probard   s                 r&   'test_pipeline_methods_preprocessing_svmr   \  s   ;;D	AA
IBIaLL!!IF
1d
C
C
CC
 %	  C !#  ,6EFFA ,,q//},,,,""1%%{y)44444**1--	9i"88888 22155 &9i*@@@@@

1a# r(   c                  z   t                      } t                      }t          dd          }t                      }t          dd          }|                    | j                  }|                    |          }t          d|fd|fg          }|                    | j                  }t          ||           d S )Nr   
   )r   n_initr   Kmeans)r	   r   r   r   r   ro   r   r   )	r   r   kmscaler_for_pipelinekm_for_pipelinescaledseparate_predr   pipeline_preds	            r&   test_fit_predict_on_pipeliner     s     ;;DF	Qr	*	*	*B )**!B777O !!$),,FNN6**M h 34x6QRSSD$$TY//Mm];;;;;r(   c                      t                      } t          d          }t          d| fd|fg          }d}t          t          |          5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r   z+'PCA' object has no attribute 'fit_predict'r   ro   )r   r   r   r   AttributeErrorgetattr)r   r   r   r   s       r&   0test_fit_predict_on_pipeline_without_fit_predictr     s     F

 
 
 Ch'%677D?K	k	2	2	2 % %m$$$% % % % % % % % % % % % % % % % % %s   A**A.1A.c                     t          dt                      fdt                      fg          } |                     d d dd           | j        d         j        d         sJ | j        d         j        sJ d| j        d         j        vsJ d S )Nr   r   T)r3   r4   transf__should_get_thisr   should_get_thisrl   )r   rJ   rf   ro   r   rL   ri   r   s    r&   -test_fit_predict_with_intermediate_fit_paramsr    s     h 1 12UIKK4HIJJD
$$     H%01BCCCCE"----4#3H#=#HHHHHHHr(   c                     t                      } | j        }t          dd          }t          d|fg          }|                    |                              |          }|                    |          }|                    |          }t          ||           t          ||           |                    |          }|                    |          }t          ||           d S )Nr   r   )r   r   r   )	r	   r   r   r   r5   rA   r   r   rH   )	r   r3   r   pipelineX_transX_trans2X_trans3X_backX_back2s	            r&   test_pipeline_transformr	    s     ;;D	A
1
0
0
0C%''H ll1oo''**G%%a((H  ##Hgx000gx000''00F##G,,Gfg.....r(   c                     t                      } | j        }| j        }t                      }t	          d|fg          }|                    ||          }|                    ||                              |          }t          ||           d S )Nmock)	r	   r   r   rD   r   r   r5   rA   r   )r   r3   r4   r   r  r  r  s          r&   test_pipeline_fit_transformr    s    ;;D	AAXXF&&)*++H $$Q**Gzz!Q))!,,Hgx00000r(   c                     t                      } t                      }t          d| fg          }|j        d         | u sJ d|fg|_        d|j        vsJ |j        d         |u sJ d|fg|j        k    sJ |                    d| fg           d| fg|j        k    sJ |                    |           d|fg|j        k    sJ |                    dg           t          t                    5  |                    dggdg           d d d            n# 1 swxY w Y   t          t                    5  |                    dggdg           d d d            d S # 1 swxY w Y   d S )Nr  mock2)steps)r  )junkr.   rO   )	rD   r   r   r  r<   r   r   r5   r   )transf1transf2r  s      r&   test_set_pipeline_stepsr    s1   hhGhhG&'*+,,H'72222 ()HN-----(G3333g8>1111 01222W(.0000 W%%%W(.0000 |n---				 ! !qcUQC   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !				 + +uqc***+ + + + + + + + + + + + + + + + + +s$   0DDD5EE #E r   c                 X   t          j        dgg          }t          j        dg          }t          d          }t          d          }t          d          }t          d|fd| fd|fd	|fg          }|                    ||           g d
}d |j        D             }||k    sJ d S )NrO   r   rQ   r      m2badm3m5)r  r  r  r  c                     g | ]\  }}|S r.   r.   ).0name_s      r&   
<listcomp>z9test_pipeline_correctly_adjusts_steps.<locals>.<listcomp>  s    777WT1D777r(   )rV   r   rN   r   r5   r  )	r   r3   r4   mult2mult3mult5r  expected_namesactual_namess	            r&   %test_pipeline_correctly_adjusts_stepsr$    s    
1#A
!AaLLLEaLLLEaLLLE
,tUmdE]K H LLA...N77777L\))))))r(   c           	      z	  	
 t          j        dgg          }t          j        dg          }t          d          	t          d          
t          d          	
fd} |            }d}t          |gg|                    ||                     t          |g|                    |                              |                     t          ||                    |gg                     |                    |            d	}t          |gg|                    ||                     t          |g|                    |                              |                     t          ||                    |gg                     |j	        	| d ddd
d}|
                    d          |k    sJ |                    |            d}t          |gg|                    ||                     t          |g|                    |                              |                     t          ||                    |gg                     g d}|D ]} t          ||          |           |                    	           d	}t          |gg|                    ||                     t          |g|                    |                              |                     t          ||                    |gg                      |            }|                    |            d}|                    ||           |                    |           t          |gg|                    ||                              |                     t          |gg|                    ||                     t          ||                    |gg                     t          t          d          5  t          |d           d d d            n# 1 swxY w Y   d	}t          d	fd| fdfg          }t          |gg|                    ||                     t          |g|                    |                              |                     t          ||                    |gg                     d S )NrO   r   rQ   r   r  c                  4    t          d fdfdfg          S )Nr  r  last)r   )r  r   r!  s   r&   makez0test_set_pipeline_step_passthrough.<locals>.make  s$    $uGHHHr(      )r  r   F)r  r  r  r'  memorym2__mult
last__multverboseTr   )r  )rb   rc   rd   rA   ra   )r'     zhas no attribute 'predict'r   r^   r  r  r'  )rV   r   rN   r   r   r5   r^   rH   r<   r  r9   r   rA   r   r   r   )r   r3   r4   r(  r  expexpected_paramsother_methodsmethodr  r   r!  s            @@@r&   "test_set_pipeline_step_passthroughr3    s    	1#A
!AaLLLEaLLLEaLLLEI I I I I I I tvvH
Cw 6 6q! < <===uhll1oo55a88999q(44seW==>>>;'''
Cw 6 6q! < <===uhll1oo55a88999q(44seW==>>>	 	O D))_<<<<;'''
Cw 6 6q! < <===uhll1oo55a88999q(44seW==>>>  M   % %!&!!!$$$$5!!!
Cw 6 6q! < <===uhll1oo55a88999q(44seW==>>>tvvH[)))
CLLAqwQ 2 2 < <Q ? ?@@@w 6 6q! < <===q(44seW==>>>	&B	C	C	C % %)$$$% % % % % % % % % % % % % % % C${(;fe_MNNHw 6 6q! < <===uhll1oo55a88999q(44seW==>>>>>s   7PPPc                     t          t          d                    } | j         | j         | j         t          t                                } t          | d          rJ | j         | j         t          d          } | j        d         dk    sJ t          | d          rJ | j         | j         t          t                      t                                } t          | d          rJ | j         t          | d          rJ t          t                      t                                } t          | d          rJ | j         t          | d          rJ d S )Nr  r^   r   r   )r   r   rH   )	r   rN   r^   rA   rH   rD   hasattrr  r?   )r  s    r&   test_pipeline_ducktypingr6  K  sW   T!WW%%HVXX&&Hx+++++]++H>! >>>>>x+++++VXX{}}55Hx+++++x!455555[]]FHH55Hx+++++x!45555555r(   c                     t                      } t                      }t          | |          }t          |t                    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ t          | |t                                }t          |t                    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ |j        d         d         dk    sJ d S )Nr   ztransf-1rO   ztransf-2r   	fitparamt)rD   r   
isinstancer   r  rf   )t1t2r   s      r&   test_make_pipeliner<  g  s    	B	BR  DdH%%%%%:a=z)))):a=z))))R--DdH%%%%%:a=z)))):a=z)))):a={******r(   c                     t                      } | j        }| j        }t          t	          d          t                                }|                    ||           t          t                    5  t          |d           d d d            n# 1 swxY w Y   t          t	          d          t          ddd                    }t          t                    5  t          |d           d d d            n# 1 swxY w Y   |                    ||           t          |j        t          j        |                     d S )NrO   r   classes_r   r   r   )r   r   r   )r	   r   r   r   r   r   r5   r   r   r   r   r   r>  rV   r   )r   r3   r4   regr   s        r&   test_classes_propertyr@  v  s   ;;D	AA
a(((*:*<*<
=
=CGGAqMMM			 ! !Z   ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! a'vANNN C 
		 ! !Z   ! ! ! ! ! ! ! ! ! ! ! ! ! ! !GGAqMMMs|RYq\\22222s$   1BBBC88C<?C<c                  	   t                      } | j        }| j        }t                      }	 t	          |d          }t          ddd          }t                      }t          dt          |          fd|fg          }t          d|fd|fg|	          }|	                    ||           |	                    ||           |j
        d         j        }	t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    ||          |                    ||                     t          |j
        d         j        |j
        d         j                   t%          |d
          rJ |	                    ||           t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    ||          |                    ||                     t          |j
        d         j        |j
        d         j                   |j
        d         j        |	k    sJ t          ddd          }
t                      }t          d|fd|
fg|	          }|	                    ||           t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    |          |                    |                     t          |                    ||          |                    ||                     t          |j
        d         j        |j
        d         j                   |j
        d         j        |	k    sJ 	 t'          j        |           d S # t'          j        |           w xY w)Nr   r-  r   Tr   r   r   r   r*  rx   transf_2)r	   r   r   r   r   r   rs   r   r   r5   r   rz   r   r^   rb   rc   ra   rx   r5  shutilrmtree)r   r3   r4   cachedirr*  r   r   r   cached_pipeexpected_tsclf_2rD  cached_pipe_2s                r&    test_pipeline_memory_transformerrL    sf   ;;D	AAyyH: "---TBBB(E&MM2UCLABB6 2UCLA&QQQ 	1A!-h7B4<<??K,?,?,B,BCCC4--a00+2K2KA2N2NOOO411!44k6S6STU6V6VWWW4::a++[->->q!-D-DEEEX&-#H-4	
 	
 	
 68,,,,, 	14<<??K,?,?,B,BCCC4--a00+2K2KA2N2NOOO411!44k6S6STU6V6VWWW4::a++[->->q!-D-DEEEX&-#H-4	
 	
 	
 &x0;{JJJJ 't!DDD== (#eU^4V
 
 
 	!Q 	4<<??M,A,A!,D,DEEE4--a00-2M2Ma2P2PQQQ""1%%}'F'Fq'I'I	
 	
 	
 	4::a++]-@-@A-F-FGGGX&-%j18	
 	
 	
 (4?;NNNNNhhs   Q+R. .Sc                  	   t          ddddgddddddd	
  
        \  } }t                      }	 t          |d
          }t          ddd          }t	                      }t          dt          |          fd|fg          }t          d|fd|fg|          }|                    | |           |                    | |           |j        d         j	        }t          |                    |           |                    |                      t          |                    |           |                    |                      t          |                    |           |                    |                      t          |                    | |          |                    | |                     t          |j        d         j        |j        d         j                   t!          |d          rJ |                    | |           t          |                    |           |                    |                      t          |                    |           |                    |                      t          |                    |           |                    |                      t          |                    | |          |                    | |                     t          |j        d         j        |j        d         j                   |j        d         j	        |k    sJ t          ddd          }	t	                      }
t          d|
fd|	fg|          }|                    | |           t          |                    |           |                    |                      t          |                    |           |                    |                      t          |                    |           |                    |                      t          |                    | |          |                    | |                     t          |j        d         j        |j        d         j                   |j        d         j	        |k    sJ 	 t#          j        |           d S # t#          j        |           w xY w)Nr   r   ?r   rO   r        
r   	class_sepweightsn_informativen_redundantflip_y
n_featuresn_clusters_per_classr   r   r   rB  r   Tr   r   r   rC  rx   rD  )r
   r   r   r   r   r   r   r5   r   rz   r   r^   rb   rc   ra   rx   r5  rE  rF  )r3   r4   rG  r*  r   r   r   rH  rI  rJ  rD  rK  s               r&   test_pipeline_memory_samplerrY    s   c
  DAq yyH: "---TBBB(E&MM2UCLABB6 2UCLA&QQQ 	1A!-h7B4<<??K,?,?,B,BCCC4--a00+2K2KA2N2NOOO411!44k6S6STU6V6VWWW4::a++[->->q!-D-DEEEX&-#H-4	
 	
 	
 68,,,,, 	14<<??K,?,?,B,BCCC4--a00+2K2KA2N2NOOO411!44k6S6STU6V6VWWW4::a++[->->q!-D-DEEEX&-#H-4	
 	
 	
 &x0;{JJJJ 't!DDD>> (#eU^4V
 
 
 	!Q 	4<<??M,A,A!,D,DEEE4--a00-2M2Ma2P2PQQQ""1%%}'F'Fq'I'I	
 	
 	
 	4::a++]-@-@A-F-FGGGX&-%j18	
 	
 	
 (4?;NNNNNhhs   Q+R0 0Sc                     t          ddddgddddddd	
  
        \  } }t          d
dd          }t                      }t          d          }t	          d|fd|fd|fg          }|                    | |           |                    |            |                    |            |                    |            |	                    | |           d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r   Tr   r   r   rusr   
r
   r   r   r   r   r5   r^   rb   rc   ra   r3   r4   r   r   r\  r   s         r&   !test_pipeline_methods_pca_rus_svmr_        c
  DAq GA
>
>
>C
%%C
!
,
,
,CeS\E3<%>??DHHQNNNLLOOOq1JJq!r(   c                     t          ddddgddddddd	
  
        \  } }t          d
dd          }t                      }t          d          }t	          d|fd|fd|fg          }|                    | |           |                    |            |                    |            |                    |            |	                    | |           d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r   Tr   r[  r\  r   r   r]  r^  s         r&   !test_pipeline_methods_rus_pca_svmrb  2  r`  r(   c                  :   t          ddddgddddddd	
  
        \  } }t          d
          }t          d|fg          }|                    | |          \  }}|                    | |          \  }}t	          ||t
                     t	          ||t
                     t                      }t          dt                      fd|fg          }|                    | |          \  }}|                    |           }	|                    |	|          \  }}d|t          j	        |t
          k     |t
           k              <   d|t          j	        |t
          k     |t
           k              <   t	          ||t
                     t	          ||t
                     d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r[  r\  )rtolr   )
r
   r   r   r   r   R_TOLr   r   rV   bitwise_and)
r3   r4   r\  r  r  y_transr  y_trans2r   X_pcas
             r&   test_pipeline_samplerj  M  s    c
  DAq !
,
,
,C%''H  ,,Q22GW))!Q//HhGXE2222GXE2222
%%C%%677H,,Q22GWa  E))%33Hh BCGBN7U?Guf,<==>DEHR^Hu,h%.?@@AGXE2222GXE222222r(   c                     t          ddddgddddddd	
  
        \  } }t          d
          }t                      }t                      }t          d|fd|fd|fg          }|                    | |                              |            d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r[  r   r\  pca2)r
   r   r   r   r5   rA   )r3   r4   r\  r   rl  r  s         r&   test_pipeline_sample_transformrm  t  s     c
  DAq !
,
,
,C
%%C55D%s|fd^DEEHLLA  #####r(   c                  Z   t          ddddgddddddd	
  
        \  } }t          d
d          }t          d |          }|                    | |           |                    |            |                    |            |                    |            |                    | |           d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r   r   r   )r
   r   r   r5   r^   rb   rd   ra   )r3   r4   r   r   s       r&   test_pipeline_none_classifierrp    s    c
  DAq G!
<
<
<Cs##DHHQNNNLLOOOq1JJq!r(   c                  |   t          ddddgddddddd	
  
        \  } }t          d
d          }t          d          }t          d ||          }|                    | |           |                    |            |                    |            |                    |            |                    | |           d S Nr   r   rN  r   rO   r   rO  rP  rQ  r   ro  r[  	r
   r   r   r   r5   r^   rb   rd   ra   r3   r4   r   r\  r   s        r&   %test_pipeline_none_sampler_classifierru    s    c
  DAq G!
<
<
<C
!
,
,
,CsC((DHHQNNNLLOOOq1JJq!r(   c                  |   t          ddddgddddddd	
  
        \  } }t          d
d          }t          d          }t          |d |          }|                    | |           |                    |            |                    |            |                    |            |                    | |           d S rr  rs  rt  s        r&   %test_pipeline_sampler_none_classifierrw    s    c
  DAq G!
<
<
<C
!
,
,
,CdC((DHHQNNNLLOOOq1JJq!r(   c                      t          ddddgddddddd	
  
        \  } }t          d
          }t          d |          }|                    | |           d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r[  r
   r   r   r   r3   r4   r\  r   s       r&   !test_pipeline_none_sampler_sampler{    sy    c
  DAq !
,
,
,Cs##Dar(   c                  "   t          ddddgddddddd	
  
        \  } }t          d
          }t          d |          }|                    | |           |                    |           }|                    |          }t          | |           d S )Nr   r   rN  r   rO   r   rO  rP  rQ  T)r   )r
   r   r   r5   rA   rH   r   )r3   r4   r   r   r  
X_inverseds         r&   test_pipeline_none_transformerr~    s     c
  DAq T


Cs##DHHQNNNnnQG''00Ja,,,,,r(   c                     t          ddddgddddddd	
  
        \  } }t          d
          }t          d          }t          t          d          }t          d|fd|fd|fg          }|                    | |           |                    |            |                    |            |	                    |            |
                    | |           d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r   r   r[  r   r\  r   r   )r
   r   r   r   r   r   r5   r^   rb   rc   ra   )r3   r4   r   r\  r   r   s         r&   test_pipeline_methods_anova_rusr    s    c
  DAq G
,
,
,C
!
,
,
,C)q)))GeS\GW#5
C7HIJJDHHQNNNLLOOOq1JJq!r(   c                  *   t          ddddgddddddd	
  
        \  } }t          d
          }t          t                    5  t	          dt                      fd|fg          }|                    | |           d d d            d S # 1 swxY w Y   d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r   r  stepr   )r
   r   r   r   r   r   r5   )r3   r4   r   r  s       r&   Atest_pipeline_with_step_that_implements_both_sample_and_transformr    s    c
  DAq G
,
,
,C				  f&8&:&:;j#=NOPPQ                 s   8BBBc                     t          ddddgddddddd	
  
        \  } }t          d
          }t          d          }t          t          d          }t          d|fd|fg          }t          t                    5  t          d|fd|fg          }|                    | |           d d d            d S # 1 swxY w Y   d S )Nr   r   rN  r   rO   r   rO  rP  rQ  r   r  r[  r   r\  r   pipe1r   )	r
   r   r   r   r   r   r   r   r5   )r3   r4   r   r\  r   r  r   s          r&   +test_pipeline_with_step_that_it_is_pipeliner  .  s*   c
  DAq G
,
,
,C
!
,
,
,C)q)))GuclWg$6788E				  7E*Z,=>??		!Q                 s   >,B77B;>B;c                     t          ddddgddddddd	
  
        \  } }t          d
          }t                      }t          ||          }|                    | |          \  }}t          ||          }|                    | |           |                    | |          \  }}t          ||           t          ||           d S Nr   r   rN  r   rO   r   rO  iP  rQ  *   r[  r
   r   ENNr   r   r5   r   	r3   r4   r\  ennr  X_fit_resample_resampledy_fit_resample_resampledX_fit_then_sample_resy_fit_then_sample_ress	            r&   9test_pipeline_fit_then_sample_with_sampler_last_estimatorr  F  s    c
  DAq "
-
-
-C
%%CS#&&H9A9N9NqRS9T9T66S#&&HLLA3;3H3HA3N3N00/1FGGG/1FGGGGGr(   c                     t          ddddgddddddd	
  
        \  } }t          d
          }t                      }t          |||          }|                    | |          \  }}t          |||          }|                    | |           |                    | |          \  }}t          ||           t          ||           d S r  r  r  s	            r&   Dtest_pipeline_fit_then_sample_3_samplers_with_sampler_last_estimatorr  _  s    c
  DAq "
-
-
-C
%%CS#s++H9A9N9NqRS9T9T66S#s++HLLA3;3H3HA3N3N00/1FGGG/1FGGGGGr(   c                  v   t                      } 	 t          | d          }t          t                      t	          d          |          }|j        |u sJ t          t                      t	          d                    }|j        J 	 t          j        |            d S # t          j        |            w xY w)Nr   rB  r   r   rC  )r   r   r   rs   r   r*  rE  rF  )rG  r*  r  s      r&   test_make_pipeline_memoryr  x  s    yyH "--- '0B0B0B6RRR&(((( '0B0B0BCC&&&&hhs   A;B" "B8c                      t          dt                      fdt                      fg          } |                     d d            |                     d d           | j        d         j        sJ d S )Nr   r   T)r3   r   )r   rD   r|   r5   r^   r   r   r   s    r&    test_predict_with_predict_paramsr    sr     h)E3G3I3I+JKLLDHHT4LL4tL,,,E"000000r(   c                      t          ddddgddddddd	
  
        \  } }t          d
          }t          |d           }|                    | |           d S r  ry  rz  s       r&   %test_resampler_last_stage_passthroughr    sy    c
  DAq "
-
-
-Cd##Dar(   c                  n   t          ddddgddddddd	
  
        \  } }t          d
          }t          ddd          }t          d          }t	          d|fd|fd|fg          }|                    | |           |                    |           j        | j        d         fk    sJ |                    | |          \  }}|                    |	                    |                     t          |                    |           |                    |                    |                                d S )Nr   g333333?gffffff?r   rO   r   rO  i  rQ  r  r[  r   r   Tr   noveltyr\  r   lof)r
   r   r   r   r   r5   score_samplesr   r   r   r   rA   )r3   r4   r\  r   r  r   X_resr  s           r&   *test_pipeline_score_samples_pca_lof_binaryr    sD   c
  DAq "
-
-
-C
eD
A
A
AC
T
*
*
*CeS\E3<%>??DHHQNNNa  &171:-77771%%HE1GGCe$$%%%D&&q))3+<+<S]]1=M=M+N+NOOOOOr(   c                  V   t          j        dgdgg          } t          j        ddg          }t          t                                }|                    | |           t          j        t          d          5  |                    |            d d d            d S # 1 swxY w Y   d S )NrO   r   z<'LogisticRegression' object has no attribute 'score_samples'r   )	rV   r   r   r   r5   pytestr   r   r  )r3   r4   r   s      r&   4test_score_samples_on_pipeline_without_score_samplesr    s    
1#sA
!QA +--..DHHQNNN	L
 
 
   	1	                 s   ;BB"%B"c                      t          t                                } t          j        t          d          5  |                     dgdggddgddg           d d d            d S # 1 swxY w Y   d S )Nz8Pipeline.fit does not accept the sample_weight parameterr   r   rO   r   )r   r   r  r   r   r5   )r   s    r&   test_pipeline_param_errorr    s    
*,,
-
-C	H
 
 
 : : 	!qc
QF1a&999	: : : : : : : : : : : : : : : : : :s   !A%%A),A)c              #      K   | ][\  \  }}}t          ||          rC|d k    r6t          |d          r&t          |j        d         d         t                    T|||fV  \dS )r   r  rO   N)r5  r9  r  rf   )r  estpatternr2  s       r&   	<genexpr>r    s       < <gh sFm<p 	/!!C!! 	"sy}Q'33 	"o 	'6n 	"!!!q< <r(   r   r   zv\[Pipeline\].*\(step 1 of 2\) Processing transf.* total=.*\n\[Pipeline\].*\(step 2 of 2\) Processing clf.* total=.*\n$)noopNz\[Pipeline\].*\(step 1 of 3\) Processing transf.* total=.*\n\[Pipeline\].*\(step 2 of 3\) Processing noop.* total=.*\n\[Pipeline\].*\(step 3 of 3\) Processing clf.* total=.*\n$)r  r   )r   N)r   NrR   zw\[Pipeline\].*\(step 1 of 2\) Processing transf.* total=.*\n\[Pipeline\].*\(step 2 of 2\) Processing mult.* total=.*\n$)r   r   mult1r  z\[FeatureUnion\].*\(step 1 of 2\) Processing mult1.* total=.*\n\[FeatureUnion\].*\(step 2 of 2\) Processing mult2.* total=.*\n$)r  drop)r   r  z@\[FeatureUnion\].*\(step 1 of 1\) Processing mult2.* total=.*\n$)r5   r   ro   zest, pattern, methodc                 l   t          | |          }g dg dg}dgdgg}|                     d            |||           |                                j        r
J d            |                     d            |||           t	          j        ||                                j                  sJ d S )	N)rO   r   r   )   r  r.     r   FrB  zGot output for verbose=FalseT)r   r<   
readouterroutrer   )r  r2  r  capsysfuncr3   r4   s          r&   test_verboser    s    3D	IIIA
qc
ANN5N!!!DAJJJ  ""&FF(FFFFNN4N   DAJJJ8GV..0045555555r(   c                  X   t          d          \  } }dddd}t          | ||          \  } }t                      }t          dd	d
          }t	          d          }t          d|fd|fd|fg          }|                    | |           |                    |           j        | j        d         fk    sJ |                    |	                    |                      t          |                    |           |                    |                    |                                d S )NTr   2   r)  rO  )r   rO   r   )sampling_strategyr   r   r   r  r\  r   r  r   )r	   r   r   r   r   r   r5   r  r   r   r   rA   )r3   r4   r  r\  r   r  r   s          r&   .test_pipeline_score_samples_pca_lof_multiclassr  #  s)   %%%DAq2"--!Q2CDDDDAq 

C
eD
A
A
AC
T
*
*
*CeS\E3<%>??DHHQNNNa  &171:-7777GGCa  !!!D&&q))3+<+<S]]1=M=M+N+NOOOOOr(   c                      t          dt                      fdt                      fg          } t          d|            d S )Nsampler
classifierr   )r   r   r   r   )r   s    r&   test_pipeline_param_validationr  6  sI    
'))	*\;M;O;O,PQ E :u-----r(   z1.2zrequires scikit-learn >= 1.2)reasonc                     t          j        d          } t          dd          \  }}t          t	                      t                      t                                                    d          }|                    ||           |d d         	                    ||          \  }}t          |t          j                  sJ t          |t          |                    sJ |                    d           |d d         	                    ||          \  }}t          || j                  sJ t          |t          |                    sJ d S )NpandasT)r   as_framedefault)rA   r  )r  importorskipr	   r   r   r   r   
set_outputr5   r   r9  rV   ndarraytype	DataFrame)pdr3   r4   r  r  y_ress         r&   test_pipeline_with_set_outputr  =  sC    
	X	&	&Bt444DAq,..0B0D0D j9j%%  LLACRC=--a33LE5eRZ(((((eT!WW%%%%%(+++CRC=--a33LE5eR\*****eT!WW%%%%%%%r(   )yr-   	itertoolsr  rE  ry   tempfiler   numpyrV   r  sklearnjoblibr   r   sklearn.baser   r   sklearn.clusterr   sklearn.datasetsr	   r
   sklearn.decompositionr   sklearn.feature_selectionr   r   sklearn.linear_modelr   r   sklearn.neighborsr   sklearn.pipeliner   sklearn.preprocessingr   sklearn.svmr   sklearn.utils._testingr   r   r   sklearn.utils.fixesr   imblearn.datasetsr   imblearn.pipeliner   r   imblearn.under_samplingr   r  r   imblearn.utils.estimator_checksr   __version__sklearn_versionJUNK_FOOD_DOCSre  r   r0   r?   rD   rJ   rN   rf   rs   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  markparametrizer$  r3  r6  r<  r@  rL  rY  r_  rb  rj  rm  rp  ru  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  productparameter_grid_test_verboser  r  r  skipifr  r.   r(   r&   <module>r     s7	        				                           - - - - - - - - " " " " " " ; ; ; ; ; ; ; ; % % % % % % < < < < < < < < E E E E E E E E 0 0 0 0 0 0 ) ) ) ) ) ) 0 0 0 0 0 0               
 . - - - - - , , , , , , 5 5 5 5 5 5 5 5 B B B B B B 6 6 6 6 6 6 B B B B B B- 344 	       	 	 	 	 	e 	 	 	    '   
    [       f       =   ,       ,    &       =       7             C C CL   , , ,> > >6 6 60 0 0   ! ! !H< < <.% % %	I 	I 	I/ / /(1 1 1+ + +8 }(=>>* * ?>* }(=>>K? K? ?>K?\6 6 68+ + +3 3 3(?  ?  ? DH  H  H V  6  6$3 $3 $3N$ $ $0  .  0  0  (- - -0  4  *  0H H H2H H H2	  	  	 1 1 1  &P P P:  : : :< <"3)"3 8VVXX.		0DEFFN 8VVXX.		@TUVVN !6688,/		, N 8VVXX.>??N *VTTVV,<=>>O 3fddff5EFGGO w/'44661BCDDT /'44661BDUVWWSY0	
b 	0//e3# 3#< < < ~ /1LMM6 6 NM6P P P&. . . mmE***3Q   & & & & &r(   