o
    i                     @   s  d Z ddlZddlZddlZddlZddlZddlmZ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 ddlmZ ddlmZmZmZmZ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'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z: ddl;m<Z< ddl=m>Z> ddgddgddgddgddgddggZ?g dZ@eddddfZAeddddddfZBeddddfZCedddddfZDe ZEejFGd ed!eAfed!eBfed"eAfed"eBfed!eCfed"eCfe5d"eCfe'd"eCfe'd"eDfe(d"eAfe(d"eBfe)d"eDfgejFGd#d$ejFGd%dgddgfejFGd&d'ejFGd(d)d*gd+d, ZHd-d. ZIejFGd#dd/gd0d1 ZJejFGd#dd/gd2d3 ZKejFGd4g d5d6d7 ZLejFGd8eMd9ejFGd:e' d"fedd;d"fedd;d<fedd;d"fedd;d<fgd=d> ZNejFGd?eMdd@dA ZOejFGdBedd;edd;fejFGd8dCdDdE ZPejFGdBe' edd;edddddFe5dd;fejFGdGdHdIdJ ZQejFGdKejRjSejRjTejUjVejWjXejWjYejUjZfdLdM Z[G dNdO dOe	eZ\ejFGdPedd!dQd%dgidRfe' dgdSdTdUfedd;dgdSd<dVdWfedd;dgdSd!dVdWfe' dgd<dXdYdZfe' dgd<d[dYdZfe' dgd<d\d]fe' ddgg d^e]d_d`dadbfgdcdd Z^ejFGdee' edd;gejFGd%ddfgdgdh Z_ejFGdee' edd;gdidj Z`ejFGdee' edd;gdkdl Zadmdn Zbdodp Zcdqdr Zddsdt ZeejFGdudvgdwdwfdvgddfgdxdy ZfejFGdzdvgdvg d{id|fdvgdvd}d~gidfdvgdvd}gidfgdd ZgejFGdzdgddvdgidfdgddvgidfdvdgd}d~gdvdgdd|fgdd ZhejFjGdee(dddedd9dgddgdejFjGddee2 dd dD fe1 dd dD fee2 dd dD fddgg ddejFjGd%ddgdd dD gddgddd ZiejFjGddddg did_feEjjd ddfeEjjd eEjjd ekd}d~gidfddgddfddgdg didfdd dD ddfdd dD eEjjd g didfdd dD dg didfdd dD eEjjd ddwgidfg dddfgg dddd ZlejFGdee' e( e e gdd ZmejFGde'eDfe(eAfgdd ZnejFGde'eDfe(eAfgdd ZoejFGdee' e( e e gejFGdg ddd ZpejFGde'eDfe(eAfgdd Zqdd Zrdd Zsdd Ztdd ZuddÄ Zvddń ZwdS )z,
Testing for the partial dependence module.
    N)BaseEstimatorClassifierMixincloneis_regressor)KMeans)make_column_transformer)	load_irismake_classificationmake_regression)DummyClassifier)GradientBoostingClassifierGradientBoostingRegressorHistGradientBoostingClassifierHistGradientBoostingRegressorRandomForestRegressor)NotFittedError)SimpleImputer)partial_dependence)_grid_from_X_partial_dependence_brute_partial_dependence_recursion)LinearRegressionLogisticRegressionMultiTaskLasso)r2_score)make_pipeline)OneHotEncoderPolynomialFeaturesRobustScalerStandardScalerscale)DecisionTreeRegressor)assert_is_subtree)assert_allcloseassert_array_equal)	_IS_32BIT)check_random_state      )r(   r(   r(   r)   r)   r)   2   )	n_samplesrandom_state   )r,   	n_classesn_clusters_per_classr-   )r,   	n_targetsr-   zEstimator, method, dataautobrutegrid_resolution)   
   featureskind)average
