U
    }h'                    @   s  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	 ddl
mZ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mZmZmZ dd
lmZmZmZ G dd deeZG dd deZG dd deZ G dd deZ!G dd deZ"dd Z#dd Z$dd Z%ej&j'dddgddgdej&j'd g e(ddgddggd!d"d#gdej&'d$ddgd%d& Z)d'd( Z*d)d* Z+d+d, Z,d-d. Z-d/d0 Z.d1d2 Z/d3d4 Z0d5d6 Z1d7d8 Z2d9d: Z3ej&'d;d<d=gd>d? Z4d@dA Z5dBdC Z6dDdE Z7dFdG Z8dHdI Z9dJdK Z:dLdM Z;dNdO Z<dPdQ Z=dRdS Z>dTdU Z?ej&'dVdge(dge@ddWe(ddggdXdY ZAej&'dVdge@ddWe(ddgdZgd[e(dZgej(dZgeBd\e@ddZe@dZdZg	d]d^ ZCej&'dVdge(dge@ddWe(dddggd_d` ZDdadb ZEdcdd ZFdedf ZGdgdh ZHdidj ZIdkdl ZJej&'dmdngedoe dgfdpe dWgfge dqdrfedoe dgfdpe dWgfgd=dqdrfedoe dgfdpd<dWgfgd=dqdsfedoe dgfdpd=dWgfgd=dqdrfedoe dgfgd=dqdsfedoe dgfdpe dWgfgd<dqdtfedoe dgfgd<dqdufgej&'dvdwdxgdydz ZKd{d| ZLd}d~ ZMdd ZNdd ZOej&'dejPe	jQgdd ZRdd ZSej&'dddgdejTdfddgddeBfddgdeUeVgdfdgdeBgdfdgdeBdfdgdeVdfdgdejTgdfdgdeUgdfdgdejTgdfddgdddfdgddeUgfg deVdfdddgdejTeBgdfgdd ZWdd ZXdd ZYdd ZZej&j'dg ej(g eUd\dd gd!ddgddd Z[ej&'ddWgdd dgdd ddgdd gdd Z\ej&'ddWgdd ddgdd gdd Z]ej&'d;d=e gdd Z^dd Z_ej&'d;d=e gdd Z`ej&'d;d=e gdd Zaej&'ddZdddWgej&'d;e d=d<gdd Zbdd Zcdd ZdG dd deZeej&'ddee ddgfdd=dgfgd=dddddgfdee ddgfdd=dgfgd<dddgfdee dgfdd<dgfgd=dddgfdeeddgdddgfgd=dddgfdeeddgdgfdd=dgfgd<dddgfdeedd҄ efdӃD dgfdeedd҄ efdӃD dgfgd=dddddddgfdd<dgfgd<g fdee e@dWdكfgd<ddgfdee dgfdd<e@ddڃfgd=dddgfdee ddgfdd=e@ddڃfgd=dddddgfdee e@ddfgd<ddgfdee dgfdd<e@ddfgd=ddgfdee ddgfdd=e@ddfgd=ddddddgfgdd݄ Zgej&'ddee ddgfdd=dgfgd=ddddgfdeedgddgfdd=dgfgd<ddgfdee dgfdd<dgfgd=dddgfdeeddgdddgfgd=dddgfdeeddgdgfdd=dgfgd<dddgfdeedd҄ efdӃD dgfdeedd҄ efdӃD dgfgd=dddddddgfdd<dgfgd<g fdee e@dWdӃfdd<dgfgd=dddgfdee dgfdd<e@ddڃfgd=dddgfdee ddgfdd=e@ddӃfgd<ddddgfdee e@ddǃfdd<dgfgd=dddgfdee dgfdd<e@ddfgd=ddgfdee ddgfdd=e@ddǃfgd<ddddgfdee ddgfdd=e@ddǃfgd<dddgfgdd Zhej&'ddee dgfdd=dgfgd<dfdeeddgdgfdd=dgfgd<dfdeedgdgfdd=dgfgd=dfdeedgdgfdd<dgfgd=dfdeeddgdgfdd=ddgfgd<dfdeedgdgfdd=dgfdeedgdgfgd=dfdeeddgdgfdd=dgfdeedgdgfgd=dfdeedd҄ efdD dgfdeedd҄ efdD dgfgd=dfdeeddge@dWdӃfdd=dgfdeedgdgfgd=dfdeeddgdgfdd=e@ddWfdeedgdgfgd=dfdeeddge@ddfdd=dgfdeedgdgfgd=dfdeeddgdgfdd=e@dd̃fdeedgdgfgd=dfgdd Ziej&'dddgej&'d;d<d=gdd Zjej&'d;d<d=gej&'dxddgdd Zkej&'d;d<d=gdd ZlG dd deZmej&'demddddgd dgfd<dgd gfd=ddgd dgfgdd Znej&j'dg e(ddgddggd!d"d#gddd Zodd Zpd	d
 ZqdS (  z
Test the ColumnTransformer.
    N)assert_allclose)sparse)BaseEstimatorTransformerMixin)ColumnTransformermake_column_selectormake_column_transformer)NotFittedError)VarianceThreshold)FunctionTransformer
NormalizerOneHotEncoderStandardScaler)assert_allclose_dense_sparseassert_almost_equalassert_array_equalc                   @   s    e Zd ZdddZdddZdS )TransNc                 C   s   | S N selfXyr   r   Q/tmp/pip-unpacked-wheel-ig1s1lm8/sklearn/compose/tests/test_column_transformer.pyfit"   s    z	Trans.fitc                 C   s,   t |dr| S |jdkr(t|jS |S )Nto_frame   )hasattrr   ndimnpZ
atleast_2dTr   r   r   r   	transform%   s
    

