
    0Ph'                     ,   d 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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/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9 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fZ< edddd          dfZ= edd          dfZ> eddd          dfZ? e            Z@ejA        B                    ded e<fed e=fed!e<fed!e=fed e>fed!e>fe0d!e>fe#d!e>fe#d!e?fe$d!e<fe$d!e=fe%d!e?fg          ejA        B                    d"d#          ejA        B                    d$dgddgf          ejA        B                    d%d&          d'                                                 ZCd( ZDejA        B                    d"dd)g          d*             ZEejA        B                    d"dd)g          d+             ZFejA        B                    d,g d-          d.             ZGejA        B                    d/ eHd0                    ejA        B                    d1 e#            d!f ed2          d!f ed2          d3f ed2          d!f ed2          d3fg          d4                         ZIejA        B                    d5 eHd                    d6             ZJejA        B                    d7 ed2           ed2          f          ejA        B                    d/d8          d9                         ZKejA        B                    d7 e#             ed2           edddd:           e0d2          f          ejA        B                    d;d<          d=                         ZLejA        B                    d>ejM        jN        ejM        jO        ejP        jQ        ejR        jS        ejR        jT        ejP        jU        f          d?             ZV G d@ dAee          ZWejA        B                    dB edd C          d$dgidDf e#            dgdEdFdGf ed2          dgdEd3dHdIf ed2          dgdEd dHdIf e#            dgd3dJdKdLf e#            dgd3dMdKdLf e#            dgd3dNdOfg          dP             ZXejA        B                    dQ e#             ed2          g          ejA        B                    d$ddRg          dS                         ZYejA        B                    dQ e#             ed2          g          dT             ZZejA        B                    dQ e#             ed2          g          dU             Z[dV Z\dW Z]dX Z^dY Z_ejA        B                    dQ e$dZd[           edd0\          gd]d^g_          ejA        B                    d`d e e-            da dbD             f e,            dc ddD             f           e e-            de dbD             fdfg          gg dh_          ejA        B                    d$ddgdi dbD             gdjdkg_          dl                                     Z`ejA        B                    dmdne@ja        d         dofddgdpfdq dbD             dpfg drdpfgg ds_          dt             ZbejA        B                    dQ e#             e$             e             e            g          du             ZcejA        B                    dve#e?fe$e<fg          dw             ZdejA        B                    dve#e?fe$e<fg          dx             ZeejA        B                    dQ e#             e$             e             e            g          ejA        B                    dyg dz          d{                         ZfejA        B                    dve#e?fe$e<fg          d|             Zgd} Zhd~ Zid Zjd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)partial_dependence)_grid_from_X_partial_dependence_brute_partial_dependence_recursion)LinearRegressionLogisticRegressionMultiTaskLasso)r2_score)make_pipeline)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bothc                     |             }t          |d          r|                    d           |\  \  }}}	|j        d         }
|                    ||           t	          |||||          }||d         }}|	gfdt          t          |                    D             R }|	|
gfdt          t          |                    D             R }|d	k    r|j        j        |k    sJ n=|d
k    r|j        j        |k    sJ n$|j        j        |k    sJ |j        j        |k    sJ t          |          f}|J t          j
        |          j        |k    sJ d S )Nn_estimatorsr)   )r<   r   )Xr6   methodr7   r3   grid_valuesc                     g | ]}S  rA   .0_r3   s     p/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/inspection/tests/test_partial_dependence.py