individualbothuse_custom_valuesTFc              	      sL  |  }t |dr|jdd |\\ }}	 jd }
d }|r)d fdd|D }| | t| ||||d}||d	 }}|	gfd
dtt|D R }|	|
gfddtt|D R }|dkrq|jj|kspJ n|dkr~|jj|ks}J n|jj|ksJ |jj|ksJ t|f}|d usJ t	
|j|ksJ d S )Nn_estimatorsr*   )r=   r   r5   c                    s   i | ]}| d |f qS )N ).0fXr4   r>   j/home/kim/smarthome/.venv/lib/python3.10/site-packages/sklearn/inspection/tests/test_partial_dependence.py
<dictcomp>r   s    z%test_output_shape.<locals>.<dictcomp>)rB   r7   methodr8   r4   custom_valuesgrid_valuesc                       g | ]} qS r>   r>   r?   _r4   r>   rC   
<listcomp>       z%test_output_shape.<locals>.<listcomp>c                    rH   r>   r>   rI   rK   r>   rC   rL      rM   r9   r:   )hasattrZ
set_paramsshapefitr   rangelenr9   r:   npasarray)	EstimatorrE   datar4   r7   r8   r<   estyr1   Zn_instancesrF   resultpdpaxesZexpected_pdp_shapeZexpected_ice_shapeZexpected_axes_shaper>   rA   rC   test_output_shapeG   sF   

	"r\   c            
      C   s  d} d}ddg}t ddgddgg}t|| ||i \}}t|ddgddgddgddgg t||j t jd}d	}|jd
d}t|| ||i d\}}|j|| |jd fks[J t |jd|fksgJ |j	|j	ksoJ d}d||d d df< |
| t|| ||i d\}}|j|| |jd fksJ |d j|fksJ |d j|fksJ |j	|j	ksJ |jd
d}d||d d df< g d}t|| ||d|id\}}|j|t| |jd fksJ |d j|fksJ |d jt|fksJ |j	|j	ksJ |jd
d}g d}	d}t|| ||d|	id\}}|j|t|	 |jd fks/J |d jt|	fks<J |d j|fksGJ |j	t |t |	j	ksWJ t ddgddgddgg}t|| ||dg did\}}|j	tks|J d S )N皙?ffffff?d   Fr)   r*   r.      r      )   r*   sizer4   rF      90  r   r*   r.   )is_categoricalr4   rF   )r   r*   r.   ra   r5      r5   abcrl   rm   rn   )rS   rT   r   r$   TrandomRandomStatenormalrO   dtypeshufflerR   Zresult_typearrayobject)
percentilesr4   rj   rB   gridr[   rngZn_unique_valuesZcol_1_rangeZcol_0_ranger>   r>   rC   test_grid_from_X   s   "



 
" 

r{   r`   c                 C   sj   t d}d}dg}|dg di}t|||| i d\}}|jd|jd fks*J |d	 jd
ks3J dS )jCheck that `_grid_from_X` always sample from categories and does not
    depend from the percentiles.
    pandasr]   TZcat_feature)ABCr~   r   DErf   r5   r)   r   )r5   N)pytestimportorskip	DataFramer   rO   )r4   pdrx   rj   rB   ry   r[   r>   r>   rC   !test_grid_from_X_with_categorical   s   

r   c                 C   s   t d}d}ddg}|g dg dd}| }t|||| i d\}}| d	krK|jd
ks1J |d jd |d ks>J |d jd | ksIJ dS |jdksRJ |d jd |d ks_J |d jd |d kslJ dS )r|   r}   r]   TF)
r~   r   r   r~   r   r   r   r~   r   r   )
r)   r)   r)   r*   r5   rk   rk   rk   rk      )catnumrf   r.   )rb   r*   r   r   r)   )   r*   r   N)r   r   r   nuniquer   rO   )r4   r   rx   rj   rB   r   ry   r[   r>   r>   rC   #test_grid_from_X_heterogeneous_type  s.   

r   z%grid_resolution, percentiles, err_msg))r*   )r   g-C6?zpercentiles are too close)r`   )r)   r*   r.   ra   .'percentiles' must be a sequence of 2 elements)r`   rh   r   )r`   )r(   r_   ('percentiles' values must be in \[0, 1\])r`   )r^   r*   r   )r`   )g?皙?z+percentiles\[0\] must be strictly less than)r)   r]   z1'grid_resolution' must be strictly greater than 1c                 C   sb   t ddgddgg}dg}tjt|d t|||| i d W d    d S 1 s*w   Y  d S )Nr)   r*   r.   ra   Fmatch)rF   )rS   rT   r   raises
ValueErrorr   )r4   rx   err_msgrB   rj   r>   r>   rC   test_grid_from_X_error,  s
   "r   target_featurer5   zest, methodr-   	recursionc                 C   s   t dddd\}}||  }t| ||} tj|gtjd}tdgdgg}|dkr9t| |||dd	\}}nt| ||}g }	d