zTrans.transform)N)N__name__
__module____qualname__r   r!   r   r   r   r   r   !   s   
r   c                   @   s   e Zd ZdddZdd ZdS )DoubleTransNc                 C   s   | S r   r   r   r   r   r   r   0   s    zDoubleTrans.fitc                 C   s   d| S )N   r   r   r   r   r   r   r!   3   s    zDoubleTrans.transform)Nr"   r   r   r   r   r&   /   s   
r&   c                   @   s    e Zd ZdddZdddZdS )SparseMatrixTransNc                 C   s   | S r   r   r   r   r   r   r   8   s    zSparseMatrixTrans.fitc                 C   s   t |}t|| S r   )lenr   eyetocsr)r   r   r   Z	n_samplesr   r   r   r!   ;   s    zSparseMatrixTrans.transform)N)Nr"   r   r   r   r   r)   7   s   
r)   c                   @   s    e Zd ZdddZdddZdS )	TransNo2DNc                 C   s   | S r   r   r   r   r   r   r   A   s    zTransNo2D.fitc                 C   s   |S r   r   r   r   r   r   r!   D   s    zTransNo2D.transform)N)Nr"   r   r   r   r   r-   @   s   
r-   c                   @   s    e Zd ZdddZdddZdS )
TransRaiseNc                 C   s   t dd S Nspecific message
ValueErrorr   r   r   r   r   I   s    zTransRaise.fitc                 C   s   t dd S r/   r1   r   r   r   r   r!   L   s    zTransRaise.transform)N)Nr"   r   r   r   r   r.   H   s   
r.   c            
         s  t dddgdddggj} t dddg}t dddg}|dd}| }d|fdg|fddg|ft ddg|ftdd|ftdd|ft ddg|fddg|ft ddg|fddg|fg
}|D ]\ }td	t  fgd
d}t|| | t|	| 
| | td	t  fddfgd
d}t|| | t|	| 
| | qtdt dgfdt dgfg}t|| | t|	| 
| | t|jdkstddd}tdt dgfdt dgfg|d}	t |d | |d | gj}t|	| | t|		| 
| | t|	jdks4ttd	t ddgfgd	did}	t|	| d|  t|		| 
| d|  t|	jdkstd S )Nr   r   r'         TFtransdrop	remainderc                    s    S r   r   x	selectionr   r   <lambda>p       z)test_column_transformer.<locals>.<lambda>trans1trans2皙?
   r@   rA   transformer_weights)r   arrayr    reshapeslicer   r   r   fit_transformr   r!   r*   transformers_AssertionErrorvstack)
X_arrayZX_res_first1DZX_res_second1DX_res_first
X_res_bothcasesresctrF   bothr   r<   r   test_column_transformerP   sd    


  


 rU   c                  C   s   t dddgdddggj} dt dgfdt dgfg}t|}tt|}t|| ||  t|| 	| || 	|  d S )Nr   r   r'   r3   r4   r@   rA   )
r   rG   r    r   r   tupler   rJ   r   r!   )rN   transformersZct_with_listZct_with_tupler   r   r   4test_column_transformer_tuple_transformers_parameter   s     rX   c                     s  t d tdddgdddggj}  j| ddgd	}tdddgd
d}| }d|fdg|fddg|ftdd|fd|fdg|fddg|ftddg|ftdd|ftdd|ftddg|f jddgddgd|fddg|fg}|D ]\}t	dt
 fgdd}t||| t|||| t	dt
 fddfgdd}t||| t|||| qt	dt
 dgfdt
 dgfg}t||| t|||| t|jdkst|jd
 d dkstt	dt
 dgfdt
 dgfg}t||| t|||| t|jdksHt|jd
 d dks`tddd}t	dt
 dgfdt
 dgfg|d}t|d |d  |d |d  gj}t||| t|||| t|jdkst|jd
 d dkstt	dt
 ddgfgddid}t||d|  t|||d|  t|jdksht|jd
 d dkstt	dt
 ddgfgddid}t||d|  t|||d|  t|jdkst|jd
 d dkstG  fdddt}	t	d|	 jddfgdd}|| t	d|	 jdddgfg}|| | }
ddg|
_t	dt
 dfgdd}t||
| t||
|
| t|jdkst|jd
 d dkst|jd
 d dkstt|jd
 d dg d S )Npandasr   r   r'   r3   r4   firstsecondcolumnsr5   TF)indexr6   r7   r8   c                    s    S r   r   r   r<   r   r   r>      r?   z3test_column_transformer_dataframe.<locals>.<lambda>r@   rA   r9   rB   rC   rD   rE   c                       s,   e Zd Zdd ZdddZd	 fdd	ZdS )
z6test_column_transformer_dataframe.<locals>.TransAssertc                 S   s
   || _ d S r   expected_type_transform)r   ra   r   r   r   __init__  s    z?test_column_transformer_dataframe.<locals>.TransAssert.__init__Nc                 S   s   | S r   r   r   r   r   r   r     s    z:test_column_transformer_dataframe.<locals>.TransAssert.fitc                    s(   t || jstt | jr$| }|S r   )
isinstancera   rL   Seriesr   r   pdr   r   r!   
  s    z@test_column_transformer_dataframe.<locals>.TransAssert.transform)N)N)r#   r$   r%   rb   r   r!   r   re   r   r   TransAssert  s   
rg   r`   )pytestimportorskipr   rG   r    	DataFramerH   rI   rd   r   r   r   rJ   r   r!   r*   rK   rL   rM   r   copyr]   )rN   X_dfrO   rP   rQ   rR   rS   rF   rT   rg   ZX_df2r   )rf   r=   r   !test_column_transformer_dataframe   s    



  
  

	

rm   rY   TFnumpy)idscolumn_selectionlistboolZbool_intcallable_columnc           
         s(  t dddgdddggj}|}| rBtd}|j|ddgd	}n|}|rX fd
d}n }tdt ddgfdt |fg}t	|
|| t	|||| t|jdkstt|jd d tsttdt |fdt ddgfg}t	|
|| t	|||| t|jdks&tt|jd d ts@ttdt |fgdd}t	|
|| t	|||| t|jdkstt|jd d tstt g g g g}	tdt |fgdd}t	|
||	 t	||||	 t|jdks
tt|jd d ts$td S )Nr   r   r'   r3   r4   rY   rZ   r[   r\   c                    s    S r   r   r_   rp   r   r   r>   A  r?   z7test_column_transformer_empty_columns.<locals>.<lambda>r@   rA   r6   passthroughr8   r7   )r   rG   r    rh   ri   rj   r   r   r.   r   rJ   r   r!   r*   rK   rL   rc   )
rY   rp   rs   rN   rP   rf   r   columnrS   Zfixturer   rt   r   %test_column_transformer_empty_columns-  sD    