<listcomp>z%test_output_shape.<locals>.<listcomp>r   s    &U&U&U1&U&U&U    c                     g | ]}S rA   rA   rB   s     rE   rF   z%test_output_shape.<locals>.<listcomp>v   s    	8	8	8a/	8	8	8rG   r8   r9   )hasattr
set_paramsshapefitr   rangelenr8   r9   npasarray)	Estimatorr>   datar3   r6   r7   estr=   yr0   n_instancesresultpdpaxesexpected_pdp_shapeexpected_ice_shapeexpected_axes_shapes      `             rE   test_output_shaper\   B   s   6 )++CsN## 'A&&&
 FQI'!*KGGAqMMM
'  F }-C#V&U&U&U&Uc(mm@T@T&U&U&UVV 
9	8	8	85X#7#7	8	8	8 
 y{ $666666			~#'999999{ $66666~#'99999x==/::d!%8888888rG   c                     d} d}ddg}t          j        ddgddgg          }t          || ||          \  }}t          |ddgddgddgddgg           t          ||j                   t           j                            d          }d	}|                    d
          }t          || ||          \  }}|j        ||z  |j        d         fk    sJ t          j        |          j        d|fk    sJ d}d||dz
  d df<   |	                    |           t          || ||          \  }}|j        ||z  |j        d         fk    sJ |d         j        |fk    sJ |d         j        |fk    sJ d S )N皙?ffffff?d   Fr(   r)   r-      r      )   r)   sizer3      90  )
rO   rP   r   r#   TrandomRandomStatenormalrK   shuffle)percentilesr3   is_categoricalr=   gridrX   rngn_unique_valuess           rE   test_grid_from_Xrt      s   
 KOU^N

QFQF#$$AanoNNJD$tq!fq!fq!fq!f=>>>tQS!!! )


"
"CO 	


  A	;  JD$ :/O;QWQZHHHHH:d!a%99999 O"'AoQKKNNN	;  JD$ :/O;QWQZHHHHH7=_.....7=_.......rG   ra   c                     t          j        d          }d}dg}|                    dg di          }t          ||||           \  }}|j        d|j        d         fk    sJ |d	         j        d
k    sJ dS )jCheck that `_grid_from_X` always sample from categories and does not
    depend from the percentiles.
    pandasr^   Tcat_feature)ABCry   rz   DErg   r4   r(   r   )r4   N)pytestimportorskip	DataFramer   rK   )r3   pdro   rp   r=   rq   rX   s          rE   !test_grid_from_X_with_categoricalr      s     
	X	&	&BKVN
m%H%H%HIJJA	;  JD$ :!QWQZ((((7=D      rG   c                    t          j        d          }d}ddg}|                    g dg dd          }|                                }t	          ||||           \  }}| d	k    rG|j        d
k    sJ |d         j        d         |d         k    sJ |d         j        d         | k    sJ dS |j        dk    sJ |d         j        d         |d         k    sJ |d         j        d         |d         k    sJ dS )rv   rw   r^   TF)
ry   rz   r{   ry   rz   r|   r}   ry   rz   r|   )
r(   r(   r(   r)   r4      r   r   r      )catnumrg   r-   )rc   r)   r   r   r(   )   r)   r   N)r~   r   r   nuniquer   rK   )r3   r   ro   rp   r=   r   rq   rX   s           rE   #test_grid_from_X_heterogeneous_typer      s<   
 
	X	&	&BKE]N
EEE111	
 	
	 	A iikkG	;  JD$ !zW$$$$Aw}Q75>1111Aw}Q?222222zW$$$$Aw}Q75>1111Aw}Q75>111111rG   z%grid_resolution, percentiles, err_msg))r)   )r   g-C6?zpercentiles are too close)ra   )r(   r)   r-   rb   .'percentiles' must be a sequence of 2 elements)ra   ri   r   )ra   )r'   r`   ('percentiles' values must be in \[0, 1\])ra   )r_   r)   r   )ra   )g?皙?z+percentiles\[0\] must be strictly less than)r(   r^   z1'grid_resolution' must be strictly greater than 1c                     t          j        ddgddgg          }dg}t          j        t          |          5  t          ||||            d d d            d S # 1 swxY w Y   d S )Nr(   r)   r-   rb   Fmatch)rO   rP   r~   raises
ValueErrorr   )r3   ro   err_msgr=   rp   s        rE   test_grid_from_X_errorr      s     	
QFQF#$$AWN	z	1	1	1 F FQ^_EEEF F F F F F F F F F F F F F F F F Fs   AA Atarget_featurer4   zest, methodr,   	recursionc                    t          ddd          \  }}||                                z
  }t          |                               ||          } t	          j        |gt          j                  }t	          j        dgdgg          }|dk    rt          | |||d	          \  }}nt          | ||          }g }	d
D ]Y}
|	                                }|
|d d |f<   |	
                    |                     |                                                     Z|d         }|dk    rdnd}t	          j        ||	|          sJ d S )Nr   r4   )r,   
n_featuresn_informativedtype      ?{   r2   r1   )response_method)r   r   r   r   gMbP?)rtol)r   meanr   rL   rO   arrayintpr   r   copyappendpredictallclose)rS   r>   r   r=   rT   r6   rq   rW   predictionsmean_predictionsvalX_r   s                rE   test_partial_dependence_helpersr      sd   0 aqIIIDAq 	
AFFHHA **..A