D ]}
|	 }|
|d d |f< |	
| |  qC|d }|dkrfdnd}tj||	|dsrJ d S )Nr   r5   )r-   
n_featuresZn_informativert         ?{   r3   r2   )response_method)r   r   r   r   gMbP?)rtol)r
   meanr   rP   rS   rv   intpr   r   copyappendpredictZallclose)rW   rE   r   rB   rX   r7   ry   rZ   ZpredictionsZmean_predictionsvalZX_r   r>   r>   rC   test_partial_dependence_helpers?  s$   
r   seedc                 C   sn  t j| }d}d}|||}||d }||  }d}d}tdd d||d}t|t t j	j
}	tddd||	d	}
t||	d
}||| |
|| ||| zt|j|
d j t|j|d j W n ty{   tsxJ dY d S w |ddd}t|D ]+}t j|gt jd}t|||}t|
||}t|||}t j|| t j|| qd S )N  r5   r6   r   r)   F)r=   Zmax_featuresZ	bootstrap	max_depthr-   Zsquared_error)r=   Zlearning_rate	criterionr   r-   )r   r-   )r   r   z)this should only fail on 32 bit platformsr+   r(   r   )rS   rq   rr   Zrandnr   r   r&   randintZiinfoZint32maxr   r!   rP   r"   Ztree_AssertionErrorr%   reshaperQ   rv   r   r   Ztestingr#   )r   rz   r,   r   rB   rX   r   Z	tree_seedZforestZequiv_random_stateZgbdttreery   r@   r7   Z
pdp_forestZpdp_gbdtZpdp_treer>   r>   rC   /test_recursion_decision_tree_vs_forest_and_gbdtx  sV   
r   rW   )r   r)   r*   r.   ra   r5   c                 C   sz   t dddd\}}t|dksJ t| ||} t| ||gdddd}t| ||gdd	dd}t|d |d d
d d S )Nr*   r)   r/   r0   r-   r   Zdecision_functionr   r9   )r   rE   r8   r3   gHz>)Zatol)r	   rS   r   r   rP   r   r#   )rW   r   rB   rX   Zpreds_1Zpreds_2r>   r>   rC    test_recursion_decision_function  s(   	r   )r-   Zmin_samples_leafZmax_leaf_nodesmax_iterpower)r)   r*   c                 C   s   t jd}d}d}|j|dfd}|d d |f | }t| ||} t| |g|ddd}|d	 d d
d}|d d }	t|d	|}t
 ||	}