rw   c                  C   s  t ddd} tdt dgfdt dgfg}|| }|jtddtddtdddksdtt	|d d dgf |d d |jd f  t	|d d dgf |d d |jd f  td	t ddgfgd	d
id}|| }|jtddtdddkstt	|d d ddgf |d d |jd	 f  t	|d d g f |d d |jd f  tdt ddgfdt
 g fg}|| }|jtddtddtdddkstt	|d d ddgf |d d |jd f  t	|d d g f |d d |jd f  t	|d d g f |d d |jd f  td	t
 g fgdd}|| }|jtddtdddkshtt	|d d g f |d d |jd	 f  t	|d d ddgf |d d |jd f  d S )Nr4      r'   r@   r   rA   r   r@   rA   r9   r6   rB   rE   )r6   r9   r9   ru   r8   )r   arangerH   r   r   rJ   output_indices_rI   rL   r   r.   rN   rS   X_transr   r   r   &test_column_transformer_output_indicesc  sB     
** 
",( 
,((
"(r~   c                  C   s  t d} | jtdddddgd}tdt dgfd	t dgfg}||}|j	t
d
dt
ddt
d
d
dks|tt|d d d
gf |d d |j	d f  t|d d dgf |d d |j	d	 f  t|d d g f |d d |j	d f  tdt d
gfd	t dgfg}||}|j	t
d
dt
ddt
d
d
dksLtt|d d d
gf |d d |j	d f  t|d d dgf |d d |j	d	 f  t|d d g f |d d |j	d f  d S )NrY   r4   rx   r'   rZ   r[   r\   r@   rA   r   r   ry   r9   )rh   ri   rj   r   rz   rH   r   r   rJ   r{   rI   rL   r   )rf   rl   rS   r}   r   r   r   )test_column_transformer_output_indices_df  s0    
 