C x(888H8cUSEN##D4xF
 
 
[[ ,Cx@@ 8 8VVXX #111nB 4 4 6 67777
a&C [((44dD;s,488888888rG   seedc                    t           j                            |           }d}d}|                    ||          }|                    |          dz  }||                                z
  }d}d}t          dd d||          }t          |                              t          j        t           j	                  j
                  }	t          ddd||		          }
t          ||	
          }|                    ||           |
                    ||           |                    ||           	 t          |j        |
d         j                   t          |j        |d         j                   n"# t           $ r t"          s
J d            Y d S w xY w|                    d                              dd          }t'          |          D ]}t          j        |gt           j                  }t-          |||          }t-          |
||          }t-          |||          }t           j                            ||           t           j                            ||           d S )N  r4   r5   r   r(   F)r<   max_features	bootstrap	max_depthr,   squared_error)r<   learning_rate	criterionr   r,   )r   r,   )r   r   z)this should only fail on 32 bit platformsr*   r'   r   )rO   rk   rl   randnr   r   r%   randintiinfoint32maxr   r    rL   r!   tree_AssertionErrorr$   reshaperM   r   r   r   testingr"   )r   rr   r+   r   r=   rT   r   	tree_seedforestequiv_random_stategbdttreerq   fr6   
pdp_forestpdp_gbdtpdp_trees                     rE   /test_recursion_decision_tree_vs_forest_and_gbdtr   +  s]    )


%
%C IJ		)Z((A		)r!A
 	
AFFHHA II"  F ,I66>>rx?Q?Q?UVV$!'  D !9CUVVVD
JJq!HHQNNNHHQNNN$*d4j&6777$*fQio6666    EEEEEE 99R==  Q''D: 9 98QCrw///264JJ
0tXFF0tXFF

""8X666

"":x88889 9s   ,A E- -FFrS   )r   r(   r)   r-   rb   r4   c                 >   t          ddd          \  }}t          j        |          dk    sJ t          |                               ||          } t          | ||gddd          }t          | ||gdd	d          }t          |d         |d         d
           d S )Nr)   r(   r.   r/   r,   r   decision_functionr   r8   )r   r>   r7   r2   gHz>)atol)r
   rO   r   r   rL   r   r"   )rS   r   r=   rT   preds_1preds_2s         rE    test_recursion_decision_functionr   r  s     QRSSSDAq71::
**..A

C 		+  G !		+  G GI&	(:FFFFFFrG   )r,   min_samples_leafmax_leaf_nodesmax_iterpower)r(   r)   c                 J   t           j                            d          }d}d}|                    |df          }|d d |f         |z  }t	          |                               ||          } t          | |g|dd          }|d	         d                             d
d          }|d         d         }	t          |          	                    |          }t                                          ||	          }
t          |	|
                    |                    }|dk    sJ d S )Nr      r)   r4   re   r   r8   )r6   r=   r3   r7   r?   r'   r(   )degreeGz?)rO   rk   rl   rm   r   rL   r   r   r   fit_transformr   r   r   )rS   r   rr   r+   target_variabler=   rT   rW   new_Xnew_ylrr2s               rE   #test_partial_dependence_easy_targetr     s!   ( )


"
"CIO

A
''A	!!!_
&A
**..A

C
'1d  C q!))"a00E	N1Ee,,,::5AAE					u	-	-B	%E**	+	+B999999rG   rQ   c                 2   t          ddd          \  }}t          j        ||g          j        } |             }|                    ||           t          j        t          d          5  t          ||dg           d d d            d S # 1 swxY w Y   d S )Nr-   r(   r   r   z3Multiclass-multioutput estimators are not supportedr   )	r
   rO   r   rj   rL   r~   r   r   r   )rQ   r=   rT   rS   s       rE   test_multiclass_multioutputr     s     QRSSSDAq