t|	|
|}|dks[J d S )Nr      r*   r5   rd   r   r9   )r7   rB   r4   r8   rG   r(   r)   )ZdegreeGz?)rS   rq   rr   rs   r   rP   r   r   r   fit_transformr   r   r   )rW   r   rz   r,   Ztarget_variablerB   rX   rZ   Znew_XZnew_ylrr2r>   r>   rC   #test_partial_dependence_easy_target  s   r   rU   c                 C   sv   t dddd\}}t||gj}|  }||| tjtdd t||dg W d    d S 1 s4w   Y  d S )Nr.   r)   r   r   z3Multiclass-multioutput estimators are not supportedr   )	r	   rS   rv   rp   rP   r   r   r   r   )rU   rB   rX   rW   r>   r>   rC   test_multiclass_multioutput  s   "r   c                   @   s   e Zd Zdd ZdS ) NoPredictProbaNoDecisionFunctionc                 C   s   ddg| _ | S )Nr   r)   )Zclasses_)selfrB   rX   r>   r>   rC   rP   ,  s   
z$NoPredictProbaNoDecisionFunction.fitN)__name__
__module____qualname__rP   r>   r>   r>   rC   r   +  s    r   zestimator, params, err_msg)r-   Zn_initz4'estimator' must be a fitted regressor or classifierZpredict_proba)r7   r   z7The response_method parameter is ignored for regressors)r7   r   rE   zC'recursion' method, the response_method must be 'decision_function'r:   )r7   rE   r8   zCThe 'recursion' method only applies when 'kind' is set to 'average'r;   )r7   rE   z=Only the following estimators support the 'recursion' method:r)   r*   r.   )r.   r.   r   r)   )r7   rF   zYThe custom grid for some features is not a one-dimensional array. Feature 1: 2 dimensionsc                 C   sd   t dd\}}t| ||} tjt|d t| |fi | W d    d S 1 s+w   Y  d S )Nr   r   r   r	   r   rP   r   r   r   r   )	estimatorparamsr   rB   rX   r>   r>   rC   test_partial_dependence_error2  s
   5"r   r   i'  c                 C   sd   t dd\}}t| ||} d}tjt|d t| ||g W d    d S 1 s+w   Y  d S )Nr   r   zall features must be inr   r   )r   r7   rB   rX   r   r>   r>   rC   /test_partial_dependence_unknown_feature_indicesn  s   "r   c                 C   s|   t d}tdd\}}||}t| ||} dg}d}t jt|d t| || W d    d S 1 s7w   Y  d S )Nr}   r   r   rq   z/A given column is not a column of the dataframer   )	r   r   r	   r   r   rP   r   r   r   )r   r   rB   rX   dfr7   r   r>   r>   rC   .test_partial_dependence_unknown_feature_string{  s   

"r   c                 C   s8   t dd\}}t| ||} t| t|dgdd d S )Nr   r   r9   )r8   )r	   r   rP   r   list)r   rB   rX   r>   r>   rC   test_partial_dependence_X_list  s   r   c                  C   s   t t dd} | tt tjtdd t| tdgddd W d    n1 s)w   Y  tjtdd t| tdgddd W d    d S 1 sKw   Y  d S )Nr   )initr-   z9Using recursion method with a non-constant init predictorr   r   r9   )rE   r8   )	r   r   rP   rB   rX   r   warnsUserWarningr   )Zgbcr>   r>   rC   (test_warning_recursion_non_constant_init  s   "r   c            	      C   s   d} t jd}|jd| td}|| }| }||   || < t j||f }t | }d||< t	ddd}|j
|||d	 t||dgd
d}t |d
 |d d dksYJ d S )Nr   i@ r*   )re   rt   g     @@r6   r)   )r=   r-   sample_weightr9   )r7   r8   rG   r   r   )rS   rq   rr   r   boolZrandr   Zc_onesr   rP   r   Zcorrcoef)	Nrz   maskxrX   rB   r   clfrZ   r>   r>   rC   9test_partial_dependence_sample_weight_of_fitted_estimator  s   

$r   c                  C   sh   t dd} | jtttttd tjt	dd t
| tdgd W d    d S 1 s-w   Y  d S )Nr)   r   r   z#does not support partial dependencer   r7   )r   rP   rB   rX   rS   r   rR   r   r   NotImplementedErrorr   r   r>   r>   rC   test_hist_gbdt_sw_not_supported  s   
"r   c                  C   s   t  } t }tdd}t||}||| j| j || j| j d}t|| j|gddd}t||	| j|gddd}t
|d |d  t
|d d |d d |j|  |j|   d S )N*   r   r   r6   r9   r7   r4   r8   rG   )r   r   r   r   rP   r   rV   targetr   	transformr#   scale_mean_)irisscalerr   piper7   pdp_pipepdp_clfr>   r>   rC    test_partial_dependence_pipeline  s,   