**( 
**r   c                  C   s  t dd } | d d df }| }ddgtddfD ]p}d|fd|ffD ]Z\}}tdt |fg|dd	}t || s~tt	|| | t	|
| | | qJq6ddgtddfD ]T}tdt |fgdd
}t || stt	|| | t	|
| | | qd S )Nrx   r'   r   r   r7   ru   r6   皙?r9   sparse_thresholdr   )r   r+   r,   rI   r   r   issparserJ   rL   r   r   r!   )ZX_sparserO   rP   colr9   rR   rS   r   r   r   $test_column_transformer_sparse_array  s$      r   c                  C   s   dt ddgdddgg} tdt dddgddddgg}tdt ddgfdt d	gfg}t|| | t|| 	| | d S )
Nr   nanar   br5   	numericalcategoricalr'   )
floatr   rG   r   r   r   r   rJ   r   r!   )ZX_listZexpected_resultrS   r   r   r   test_column_transformer_list  s    
r   c                  C   sh  t dddgdddggj} tdt dgfdt dfgdd	}||  || }t	|s`t
|j|jd |jd d fkst
t| d d dd f t |jd  t|jdkst
|jd
 d dkst
tdt dgfdt dfgdd	}||  || }t	|rt
|j|jd |jd d fks>t
t|d d dd f t |jd  d S )Nr   r   r'   r3   r4   r@   rA   r   r   r5   r9   rB   )r   rG   r    r   r   r)   r   r!   r   r   rL   shaper   toarrayr+   r*   rK   )rN   	col_transr}   r   r   r   'test_column_transformer_sparse_stacking  s*    

"*

$r   c               	   C   s   t jdddgdddggdd} tt d	gfd
ddgfdd}|| }| dksVtt| t dd	ddgd	ddd	gg tt d	gfd
d	gfdd}t	j
tdd ||  W 5 Q R X d S )Nr   r   Tr   r'   FOdtyper   ru         ?r   Zcsrz'For a sparse output, all columns shouldmatch)r   rG   r   r   rJ   Z	getformatrL   r   r   rh   raisesr2   )dfrS   r}   r   r   r   )test_column_transformer_mixed_cols_sparse  s     
 
 
(
  r   c                  C   sv  t jddgddggtdj} tdt dgfdt d	gfgd
d}|| }t|rXt	|j
rbt	dD ]R}tdtdddgfdtddd	gfg|d}|| }t|st	|j
sft	qfdD ]T}tdtdddgfdtddd	gfg|d}|| }t|rt	|j
rt	qdD ]X}tdtdddgfdtddd	gfg|d}|| }t|rbt	|j
rt	qd S )Nr   r   ABr   r@   r   rA   r   皙?r   )g㈵ ?r   T)sparse_outputF)g      ?r   )gQ?r   r   )r   rG   objectr    r   r   rJ   r   r   rL   Zsparse_output_)rN   r   rR   Zthresr   r   r   (test_column_transformer_sparse_threshold  sL    




r   c               
   C   s   t dddgdddggj} tdt dfg}d}tjt|d	 ||  W 5 Q R X tjt|d	 |	|  W 5 Q R X tdt
 dfg}|j|j	fD ]&}tjtd
d	 ||  W 5 Q R X qd S )N        r          @      @      @r6   r   z1D data passed to a transformerr   r0   )r   rG   r    r   r   rh   r   r2   r   rJ   r.   )rN   r   msgfuncr   r   r   $test_column_transformer_error_msg_1D;  s    r   c               	   C   s   t dddgdddggj} tddt dfg}d}tjt|d	 ||  W 5 Q R X tjt|d	 |	|  W 5 Q R X d S )
Nr   r   r'   r3   r4   )r@   r7   r   rA   z%the 'trans2' transformer should be 2Dr   )
r   rG   r    r   r-   rh   r   r2   rJ   r   rN   rS   r   r   r   r   test_2D_transformer_outputL  s    r   c               	   C   s   t d} tdddgdddggj}| j|ddgd	}td
t dfg}d}t jt	|d |
| W 5 Q R X t jt	|d || W 5 Q R X d S )NrY   r   r   r'   r3   r4   col1col2r\   r@   z%the 'trans1' transformer should be 2Dr   )rh   ri   r   rG   r    rj   r   r-   r   r2   rJ   r   )rf   rN   rl   rS   r   r   r   r   !test_2D_transformer_output_pandasZ  s    
r   r9   r7   ru   c              
   C   s  t dddgdddggj}dddgtddt d	gfD ]>}td
t |fg| d}tjtdd |	| W 5 Q R X q:dddgtddfD ]>}td
t |fg| d}tjtdd |	| W 5 Q R X qddg}td
t |fg| d}|	| t dddgdddgdddggj}d}tjt|d |
| W 5 Q R X t dddggj}d}tjt|d |
| W 5 Q R X d S )Nr   r   r'   r3   r4   g      ?stringsr   r6   r8   zNo valid specificationr   otherr   r   Specifying the columnsrx   	   zIX has 3 features, but ColumnTransformer is expecting 2 features as input.zIX has 1 features, but ColumnTransformer is expecting 2 features as input.)r   rG   r    rI   r   r   rh   r   r2   r   r!   )r9   rN   r   rS   ZX_array_morer   ZX_array_fewererr_msgr   r   r   'test_column_transformer_invalid_columnsj  s0    "
$r   c               	   C   sl   G dd dt } tdddgdddggj}td|  dgfg}d	}tjt|d
 || W 5 Q R X d S )Nc                   @   s   e Zd ZdddZdd ZdS )z<test_column_transformer_invalid_transformer.<locals>.NoTransNc                 S   s   | S r   r   r   r   r   r   r     s    z@test_column_transformer_invalid_transformer.<locals>.NoTrans.fitc                 S   s   |S r   r   r(   r   r   r   predict  s    zDtest_column_transformer_invalid_transformer.<locals>.NoTrans.predict)N)r#   r$   r%   r   r   r   r   r   r   NoTrans  s   
r   r   r   r'   r3   r4   r6   z1All estimators should implement fit and transformr   )	r   r   rG   r    r   rh   r   	TypeErrorr   )r   rN   rS   r   r   r   r   +test_column_transformer_invalid_transformer  s    r   c                  C   sb   t  } t }t| df|dgf}t|j \}}}|dks<t|| |fksLt|ddgfks^td S )NrZ   r[   )ZstandardscalerZ
normalizer)r   r   r   ziprW   rL   )scalernormrS   namesrW   r]   r   r   r   test_make_column_transformer  s    r   c                  C   sz   t d} tdddgdddggj}| j|ddgd	}t }td
t |jfg}t	||jf}t
|||| d S )NrY   r   r   r'   r3   r4   rZ   r[   r\   r   )rh   ri   r   rG   r    rj   r   r   r]   r   r   rJ   )rf   rN   rl   r   Zct1Zct2r   r   r   #test_make_column_transformer_pandas  s    
r   c               	   C   s   t  } t }t| df|dgfdddd}|jt| df|dgfjksHt|jdksVt|jdksdt|jdksrtt	d}t
jt|d$ t| df|dgfd	d
dd W 5 Q R X d S )NrZ   r[   rx   r7   g      ?)n_jobsr9   r   zRmake_column_transformer() got an unexpected keyword argument 'transformer_weights'r   rC   r   )pcaZTransfrE   )r   r   r   rW   rL   r   r9   r   reescaperh   r   r   )r   r   rS   r   r   r   r   #test_make_column_transformer_kwargs  s2    r   c                  C   s<   t  } t }t  }t| df|dgf|d}|j|ks8td S )NrZ   r[   r8   )r   r   r   r9   rL   )r   r   r9   rS   r   r   r   2test_make_column_transformer_remainder_transformer  s      r   c                  C   s   t dt dgfdt dgfg} d dd| jd d ddd| jd d ddd| jd ddd	}|  |ksjt| jdd
 |  d rt| jdd d ddd| jd d ddd| jd ddd}|  |kstd S )Nr@   r   rA   r   r7   333333?TF)r   r9   r   r@   trans1__copytrans1__with_meantrans1__with_stdrA   trans2__copytrans2__with_meantrans2__with_stdrW   rF   verbose_feature_names_outverbose)r   r   ru   r@   )r   r9   r   r@   rA   r   r   r   rW   rF   r   r   )r   r   rW   
get_paramsrL   
set_paramsrS   expr   r   r   &test_column_transformer_get_set_params  sJ    r   c                  C   s   t dddgdddggj} tdt dgfdtd	d
dgfg}t|drNt||  t|dsftt|j	d tsztt|j	j
tstt|j	d tstt|j	jtst|j	jjrt|j	j
jdkstd S )Nr   r   r   r   r   r@   r   rA   F)with_stdr   rK   )r   rG   r    r   r   r   rL   r   rc   Znamed_transformers_r@   rA   r   mean_rN   rS   r   r   r   (test_column_transformer_named_estimators  s    
r   c                  C   s   t dddgdddggj} tdt dgfg}||  t|jd d d	rRtt|j	d d d	sjttdt dgfg}|
|  t|jd d d	rtt|j	d d d	std S )
Nr   r   r   r   r   r6   r   r   r   )r   rG   r    r   r   r   r   rW   rL   rK   rJ   r   r   r   r   test_column_transformer_cloning  s    

r   c               	   C   s   t dddgdddggj} tdt ddgfg}tt |  W 5 Q R X |	|  t
d	}tjt|d
 |  W 5 Q R X d S )Nr   r   r   r   r   r6   r   r   zETransformer trans (type Trans) does not provide get_feature_names_outr   )r   rG   r    r   r   rh   r   r	   get_feature_names_outr   r   r   AttributeErrorr   r   r   r   )test_column_transformer_get_feature_names*  s    
r   c                  C   s  t dddgdddggj} tdt dgfdd	d
gfg}t dgdgdgg}t|| | t|| | | t	|j
dkst|j
d d dksttdd	dgfdd	d
gfg}t|| | jd t|| jd t	|j
dkst|j
d d dkstt dddgdddggj} tdt dgfddd
gfg}| }t|| | t|| | | t	|j
dkst|j
d d dkstd S )Nr   r   r   r   r   r@   r   rA   r7   r   r'   r5   r9   )rx   r   ru   )r   rG   r    r   r   r   rJ   r   r!   r*   rK   rL   r   )rN   rS   r   r   r   r   'test_column_transformer_special_strings9  s&    r   c                  C   s  t dddgdddggj} t dddgdd}t dddgdd}| }tdt dgfg}t|| | t|| 	| | t
|jdkst|jd d dkst|jd d d	kstt|jd d dg td
t dgfgdd}t|| | t|| 	| | t
|jdks0t|jd d dksHt|jd d dks`tt|jd d dg tdt dgfgdd}t|| |d d d d df  t|| 	| |d d d d df  t
|jdkst|jd d dkst|jd d dkstt|jd d dg tdd	dgfgdd}t|| | t|| 	| | t
|jdkst|jd d dkst|jd d dkstt|jd d dg tt dgf}|jd	kstd S )Nr   r   r'   r3   r4   r5   r@   r9   r7   r6   ru   r8   )r   rG   r    rH   r   r   r   rJ   r   r!   r*   rK   rL   r   r9   )rN   rO   ZX_res_secondrP   rS   r   r   r   !test_column_transformer_remainderT  sD    "(r   keyr   c                 C   s   t dddgdddggj}|}tdt | fgdd}t||| t|||| t	|j
dksnt|j
d	 d d
kst|j
d	 d dkstt|j
d	 d dg d S )Nr   r   r'   r3   r4   r@   ru   r8   r5   r9   )r   rG   r    r   r   r   rJ   r   r!   r*   rK   rL   r   rN   rP   rS   r   r   r   'test_column_transformer_remainder_numpy  s    r   rZ   pd-indexr   c                 C   s   t d}t| tr(| dkr(|dg} tdddgdddggj}|j|dd	gd
}|}t	dt
 | fgdd}t||| t|||| t|jdkst|jd d dkst|jd d dkstt|jd d dg d S )NrY   r   rZ   r   r   r'   r3   r4   r[   r\   r@   ru   r8   r5   r9   )rh   ri   rc   strZIndexr   rG   r    rj   r   r   r   rJ   r   r!   r*   rK   rL   )r   rf   rN   rl   rP   rS   r   r   r   (test_column_transformer_remainder_pandas  s    