!QA
)++CGGAqMMM	O
 
 
 ( ( 	3A3'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   ,BBBc                       e Zd Zd ZdS ) NoPredictProbaNoDecisionFunctionc                     ddg| _         | S )Nr   r(   )classes_)selfr=   rT   s      rE   rL   z$NoPredictProbaNoDecisionFunction.fit  s    ArG   N)__name__
__module____qualname__rL   rA   rG   rE   r   r     s#            rG   r   zestimator, params, err_msg)r,   n_initz4'estimator' must be a fitted regressor or classifierpredict_proba)r6   r   z7The response_method parameter is ignored for regressors)r6   r   r>   zC'recursion' method, the response_method must be 'decision_function'r9   )r6   r>   r7   zCThe 'recursion' method only applies when 'kind' is set to 'average'r:   )r6   r>   z=Only the following estimators support the 'recursion' method:c                     t          d          \  }}t          |                               ||          } t          j        t
          |          5  t          | |fi | d d d            d S # 1 swxY w Y   d S )Nr   r   r   r
   r   rL   r~   r   r   r   )	estimatorparamsr   r=   rT   s        rE   test_partial_dependence_errorr     s    Z A...DAqi  $$Q**I	z	1	1	1 3 39a2262223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   A..A25A2r   i'  c                    t          d          \  }}t          |                               ||          } d}t          j        t
          |          5  t          | ||g           d d d            d S # 1 swxY w Y   d S )Nr   r   zall features must be inr   r   )r   r6   r=   rT   r   s        rE   /test_partial_dependence_unknown_feature_indicesr     s    
 A...DAqi  $$Q**I'G	z	1	1	1 5 59a(4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   A44A8;A8c                 X   t          j        d          }t          d          \  }}|                    |          }t	          |                               ||          } dg}d}t          j        t          |          5  t          | ||           d d d            d S # 1 swxY w Y   d S )Nrw   r   r   rk   z/A given column is not a column of the dataframer   )	r~   r   r
   r   r   rL   r   r   r   )r   r   r=   rT   dfr6   r   s          rE   .test_partial_dependence_unknown_feature_stringr   &  s     
	X	&	&BA...DAq	aBi  $$R++IzH?G	z	1	1	1 4 49b(3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s    BB#&B#c                     t          d          \  }}t          |                               ||          } t          | t	          |          dgd           d S )Nr   r   r8   )r7   )r
   r   rL   r   list)r   r=   rT   s      rE   test_partial_dependence_X_listr   5  sZ    
 A...DAqi  $$Q**Iy$q''A3Y??????rG   c                     t          t                      d          } |                     t          t                     t          j        t          d          5  t          | t          dgdd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | t          dgdd           d d d            d S # 1 swxY w Y   d S )Nr   )initr,   z9Using recursion method with a non-constant init predictorr   r   r8   )r>   r7   )	r   r   rL   r=   rT   r~   warnsUserWarningr   )gbcs    rE   (test_warning_recursion_non_constant_initr   ?  s    %/*;*;!
L
L
LCGGAqMMM	V
 
 
 L L 	3A3{KKKKL L L L L L L L L L L L L L L
 
V
 
 
 L L 	3A3{KKKKL L L L L L L L L L L L L L L L L Ls$   B  BB&CCCc                     d} t           j                            d          }|                    d| t                    }|                    |           }|                                }||           || <   t           j        ||f         }t          j        |           }d||<   t          dd          }|
                    |||	           t          ||dgd
          }t          j        |d
         |d                   d         dk    sJ d S )Nr   i@ r)   )rf   r   g     @@r5   r(   )r<   r,   sample_weightr8   )r6   r7   r?   )r   r(   r   )rO   rk   rl   r   boolrandr   c_onesr   rL   r   corrcoef)	Nrr   maskxrT   r=   r   clfrW   s	            rE   9test_partial_dependence_sample_weight_of_fitted_estimatorr
  Q  s    
 	A
)


'
'C;;qq;--DA	A4%yAteH
dAgAGAJJM M$
#!
D
D
DCGGAqG...
S!qc	
B
B
BC;s9~s='9::4@4GGGGGGrG   c            	      J   t          d          } |                     t          t          t	          j        t          t                                         t          j        t          d          5  t          | t          dg           d d d            d S # 1 swxY w Y   d S )Nr(   r   r   z#does not support partial dependencer   r6   )r   rL   r=   rT   rO   r  rN   r~   r   NotImplementedErrorr   )r	  s    rE   test_hist_gbdt_sw_not_supportedr  k  s    
'Q
7
7
7CGGAqAG000	#H
 
 
 1 1 	3QC00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   2BBBc                  v   t                      } t                      }t          d          }t          ||          }|                    |                    | j                  | j                   |                    | j        | j                   d}t          || j        |gdd          }t          ||	                    | j                  |gdd          }t          |d         |d                    t          |d         d         |d         d         |j        |         z  |j        |         z              d S )N*   r   r   r5   r8   r6   r3   r7   r?   )r	   r   r   r   rL   r   rR   targetr   	transformr"   scale_mean_)irisscalerr	  piper6   pdp_pipepdp_clfs          rE    test_partial_dependence_pipeliner  v  s<   ;;DF