r   z*features, grid_resolution, n_vals_expectedrl   r6   c           	      C   s   t d}t }tjd}||jddddtj	|jddddtj	d}|
|jdddd}||| t||| |dd	}|d j|ksMJ d S )
Nr}   r   r6   r`   rd   rl   rm   r*   r9   r   )r   r   r   rS   rq   rr   r   r   ZastypeZfloat64SeriesrP   r   re   )	r7   r4   n_vals_expectedr   modelrz   rB   rX   part_depr>   r>   rC   4test_partial_dependence_binary_model_grid_resolution  s$   

r   z(features, custom_values, n_vals_expected      ?       @      @g      @ra   r   r   c                 C   sl   t d}t }|g dg dd}|g d}||| t||| d|dd}|d j|ks4J d S )	Nr}   r   )g      @g      @g       @g      "@r   r   r)   r   r)   r.   r9   r7   r4   rF   r8   )r   r   r   r   r   rP   r   re   )r7   rF   r   r   r   rB   rX   r   r>   r>   rC   2test_partial_dependence_binary_model_custom_values	  s   
r   rm   r   c           	      C   s   t d}ttddt t }|g dg dd}|g d}||| |g dg dd}t	||| d	|d
d}|d
 j
|ksHJ d S )Nr}   Zmost_frequent)Zstrategyr   )rl   rm   rl   rm   r   r   )rl   rm   rl   Nr.   r9   r   )r   r   r   r   r   r   r   r   rP   r   re   )	r7   rF   r   r   plrB   rX   Z	X_holdoutr   r>   r>   rC   .test_partial_dependence_pipeline_custom_values&  s"   
r   r   r   r-   )r-   r=   zestimator-brutezestimator-recursion)Zidspreprocessorc                 C      g | ]}t j| qS r>   r   feature_namesr?   ir>   r>   rC   rL   S      rL   r   r*   c                 C   r   r>   r   r   r>   r>   rC   rL   T  r   r)   r.   c                 C   r   r>   r   r   r>   r>   rC   rL   W  r   Zpassthrough)	remainder)Nonezcolumn-transformerzcolumn-transformer-passthroughc                 C   r   r>   r   r   r>   r>   rC   rL   _  r   zfeatures-integerzfeatures-stringc                 C   s  t d}|jttjtjd}t|t| }|	|tj
 t|||ddd}|d ur7t||}ddg}n|}ddg}t| 	|tj
}	t|	||d	ddd
}
t|d |
d  |d ur{|jd }t|d d |
d d |jd  |jd   d S t|d d |
d d  d S )Nr}   columnsr6   r9   r   r   r)   r*   r3   )r7   rE   r4   r8   ZstandardscalerrG   )r   r   r   r    r   rV   r   r   r   rP   r   r   r   r#   Znamed_transformers_r   r   )r   r   r7   r   r   r   r   ZX_procZfeatures_clfr   r   r   r>   r>   rC   !test_partial_dependence_dataframeF  s:   


	

r  z*features, custom_values, expected_pd_shape)r   Nr.   r6   r   r   r   r  )r.   r*   )r.   r6   r6   )   r   	   r6   )r.   r6   ra   c                 C   r   r>   r   r   r>   r>   rC   rL     r   c                 C   r   r>   r   r   r>   r>   rC   rL     r   )r)   r*   r.   r6   c                 C   r   r>   r   r   r>   r>   rC   rL     r   c                 C   r   r>   r   r   r>   r>   rC   rL     r   ri   )r.   r6   r*   r6   )TFTF)z
scalar-intzscalar-int-custom-valuesz
scalar-strzscalar-str-custom-valueszlist-intzlist-int-custom-valueszlist-strzlist-str-custom-valuesz list-str-custom-values-incorrectzlist-str-three-featuresr   c                 C   s   t d}|jtjtjd}tt dd dD ft dd dD f}t	|t
dd	d
}||tj t||| dd|d}|d j|ksFJ t|d t|d jd ksWJ d S )Nr}   r  c                 S   r   r>   r   r   r>   r>   rC   rL     r   z8test_partial_dependence_feature_type.<locals>.<listcomp>r   c                 S   r   r>   r   r   r>   r>   rC   rL     r   r  r   r   r   r6   r9   )r7   r4   r8   rF   rG   r)   )r   r   r   r   rV   r   r   r   r   r   r   rP   r   r   rO   rR   )r7   rF   Zexpected_pd_shaper   r   r   r   r   r>   r>   rC   $test_partial_dependence_feature_type  s(   
'&r  c                 C   s   t j}tt ddgft ddgf}t|| }tjtdd t	||ddgdd W d    n1 s3w   Y  tjtdd t	| |ddgdd W d    d S 1 sUw   Y  d S )	Nr   r*   r)   r.   zis not fitted yetr   r6   )r7   r4   )
r   rV   r   r   r   r   r   r   r   r   )r   rB   r   r   r>   r>   rC    test_partial_dependence_unfitted  s   

"r  zEstimator, datac           	      C   sj   |  }|\\}}}| || t||ddgdd}t||ddgdd}tj|d dd}t||d  d S )Nr)   r*   r9   rB   r7   r8   r:   )Zaxis)rP   r   rS   r   r#   )	rU   rV   rW   rB   rX   r1   Zpdp_avgpdp_indZavg_indr>   r>   rC   +test_kind_average_and_average_of_individual  s   r  c           	      C   s   |  }|\\}}}t |jd }||| t||ddgdd}t||ddgd|d}t|d |d  t|d |d  dS )	zDCheck that `sample_weight` does not have any effect on reported ICE.r   r)   r*   r:   r  )rB   r7   r8   r   rG   N)rS   arangerO   rP   r   r#   )	rU   rV   rW   rB   rX   r1   r   Zpdp_nswpdp_swr>   r>   rC   =test_partial_dependence_kind_individual_ignores_sample_weight  s   	r  non_null_weight_idx)r   r)   r(   c                 C   s   t jt j}}tt ddgft ddgf}t|t| ||}t	
|}d||< t||ddgd|dd}t||ddgddd	}t|rGdntt	|}	t|	D ]}
t|d |
 | |d |
  qRd
S )a   Check that if we pass a `sample_weight` of zeros with only one index with
    sample weight equals one, then the average `partial_dependence` with this
    `sample_weight` is equal to the individual `partial_dependence` of the
    corresponding index.
    r   r*   r)   r.   r9   r6   )r8   r   r4   r:   )r8   r4   N)r   rV   r   r   r   r   r   r   rP   rS   Z
zeros_liker   r   rR   uniquerQ   r#   )r   r  rB   rX   r   r   r   r  r  Z
output_dimr   r>   r>   rC   +test_partial_dependence_non_null_weight_idx  s.   

r  c                 C   s   |  }|\\}}}| || d|ddgdd}}t|fi |d|i}tt|}t|fi |d|i}	t|d |	d  dtt| }t|fi |d|i}
t|d |
d  dS )zFCheck that `sample_weight=None` is equivalent to having equal weights.Nr)   r*   r9   r  r   )rP   r   rS   r   rR   r#   )rU   rV   rW   rB   rX   r1   r   r   Zpdp_sw_noneZpdp_sw_unitZpdp_sw_doublingr>   r>   rC   7test_partial_dependence_equivalence_equal_sample_weight1  s   
r  c                  C   sx   t  } t\\}}}t|}| || tjtdd t| |dg|dd dd W d   dS 1 s5w   Y  dS )zjCheck that we raise an error when the size of `sample_weight` is not
    consistent with `X` and `y`.
    zsample_weight.shape ==r   r   r)   Nr6   )r7   r   r4   )	r   binary_classification_datarS   	ones_likerP   r   r   r   r   rW   rB   rX   r1   r   r>   r>   rC   0test_partial_dependence_sample_weight_size_errorI  s   
"r  c                  C   st   t  } t\\}}}t|}| j|||d tjtdd t| |dgd|d W d   dS 1 s3w   Y  dS )zaCheck that we raise an error when `sample_weight` is provided with
    `"recursion"` method.
    r   z+'recursion' method can only be applied whenr   r   r   )r7   rE   r   N)	r   regression_datarS   r  rP   r   r   r   r   r  r>   r>   rC   4test_partial_dependence_sample_weight_with_recursionX  s   
"r  c                  C   s   t jdddt jgtddd} t g d}dd	lm} t|dd
t 	| |}t
jtdd t|| dgd W d   dS 1 sEw   Y  dS )znCheck that we raise a proper error when a column has mixed types and
    the sorting of `np.unique` will fail.r~   r   r   r   r(   r)   r   r   )OrdinalEncoder)Zencoded_missing_valuez'The column #0 contains mixed data typesr   r   N)rS   rv   nanrw   r   sklearn.preprocessingr  r   r   rP   r   r   r   r   )rB   rX   r  r   r>   r>   rC   test_mixed_type_categoricalg  s    "r   c                  C   sL  t ddd} t g d}t }|| | tjtt	
dd t|| dd W d    n1 s5w   Y  tjtt	
d	d t|| d
gdgd W d    n1 sYw   Y  tjtt	
dd t|| dd
gd W d    n1 s|w   Y  t  td t|| d
d
gd W d    d S 1 sw   Y  d S )Nr   ra   r*   r   z#The column 0 contains integer data.r   r   r   z#The column 1 contains integer data.r)   r7   categorical_featureserror)rS   r  r   rv   r   rP   r   r   FutureWarningreescaper   warningscatch_warningssimplefilter)rB   rX   r   r>   r>   rC   $test_reject_array_with_integer_dtypew  s.   




"r*  c                  C   s,  t d} | g dg dg dd}tg d}t }||| t jtt	
dd t||dd	 W d    n1 s@w   Y  t jtt	
dd t||d
dgd	 W d    n1 scw   Y  t   td t||d
gd	 t||dgdgd W d    d S 1 sw   Y  d S )Nr}   r  r   ro   )r   r)   r   z%The column 'c' contains integer data.r   rn   r   rl   r#  r!  )r   r   r   rS   rv   r   rP   r   r$  r%  r&  r   r'  r(  r)  )r   rB   rX   r   r>   r>   rC   %test_reject_pandas_with_integer_dtype  s2   




"r+  c                  C   sl   t t t } | tjtj tjt	t
dd t| tjdgg d W d   dS 1 s/w   Y  dS )zYCheck that we raise the proper exception when `categorical_features`
    is an empty listzPassing an empty list (`[]`) to `categorical_features` is not supported. Use `None` instead to indicate that there are no categorical features.r   r   )r   rB   r7   r"  N)r   r   r   rP   r   rV   r   r   r   r   r%  r&  r   r   r>   r>   rC   2test_partial_dependence_empty_categorical_features  s   "r,  )x__doc__r%  r'  numpyrS   r   ZsklearnZsklearn.baser   r   r   r   Zsklearn.clusterr   Zsklearn.composer   Zsklearn.datasetsr   r	   r
   Zsklearn.dummyr   Zsklearn.ensembler   r   r   r   r   Zsklearn.exceptionsr   Zsklearn.imputer   Zsklearn.inspectionr   Z&sklearn.inspection._partial_dependencer   r   r   Zsklearn.linear_modelr   r   r   Zsklearn.metricsr   Zsklearn.pipeliner   r  r   r   r   r   r    Zsklearn.treer!   Zsklearn.tree.tests.test_treer"   Zsklearn.utils._testingr#   r$   Zsklearn.utils.fixesr%   Zsklearn.utils.validationr&   rB   rX   r  Zmulticlass_classification_datar  Zmultioutput_regression_datar   markZparametrizer\   r{   r   r   r   rQ   r   r   r   r   r   ZDecisionTreeClassifierZExtraTreeClassifierZensembleZExtraTreesClassifierZ	neighborsZKNeighborsClassifierZRadiusNeighborsClassifierZRandomForestClassifierr   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   rv   r  r  r  r  r  r  r  r  r   r*  r+  r,  r>   r>   r>   rC   <module>   sN   (7^

 

.
F





4	








+"
%
	

	