r   c                 C   s   t dddgdddgdddggj}| }|d d ddf  d9  < tdt | fgt d	}t||| t|	|
|| t|jdkst|jd
 d dkstt|jd
 d tstt|jd
 d ddg d S )Nr   r   r'   r3   r4      rx   r@   r8   r5   r9   )r   rG   r    rk   r   r   r&   r   rJ   r   r!   r*   rK   rL   rc   r   r   r   r   -test_column_transformer_remainder_transformer  s    $r   c                  C   s   t dddgdddgdddggj} tdt dddgfgt d}t|| |  t|| 	| |  t
|jdkszt|jd	 d d
kstd S )Nr   r   r'   r3   r4   r   r@   r8   r5   r9   )r   rG   r    r   r   r&   r   rJ   r   r!   r*   rK   rL   r   r   r   r   :test_column_transformer_no_remaining_remainder_transformer  s    $r   c                  C   s   t dddgdddgdddggj} d|  d d ddf  }tdd	dgfgt d
}t|| | t|| 	| | t
|jdkst|jd d dkstt|jd d tstt|jd d ddg d S )Nr   r   r'   r3   r4   r   rx   r@   r7   r8   r5   r9   )r   rG   r    rk   r   r&   r   rJ   r   r!   r*   rK   rL   rc   )rN   rP   rS   r   r   r   7test_column_transformer_drops_all_remainder_transformer  s    $r   c                  C   s   t dddgdddgdddggj} tdt dgfgt dd	}|| }t|sXt	|j
d
ksft	t | d d df ddt df}t| | t|jdkst	|jd d dkst	t|jd d tst	t|jd d ddg d S )Nr   r   r'   r3   r4   r   r@   r   r   rx   r3   r5   rx   r9   )r   rG   r    r   r   r)   rJ   r   r   rL   r   ZhstackrH   r+   r   r   r*   rK   rc   )rN   rS   r}   Z	exp_arrayr   r   r   4test_column_transformer_sparse_remainder_transformer  s    $  
(r   c                  C   s   t dddgdddgdddggj} tdddgfgt d	d
}|| }t|sVt|j	dksdtt
| t d t|jdkst|jd d dkstt|jd d tstt
|jd d ddg d S )Nr   r   r'   r3   r4   r   r@   r7   r   r   )rx   rx   rx   r5   r9   )r   rG   r    r   r)   rJ   r   r   rL   r   r   r   r+   r*   rK   rc   r|   r   r   r   =test_column_transformer_drop_all_sparse_remainder_transformer  s    $  
r   c                  C   s   t dt dgfgt d} d | jdddd| jd d ddd| jd ddd}|  |ksZt| jdd	 |  d
 rvt| jdd d | jddddd| jd ddd}|  |kstd S )Nr@   r   r8   Tr   r   F)r   r9   remainder__copyremainder__with_meanremainder__with_stdr   r@   r   r   r   rW   rF   r   r   )r   r   ru   r   )r   r9   r   r   r   r   r@   rW   rF   r   r   )r   r   r9   rW   r   rL   r   r   r   r   r   5test_column_transformer_get_set_params_with_remainder  sH     r   c                  C   s   t dddgdddgdddggdj} tg t d}| }|d	 sLt|| }|j	| j	ksftt
|jdksxt|jd
 d dkst|jd
 d dddgkstd S )Nr   r   r'   r3   r4   r   r   r8   r   r5   r9   )r   rG   astyper    r   r   r   rL   rJ   r   r*   rK   )rN   rS   paramsr}   r   r   r   %test_column_transformer_no_estimators8  s    *
r   estpatternr@   rA   r8   z\[ColumnTransformer\].*\(1 of 3\) Processing trans1.* total=.*\n\[ColumnTransformer\].*\(2 of 3\) Processing trans2.* total=.*\n\[ColumnTransformer\].*\(3 of 3\) Processing remainder.* total=.*\n$z\[ColumnTransformer\].*\(1 of 2\) Processing trans1.* total=.*\n\[ColumnTransformer\].*\(2 of 2\) Processing remainder.* total=.*\n$z\[ColumnTransformer\].*\(1 of 2\) Processing trans1.* total=.*\n\[ColumnTransformer\].*\(2 of 2\) Processing trans2.* total=.*\n$zA\[ColumnTransformer\].*\(1 of 1\) Processing trans1.* total=.*\n$methodr   rJ   c                 C   s   t dddgdddgdddggj}t| |}| jdd || | jrTtd	| jd
d || t	|| d std S )Nr   r   r'   r3   r4   r   F)r   zGot output for verbose=FalseT)
r   rG   r    getattrr   Z
readouterroutrL   r   r   )r   r   r   ZcapsysrN   r   r   r   r   test_column_transformer_verboseF  s    F$
r   c                  C   s"   t g jdd} | jdkstd S )Nr'   )r   )r   r   r   rL   )rS   r   r   r   0test_column_transformer_no_estimators_set_params  s    r   c                     s   t dddgdddggj t dddggj}  fdd}tdt |fgd	d
}t| |  t|  |  t	|j
d d st|jd d dgkstd S )Nr   r   r'   r3   r4   c                    s   t |   dgS )Nr   )r   r_   rN   r   r   r     s    
z8test_column_transformer_callable_specifier.<locals>.funcr6   r7   r8   )r   rG   r    r   r   r   rJ   r   r!   callablerW   rL   rK   )rO   r   rS   r   r   r   *test_column_transformer_callable_specifier  s    r   c                     s   t d} tdddgdddggj}tdddggj}| j|ddgd	  fd
d}tdt |fgdd}t|	 | t|
  | t|jd d st|jd d dgkstd S )NrY   r   r   r'   r3   r4   rZ   r[   r\   c                    s"   t | j j t | j j dgS )NrZ   )r   r]   valuesr_   rl   r   r   r     s    zBtest_column_transformer_callable_specifier_dataframe.<locals>.funcr6   r7   r8   )rh   ri   r   rG   r    rj   r   r   r   rJ   r   r!   r   rW   rL   rK   )rf   rN   rO   r   rS   r   r   r   4test_column_transformer_callable_specifier_dataframe  s    