r
*
*
*C%%DGGF  ++T[999HHTY$$$H!di8*by  H !##  G HY');<<<"q!FM($;;fl8>TT    rG   r   r   r,   )r,   r<   zestimator-brutezestimator-recursion)idspreprocessorc                 2    g | ]}t           j        |         S rA   r  feature_namesrC   is     rE   rF   rF          FFF! 21 5FFFrG   r   r)   c                 2    g | ]}t           j        |         S rA   r   r"  s     rE   rF   rF     s     DDDd03DDDrG   r(   r-   c                 2    g | ]}t           j        |         S rA   r   r"  s     rE   rF   rF     r$  rG   passthrough)	remainder)Nonezcolumn-transformerzcolumn-transformer-passthroughc                 2    g | ]}t           j        |         S rA   r   r"  s     rE   rF   rF     s     444d #444rG   zfeatures-integerzfeatures-stringc                 T   t          j        d          }|                    t          t          j                  t          j                  }t          |t          |                     }|	                    |t          j
                   t          |||dd          }|'t          |                              |          }ddg}n|}ddg}t          |           	                    |t          j
                  }	t          |	||d	dd
          }
t          |d         |
d                    |S|j        d         }t          |d         d         |
d         d         |j        d         z  |j        d         z              d S t          |d         d         |
d         d                    d S )Nrw   columnsr5   r8   r  r   r(   r)   r2   )r6   r>   r3   r7   standardscalerr?   )r~   r   r   r   r  rR   r!  r   r   rL   r  r   r   r"   named_transformers_r  r  )r   r  r6   r   r   r  r  X_procfeatures_clfr	  r  r  s               rE   !test_partial_dependence_dataframer4    s   > 
	X	&	&B	eDI&&0B	C	CBuY'7'788DHHR!b8Ri  H |$$222661v1v
	



vt{
3
3C   G HY');<<<12BC]#A&M"1%a(886<?J	
 	
 	
 	
 	

 	/2GM4J14MNNNNNrG   zfeatures, expected_pd_shape)r   r-   r5   r5  )r-   r5   r5   c                 2    g | ]}t           j        |         S rA   r   r"  s     rE   rF   rF     s     	0	0	0A$
Q
	0	0	0rG   )TFTF)z
scalar-intz
scalar-strzlist-intzlist-strr  c                 <   t          j        d          }|                    t          j        t          j                  }t          t                      d dD             ft                      d dD             f          }t          |t          dd	                    }|                    |t          j                   t          ||| d
d          }|d         j        |k    sJ t          |d                   t          |d         j                  dz
  k    sJ d S )Nrw   r.  c                 2    g | ]}t           j        |         S rA   r   r"  s     rE   rF   z8test_partial_dependence_feature_type.<locals>.<listcomp>  s     BBBaD.q1BBBrG   r%  c                 2    g | ]}t           j        |         S rA   r   r"  s     rE   rF   z8test_partial_dependence_feature_type.<locals>.<listcomp>  s     @@@A$,Q/@@@rG   r'  r   r   r  r5   r8   r  r?   r(   )r~   r   r   r  rR   r!  r   r   r   r   r   rL   r  r   rK   rN   )r6   expected_pd_shaper   r   r  r  r  s          rE   $test_partial_dependence_feature_typer;    s%    
	X	&	&B	di);	<	<B*			BB6BBBC	@@@@@A L ($QGGG D 	HHR!b8Ri  H I$(99999x&''3x	/B/H+I+IA+MMMMMMMrG   c                    t           j        }t          t                      ddgft	                      ddgf          }t          ||           }t          j        t          d          5  t          ||ddgd           d d d            n# 1 swxY w Y   t          j        t          d          5  t          | |ddgd           d d d            d S # 1 swxY w Y   d S )	Nr   r)   r(   r-   zis not fitted yetr   r5   )r6   r3   )