r   c                  C   s~   t jdd} t dgdgg}t j| |gdd} t }td|dgfgdd}td|dgfgdd}t|| ||  d S )Nr'   r   Zaxisoher5   ru   r8   )	r   randomZrandnrG   Zconcatenater   r   r   rJ   )r   ZX_categoriesr   Ztf_1Ztf_2r   r   r   /test_column_transformer_negative_column_indexes  s    r  
array_typec                 C   sh   t dddgdddgdddgdd	d
gg}| |}tdt ddddgfg}||}|jdksdtd S )Nr   r'   rx   r3      r4      r   r   rC   identityFT)rx   r'   )r   Z	transposer   r   rJ   r   rL   )r  r   Zcolumn_transformerr}   r   r   r   %test_column_transformer_mask_indexing  s    *
r  c                  C   s`   ddgddgddgg} t dt dgfd	t dgfg}t|d
rDt||  |jdks\td S )Nr   r'   rx   r3   r  r4   r   r   r   n_features_in_)r   r&   r   rL   r   r  )r   rS   r   r   r   test_n_features_in  s
     
r  zcols, pattern, include, excludecol_int	col_floatcol_strzat$z^col_intz	float|strz^col_szstr$c                 C   sl   t d}|jtjdddgtdtjdddgtdd	d
dgddddgd}t|||d}t|||  d S )NrY   r   r   r'   r   r   r   r   onetwothreer	  r
  r  r	  r
  r  r\   )dtype_includeZdtype_excluder   )	rh   ri   rj   r   rG   intr   r   r   )colsr   includeexcluderf   rl   selectorr   r   r   ,test_make_column_selector_with_select_dtypes  s    
	  r  c            
      C   s   t d} | jtjdddgtdtjdddgtdd	d
d	gdddgdddddgd}|d d|d< tdt	gd}ttj
d}t }t }t||f||f}t|ddgf|ddgf}||}||}	t||	 d S )NrY   r   r   r'   r   r   r   r   r  r  lowZmiddlehigh)r	  r
  col_catr  r	  r
  r  r  r\   categoryr  )rh   ri   rj   r   rG   r  r   r   r   r   numberr   r   r   rJ   r   )
rf   rl   Zcat_selectorZnum_selectorr   r   Zct_selectorZ	ct_directZ
X_selectorZX_directr   r   r   1test_column_transformer_with_make_column_selector
  s,    

	
 


r  c               	   C   sF   t tjd} tddgg}d}tjt|d | | W 5 Q R X d S )Nr  rB   r   z=make_column_selector can only be applied to pandas dataframesr   )r   r   r  rG   rh   r   r2   )r  r   r   r   r   r   test_make_column_selector_error)  s
    r  c                  C   s~   t d} | jtjdddgtdtjdddgtdd	d
dgddddgd}ttgd}t	
t	|}t|||| d S )NrY   r   r   r'   r   r   r   r   r  r  r  r  r	  r
  r  r\   r  )rh   ri   rj   r   rG   r  r   r   r   pickleloadsdumpsr   )rf   rl   r  Zselector_pickedr   r   r    test_make_column_selector_pickle1  s    
	r"  	empty_colc                 C   s   g S r   r   r:   r   r   r   r>   E  r?   r>   rG   r   c                 C   sj   t d}|dddgdddgd}tdt ddgfd	t | fgd
}|| t| dddg d S )NrY   r   r   zr   r   r   r   r   Zempty_featuresrW   Zohe__col1_aZohe__col1_bohe__col2_zrh   ri   rj   r   r   r   r   r   )r#  rf   r   rS   r   r   r    test_feature_names_empty_columnsC  s    


 r)  r  c                 C   s   dgS Nr   r   r:   r   r   r   r>   ^  r?   r   c                 C   s   dgS )Nr   r   r:   r   r   r   r>   `  r?   c                 C   s   ddgS NFTr   r:   r   r   r   r>   b  r?   c                 C   sV   t d}|dddgdddgd}tdt | fg}|| t| dg dS )	z1Checks name when selecting only the second columnrY   r   r   r$  r%  r   r'  Nr(  )r  rf   r   rS   r   r   r   test_feature_names_out_pandasZ  s
    

r,  c                 C   s   dgS r*  r   r:   r   r   r   r>   p  r?   c                 C   s   ddgS r+  r   r:   r   r   r   r>   p  r?   c                 C   sF   ddgddgddgg}t dt | fg}|| t| dg dS )z=Checks name when selecting the second column with numpy arrayr   r$  r   r   Z	ohe__x1_zN)r   r   r   r   r   )r  r   rS   r   r   r   !test_feature_names_out_non_pandaso  s    
r-  c                 C   s`   t  }td|ddgfg| d}| }|jdks4t|jddgdfksJt|j|| fks\td S )Nr   r   r   rW   r9   r   r9    r   r   _sk_visual_block_r   rL   name_details
estimators)r9   r   rS   visual_blockr   r   r   test_sk_visual_block_remainder{  s     r6  c                  C   sZ   t  } td| ddgfgd}| }|jdks2t|jddgfksFt|j| fksVtd S )Nr   r   r   r&  )r   r1  )r   rS   r5  r   r   r   #test_sk_visual_block_remainder_drop  s    r7  c                 C   s   t d}t }td|ddgfg| d}|dddgd	d	d	gd
ddgdddgd}|| | }|jdkstt|j	ddgddgfkst|j
|| fkstd S )NrY   r   r   r   r.  r   r   cr$  r   r'   rx   r3   r  )r   r   col3col4r/  r9  r:  )rh   ri   r   r   rj   r   r2  r   rL   r3  r4  )r9   rf   r   rS   r   r5  r   r   r   ,test_sk_visual_block_remainder_fitted_pandas  s$    
 
r;  c                 C   s   t jdddgdddggtd}t }td|d	dgfg| d
}|| | }|jdks\t|j	d	dgdgfkstt|j
|| fkstd S )Nr   r'   rx   r3   r  r4   r   scaler   r.  )r<  r9   )r   rG   r   r   r   r   r2  r   rL   r3  r4  )r9   r   r   rS   r5  r   r   r   +test_sk_visual_block_remainder_fitted_numpy  s     
r=  explicit_colnamer[   c              	   C   s  t d}tdddgdddggj}|j|ddgd	}tdddgdddggj}|j|ddgd	}td
t | fg|d}|| |	|}|	|}	t
|	| | }
dddg|
d< |	|
}	t
|	| t| tr
| }d}t jt|d |	| W 5 Q R X dS )z=Test the interaction between remainder and column transformerrY   r   r   r'   r3   r4   rZ   r[   r\   bycolr8   rx   r   thirdr   r   N)rh   ri   r   rG   r    rj   r   r   r   r!   r   rk   rc   r   r   r2   )r>  r9   rf   ZX_fit_arrayZX_fit_dfZX_trans_array
X_trans_dftfZX_fit_transr}   ZX_extended_dfrN   r   r   r   r   8test_column_transformer_reordered_column_names_remainder  s&    






rC  c               	   C   s  t d} tjdd}| j|ddddgd}|jdd	d
}tdt d	gfgdd}|| d}t j	t
|d || W 5 Q R X tdt d	gfgdd}|| ||}||}t|| tdddgfgdd}|| ||}||}t|| dS )zRTest the interaction between {'drop', 'passthrough'} and
    missing column names.rY   r   )r   r   r   r8  dr\   r   r   r?  ru   r8   zcolumns are missing: {'c'}r   r7   N)rh   ri   r   Zonesrj   r7   r   r   r   r   r2   r!   r   )rf   r   r   Z
df_droppedrB  r   Zdf_dropped_transZdf_fit_transr   r   r   <test_feature_name_validation_missing_columns_drop_passthough  s&    








rE  c                  C   s   t d} dddg}| jdddgg|d}td	t ddgfgd
d}|| t|j| t|jt	j
slt|jjtks|tdS )a?  Feature names are stored in column transformer.

    Column transformer deliberately does not check for column name consistency.
    It only checks that the non-dropped names seen in `fit` are seen
    in `transform`. This behavior is already tested in
    `test_feature_name_validation_missing_columns_drop_passthough`rY   r   r8  rD  r   r'   rx   r\   r?  ru   r8   N)rh   ri   rj   r   r   r   r   Zfeature_names_in_rc   r   ndarrayrL   r   r   )rf   Zfeature_namesr   rS   r   r   r   test_feature_names_in_   s    


rG  c                   @   s    e Zd ZdddZdddZdS )TransWithNamesNc                 C   s
   || _ d S r   feature_names_out)r   rJ  r   r   r   rb     s    zTransWithNames.__init__c                 C   s   | j d k	rtj| j tdS |S )Nr   )rJ  r   asarrayr   )r   Zinput_featuresr   r   r   r     s    
z$TransWithNames.get_feature_names_out)N)N)r#   r$   r%   rb   r   r   r   r   r   rH    s   
rH  z'transformers, remainder, expected_namesZbycol1rD  r8  Zbycol2Z	bycol1__dZ	bycol1__cZ	bycol2__dZremainder__aZremainder__br   Z	bycol1__bZremainder__cZpca1Zpca2r   Zbycol1__pca1Zbycol1__pca2Z	bycol1__aZ	bycol2__bc                 C   s   g | ]}d | qS r   r   .0ir   r   r   
<listcomp>J  s     rP  r'   c                 C   s   g | ]}d | qS rL  r   rM  r   r   r   rP  K  s     Zbycol1__pca0Zbycol2__pca0Zbycol2__pca1Zremainder__drx   r3   Z	bycol2__cc                 C   st   t d}|jddddggdddd	gd
}t| |d}|| | }t|tjsXt	|j
tksft	t|| dS )zDCheck feature_names_out for verbose_feature_names_out=True (default)rY   r   r'   rx   r3   r   r   r8  rD  r\   r8   Nrh   ri   rj   r   r   r   rc   r   rF  rL   r   r   r   rW   r9   Zexpected_namesrf   r   rS   r   r   r   r   #test_verbose_feature_names_out_true  s    z
 
rS  c                 C   s   g | ]}d | qS rL  r   rM  r   r   r   rP    s     c                 C   s   g | ]}d | qS )Zkpcar   rM  r   r   r   rP    s     Zpca0Zkpca0Zkpca1c                 C   sv   t d}|jddddggdddd	gd
}t| |dd}|| | }t|tjsZt	|j
tksht	t|| dS );Check feature_names_out for verbose_feature_names_out=FalserY   r   r'   rx   r3   r   r   r8  rD  r\   Fr9   r   NrQ  rR  r   r   r   $test_verbose_feature_names_out_false  s    u
 
rV  z*transformers, remainder, colliding_columnsz['b']z['c']z['a']z
['b', 'c']Zbycol3z
['a', 'b']c                 C   s   g | ]}d | qS rL  r   rM  r   r   r   rP  i  s     r4   c                 C   s   g | ]}d | qS rL  r   rM  r   r   r   rP  j  s     z-['pca0', 'pca1', 'pca2', 'pca3', 'pca4', ...]c              	   C   sz   t d}|jddddggdddd	gd
}t| |dd}|| td| d}t jt|d |	  W 5 Q R X dS )rT  rY   r   r'   rx   r3   r   r   r8  rD  r\   FrU  zOutput feature names: z[ are not unique. Please set verbose_feature_names_out=True to add prefixes to feature namesr   N)
rh   ri   rj   r   r   r   r   r   r2   r   )rW   r9   Zcolliding_columnsrf   r   rS   r   r   r   r   +test_verbose_feature_names_out_false_errors*  s    p
 

rW  r   c                 C   s   t d}|jddddggdddd	gd
gd}tdt ddgfdt d	gfg|| d}||}t|tjspt	|j
dd |jddddgg|jdgd}||}t||jst	| }t|j| t|j|j dS )z2Check column transformer behavior with set_output.rY   r   r'   rx   r3   r   r   r8  rD  rC   r]   r^   rZ   r[   rU  r!      N)rh   ri   rj   r   rH  rJ   rc   r   rF  rL   
set_outputr]   r!   r   r   r^   )r   r9   rf   r   rS   r}   Zdf_testrJ  r   r   r   "test_column_transformer_set_output  s     
$

r\  c           	   
   C   s  t d}||jdddgdd|jddd	gd
ddddgdddg|jd|jdgddd}tdtddddgfdt dgfg| ddjdd}|r|	|}n|
||}t||jstt|j|  dddddddd}|j D ]\}}||| kstqdS ) z6Check ColumnTransformer outputs mixed types correctly.rY   dogcatsnaker  r   ZgreenZblueZredr   ffffff? @皙@rZ  (   rC   d   ZInt32)petcolorageheightdistancecolor_encodeFZint8r   r   rf  rg  rU  rY  float64int64)Z
color_blueZcolor_greenZ	color_redrg  re  rh  ri  N)rh   ri   rj   rd   ZNAr   r   r   r[  rJ   r   r!   rc   rL   r   r]   r   dtypesitems)	r9   rJ   rf   r   rS   r}   expected_dtypesr   r   r   r   r   &test_column_transform_set_output_mixed  sH    
	
	rq  c           	      C   s   t d}||jdddgddddd	gd
ddgd}tdtddddgfdt dgfg| dd}||}t|t	j
s~t|jdkst|jdd ||}dddddd}|j D ]\}}||| kstqd S )NrY   r]  r^  r_  r  r   r`  ra  rb  rZ  rc  rC   )re  rg  rh  rj  FZint16rk  re  rg  rU  rl  rY  rm  )Zpet_catZpet_dogZ	pet_snakerh  rg  )rh   ri   rj   rd   r   r   r   rJ   rc   r   rF  rL   r   r[  r!   rn  ro  )	r9   rf   r   rS   r}   rA  rp  r   r   r   r   r   .test_column_transform_set_output_after_fitting  s<    