r  rR   r   r   r   r   r~   r   r   r   )r   r=   r  r  s       rE    test_partial_dependence_unfittedr=    s    		A*			Aq6"\^^aV$< L y11D	~-@	A	A	A I I4aVRHHHHI I I I I I I I I I I I I I I	~-@	A	A	A N N9a1a&"MMMMN N N N N N N N N N N N N N N N N Ns$   (B

BB0CCCzEstimator, datac                     |             }|\  \  }}}|                     ||           t          ||ddgd          }t          ||ddgd          }t          j        |d         d          }t	          ||d                    d S )Nr(   r)   r8   r=   r6   r7   r9   )axis)rL   r   rO   r   r"   )	rQ   rR   rS   r=   rT   r0   pdp_avgpdp_indavg_inds	            rE   +test_kind_average_and_average_of_individualrD    s     )++CFQIGGAqMMM QFKKKG QFNNNGggl+!444GGWY/00000rG   c                 Z    |             }|\  \  }}}t          j        |j        d                   }|                    ||           t	          ||ddgd          }t	          ||ddgd|          }t          |d         |d                    t          |d         |d                    dS )	zDCheck that `sample_weight` does not have any effect on reported ICE.r   r(   r)   r9   r?  )r=   r6   r7   r   r?   N)rO   arangerK   rL   r   r"   )	rQ   rR   rS   r=   rT   r0   r   pdp_nswpdp_sws	            rE   =test_partial_dependence_kind_individual_ignores_sample_weightrI     s     )++CFQIIagaj))MGGAqMMM QFNNNGqAq6M  F GL)6,+?@@@GM*F=,ABBBBBrG   non_null_weight_idx)r   r(   r'   c                 h   t           j        t           j        }}t          t	                      ddgft                      ddgf          }t          |t          |                                         ||          }t          j
        |          }d||<   t          ||ddgd|d          }t          ||ddgdd	          }t          |          rdn t          t          j        |                    }	t          |	          D ]0}
t!          |d         |
         |         |d         |
                    1d
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-   r8   r5   )r7   r   r3   r9   )r7   r3   N)r  rR   r  r   r   r   r   r   rL   rO   
zeros_liker   r   rN   uniquerM   r"   )r   rJ  r=   rT   r  r  r   rH  rB  
output_dimr#  s              rE   +test_partial_dependence_non_null_weight_idxrO  6  sK     9dkqA*			Aq6"\^^aV$< L uY'7'788<<QBBDM!$$M)*M%&		
A#  F !q1a&|UWXXXG"4((?c")A,,.?.?J: 
 
L!!$%899a 	
 	
 	
 	

 
rG   c                     |             }|\  \  }}}|                     ||           d|ddgdd}}t          |fi |d|i}t          j        t	          |                    }t          |fi |d|i}	t          |d         |	d                    dt          j        t	          |                    z  }t          |fi |d|i}
t          |d         |
d                    dS )zFCheck that `sample_weight=None` is equivalent to having equal weights.Nr(   r)   r8   r?  r   )rL   r   rO   r  rN   r"   )rQ   rR   rS   r=   rT   r0   r   r   pdp_sw_nonepdp_sw_unitpdp_sw_doublings              rE   7test_partial_dependence_equivalence_equal_sample_weightrT  _  s
    )++CFQIGGAqMMM 1vy"Q"Q6M$SPPFPP-PPPKGCFFOOM$SPPFPP-PPPKK	*K	,BCCCA'M(TTTTmTTTOK	*OI,FGGGGGrG   c            	      2   t                      } t          \  \  }}}t          j        |          }|                     ||           t          j        t          d          5  t          | |dg|dd         d           ddd           dS # 1 swxY w 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(   Nr5   )r6   r   r3   )	r   binary_classification_datarO   	ones_likerL   r~   r   r   r   rS   r=   rT   r0   r   s        rE   0test_partial_dependence_sample_weight_size_errorrY  w  s     

C2FQILOOMGGAqMMM	z)A	B	B	B 
 
aSabb0ASU	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   !BBBc                  &   t                      } t          \  \  }}}t          j        |          }|                     |||           t          j        t          d          5  t          | |dgd|           ddd           dS # 1 swxY w 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   )r6   r>   r   N)	r   regression_datarO   rW  rL   r~   r   r   r   rX  s        rE   4test_partial_dependence_sample_weight_with_recursionr\    s      
!
!C'FQILOOMGGAqG...	z)V	W	W	W 
 