rr  c                   @   s4   e Zd ZdddZdddZdddZdd	d
ZdS )PandasOutTransformerr   c                 C   s
   || _ d S r   offset)r   ru  r   r   r   rb     s    zPandasOutTransformer.__init__Nc                 C   s   t d}t||jst| S NrY   )rh   ri   rc   rj   rL   r   r   r   rf   r   r   r   r   "  s    
zPandasOutTransformer.fitc                 C   s$   t d}t||jst|| j S rv  )rh   ri   rc   rj   rL   ru  rw  r   r   r   r!   '  s    
zPandasOutTransformer.transformc                 C   s   | S r   r   )r   r!   r   r   r   r[  ,  s    zPandasOutTransformer.set_output)r   )N)N)N)r#   r$   r%   rb   r   r!   r[  r   r   r   r   rs    s   


rs  z;trans_1, expected_verbose_names, expected_non_verbose_namesr   rt  Ztrans_0__feat1Ztrans_1__feat0feat1feat0c           	   	   C   s   t d}|dddgdddgd}tdtddd	gfd
| dgfg}||}t|tjsbt	t j
tdd |  W 5 Q R X |jdd ||}t|j| |jdd ||}t|j| dS )zCheck that set_config(transform="pandas") is compatible with more transformers.

    Specifically, if transformers returns a DataFrame, but does not define
    `get_feature_names_out`.
    rY   r   r         @r   )ry  rx  Ztrans_0rt  rx  trans_1ry  z!not provide get_feature_names_outr   rY  Fr   N)rh   ri   rj   r   rs  rJ   rc   r   rF  rL   r   r   r   r[  r   r]   r   )	r{  Zexpected_verbose_namesZexpected_non_verbose_namesrf   rl   rS   Z
X_trans_npZX_trans_df0ZX_trans_df1r   r   r   ;test_transformers_with_pandas_out_but_not_feature_names_out2  s"    




r}  empty_selectionc                 C   s   t d}|jddgddggddgd}tdd	| fd
t ddgfgdd}|jdd ||}t|jddg |j	dd ||}t|jddg dS )zkCheck that pandas output works when there is an empty selection.

    Non-regression test for gh-25487
    rY   r   皙@rz  r   r   r\   r   ru   r   Tr|  rY  Znumerical__aZnumerical__bFN)
rh   ri   rj   r   r   r[  rJ   r   r]   r   )r~  rf   r   rS   ZX_outr   r   r   "test_empty_selection_pandas_outputi  s    



r  c               	   C   s   t d} | jddgddggddgddgd	}td
d dd}tdddgfd|dgfg}|jdd d}t jt|d || W 5 Q R X dS )zmCheck column transformer raises error if indices are not aligned.

    Non-regression test for gh-26210.
    rY   r   r  rz  r   r   r   rx   rX  c                 S   s   | j ddS )NT)r7   )Zreset_indexr:   r   r   r   r>     r?   z7test_raise_error_if_index_not_aligned.<locals>.<lambda>z
one-to-onerI  Znum1ru   Znum2rY  zConcatenating DataFrames from the transformer's output lead to an inconsistent number of samples. The output may have Pandas Indexes that do not match.r   N)	rh   ri   rj   r   r   r[  r   r2   rJ   )rf   r   Zreset_index_transformerrS   r   r   r   r   %test_raise_error_if_index_not_aligned  s     
$ 

r  c                  C   s   t d} | dddgdddgd}tt ttdft dd	}|jdd
 ||}| j	
|| |jdd
 ||}t|tjstdS )zYCheck that the output is set for the remainder.

    Non-regression test for #26306.
    rY   TFr   r'   rx   )r   r   r  rU  rY  defaultN)rh   ri   rj   r   r
   r   rr   r[  rJ   ZtestingZassert_frame_equalrc   r   rF  rL   )rf   r   rS   r   r   r   r   test_remainder_set_output  s    


r  )r__doc__r  r   rn   r   rh   Znumpy.testingr   Zscipyr   Zsklearn.baser   r   Zsklearn.composer   r   r   Zsklearn.exceptionsr	   Zsklearn.feature_selectionr
   Zsklearn.preprocessingr   r   r   r   Zsklearn.utils._testingr   r   r   r   r&   r)   r-   r.   rU   rX   rm   markZparametrizerG   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rK  Z
csr_matrixr  r  r  r  r   r  r  r  r"  r)  r,  r-  r6  r7  r;  r=  rC  rE  rG  rH  rangerS  rV  rW  r\  rq  rr  rs  r}  r  r  r  r   r   r   r   <module>   s  	B /+4
#


/0 $


 &
, 
D





 
	



$"






	


		

	
x







	



	









s














k
-
*

#