aSM	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   #BB
B
c                     t          j        dddt           j        gt                                        dd          } t          j        g d          }dd	lm} t           |d
          t                                	                    | |          }t          j        t          d          5  t          || dg           ddd           dS # 1 swxY w Y   dS )znCheck that we raise a proper error when a column has mixed types and
    the sorting of `np.unique` will fail.ry   rz   r{   r   r'   r(   )r   r(   r   r(   r   )OrdinalEncoder)encoded_missing_valuez'The column #0 contains mixed data typesr   r  N)rO   r   nanobjectr   sklearn.preprocessingr^  r   r   rL   r~   r   r   r   )r=   rT   r^  r	  s       rE   test_mixed_type_categoricalrc    s%    	#sC(777??AFFA
A444444
R000  
c!Qii  
z)R	S	S	S 1 13QC00001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   /CCC)k__doc__numpyrO   r~   sklearnsklearn.baser   r   r   r   sklearn.clusterr   sklearn.composer   sklearn.datasetsr	   r
   r   sklearn.dummyr   sklearn.ensembler   r   r   r   r   sklearn.exceptionsr   sklearn.inspectionr   &sklearn.inspection._partial_dependencer   r   r   sklearn.linear_modelr   r   r   sklearn.metricsr   sklearn.pipeliner   rb  r   r   r   r   sklearn.treer    sklearn.tree.tests.test_treer!   sklearn.utils._testingr"   r#   sklearn.utils.fixesr$   sklearn.utils.validationr%   r=   rT   rV  multiclass_classification_datar[  multioutput_regression_datar  markparametrizer\   rt   r   r   r   rM   r   r   r   r   r   DecisionTreeClassifierExtraTreeClassifierensembleExtraTreesClassifier	neighborsKNeighborsClassifierRadiusNeighborsClassifierRandomForestClassifierr   r   r   r   r   r   r   r
  r  r  r4  r!  r;  r=  rD  rI  rO  rT  rY  r\  rc  rA   rG   rE   <module>r     sc          L L L L L L L L L L L L " " " " " " 3 3 3 3 3 3 L L L L L L L L L L ) ) ) ) ) )              . - - - - - 1 1 1 1 1 1         
 V U U U U U U U U U $ $ $ $ $ $ * * * * * *            / . . . . . : : : : : : F F F F F F F F ) ) ) ) ) ) 7 7 7 7 7 7 	"XBx"bAq6Aq6Aq6: 21BQOOOQRS    	"  #?Ra@@@!DObAA>>>  y{{ 	#V-GH	#V-KL	#W.HI	#W.LM	"FO<	"G_=	9	7O4	7$?@	W&@A	W&DE	"=> " *G44qcAq6]33!BCC,9 ,9 DC 43 54# (,9^$/ $/ $/N 	 ! ! ! *QH552 2 6528 +   F F F )558844				W%	"	"	2	2	2G<	"	"	2	2	2K@	&	&A	6	6	6@	&	&A	6	6	6D	 	+9 +9	 	 54+9\ q**C9 C9 +*C9L 	""222&&A666  )+=>>G G ?> G< 	!!q111%%Qta	
 	
 	
 	1---
 
 &))  *)
 
> +(-.3/
 
( (
 
(           F&111!B	
 AAE	
 '&A666C#2% 
 R	
 '&A666FSSQ	
 \JJQ	
 VDDQ	
 44K	
G(+ +X3 3Y+ +X3 ""$$&@&@a&P&P&PQ  b%[115 5 21 5 ""$$&@&@a&P&P&PQ 	4 	4 	4 ""$$&@&@a&P&P&PQ @ @ @L L L$H H H41 1 1  : Dq999""BBB 
12    ^FFvFFFG\^^DDVDDDE	
 	
 	 ^FFvFFFG#	
 	
 	

 	IHH    V44V4445	./   
(O (O   8(OV !		A	(
Q	0	0	0	0	0+>	#	#	#[1 	EDD  
 
N N
 
N( !!##""$$	 	N 	N 	N 	67	78 1 1 1 	67	78 C C C ""$$	  .


;;
 
 <; 
> 	67	78 H H H"
 
 

 
 
1 1 1 1 1rG   