
    -i                     B   S r SSKrSSKrSSKrSSKrSSKrSSKJrJ	r	J
r
Jr  SSKJr  SSKJr  SSKJrJrJr  SSKJr  SSKJrJrJrJrJr  SS	KJr  SS
KJr  SSK J!r!  SSK"J#r#J$r$J%r%  SSK&J'r'J(r(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/J0r0J1r1J2r2J3r3  SSK4J5r5  SSK6J7r7  SSK8J9r9J:r:  SSK;J<r<  SSK=J>r>  SS/SS/SS/SS/SS/SS//r?/ SQr@\" SSS9S4rA\" SSSSS9S4rB\" SSS9S4rC\" SSSS9S4rD\" 5       rE\R                  R                  S \S!\A4\S!\B4\S"\A4\S"\B4\S!\C4\S"\C4\5S"\C4\'S"\C4\'S"\D4\(S"\A4\(S"\B4\)S"\D4/5      \R                  R                  S#S$5      \R                  R                  S%S/SS/45      \R                  R                  S&S'5      \R                  R                  S(S)S*/5      S+ 5       5       5       5       5       rHS, rI\R                  R                  S#SS-/5      S. 5       rJ\R                  R                  S#SS-/5      S/ 5       rK\R                  R                  S0/ S1Q5      S2 5       rL\R                  R                  S3\M" S45      5      \R                  R                  S5\'" 5       S"4\" SS69S"4\" SS69S74\" SS69S"4\" SS69S74/5      S8 5       5       rN\R                  R                  S9\M" S5      5      S: 5       rO\R                  R                  S;\" SS69\" SS6945      \R                  R                  S3S<5      S= 5       5       rP\R                  R                  S;\'" 5       \" SS69\" SSSSS>9\5" SS6945      \R                  R                  S?S@5      SA 5       5       rQ\R                  R                  SB\R                  R                  \R                  R                  \R                  R                  \R                  R                  \R                  R                  \R                  R                  45      SC 5       r[ " SD SE\	\5      r\\R                  R                  SF\" SS!SG9S%S/0SH4\'" 5       S/SISJ.SK4\" SS69S/SIS7SL.SM4\" SS69S/SIS!SL.SM4\'" 5       S/S7SNSO.SP4\'" 5       S/S7SQSO.SP4\'" 5       S/S7SR.SS4\'" 5       SS// STQ\R                  " SU5      SV.SW.SX4/5      SY 5       r^\R                  R                  SZ\'" 5       \" SS69/5      \R                  R                  S%SS[/5      S\ 5       5       r_\R                  R                  SZ\'" 5       \" SS69/5      S] 5       r`\R                  R                  SZ\'" 5       \" SS69/5      S^ 5       raS_ rbS` rcSa rdSb re\R                  R                  ScSd/SeSe4Sd/SS4/5      Sf 5       rf\R                  R                  SgSd/Sd/ ShQ0Si4Sd/SdSjSk/0S4Sd/SdSj/0S4/5      Sl 5       rg\R                  R                  SgSm/SmSdSm/0S4Sm/SmSd/0S4SdSm/SjSk/SdSm/Sn.Si4/5      So 5       rh\R                  R                  SZ\(" SpSSq9\" SS4Sr9/SsSt/Su9\R                  R                  SvS\" \2" 5       Sw V s/ s H  n \ER                  U    PM     sn 4\1" 5       Sx V s/ s H  n \ER                  U    PM     sn 45      \" \2" 5       Sw V s/ s H  n \ER                  U    PM     sn 4SySz9// S{QSu9\R                  R                  S%SS/Sw V s/ s H  n \ER                  U    PM     sn /S|S}/Su9S~ 5       5       5       rj\R                  R                  SSSS/ SQ0SU4\ER                  S   SS4\ER                  S   \ER                  S   \R                  " SjSk/5      0S4SS/SS4SS/S/ SQ0S4Sw V s/ s H  n \ER                  U    PM     sn SS4Sw V s/ s H  n \ER                  U    PM     sn \ER                  S   / SQ0S4Sw V s/ s H  n \ER                  U    PM     sn S/ SQ0S4S V s/ s H  n \ER                  U    PM     sn \ER                  S   SSe/0S4/ SQSS4// SQSu9S 5       rl\R                  R                  SZ\'" 5       \(" 5       \" 5       \" 5       /5      S 5       rm\R                  R                  S\'\D4\(\A4/5      S 5       rn\R                  R                  S\'\D4\(\A4/5      S 5       ro\R                  R                  SZ\'" 5       \(" 5       \" 5       \" 5       /5      \R                  R                  S/ SQ5      S 5       5       rp\R                  R                  S\'\D4\(\A4/5      S 5       rqS rrS rsS rtS ruS rvS rwgs  sn f s  sn f s  sn f s  sn f s  sn f s  sn f s  sn f s  sn f )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           
      B   U " 5       n[        US5      (       a  UR                  SS9  Uu  u  pn
UR                  S   nS nU(       a  SnU Vs0 s H  oUS U2U4   _M     nnUR                  X5        [	        UUUUUUUS9nXS   nnU
/[        [        U5      5       Vs/ s H  nUPM     snQ7nU
U/[        [        U5      5       Vs/ s H  nUPM     snQ7nUS:X  a  UR                  R                  U:X  d   eO[US	:X  a  UR                  R                  U:X  d   eO8UR                  R                  U:X  d   eUR                  R                  U:X  d   e[        U5      U4nUc   e[        R                  " U5      R                  U:X  d   eg s  snf s  snf s  snf )
Nn_estimatorsr+   )r?   r   r6   )Xr8   methodr9   r5   custom_valuesgrid_valuesr:   r;   )hasattr
set_paramsshapefitr   rangelenr:   r;   npasarray)	EstimatorrA   datar5   r8   r9   r=   estr@   yr2   n_instancesrB   fresultpdpaxes_expected_pdp_shapeexpected_ice_shapeexpected_axes_shapes                        c/var/www/html/venv/lib/python3.13/site-packages/sklearn/inspection/tests/test_partial_dependence.pytest_output_shaperZ   G   s   < +CsN##A&
 FQI''!*KM<DEHqA..122HEGGAM
'#F }-C#Vc(m@T&U@T1@T&UV $)X#7	8#7a/#7	8
 y{{  $6666		~~##'9999{{  $6666~~##'9999x=/:::d!!%8888= F 'V 
9s   F F
Fc            	         Sn SnSS/n[         R                  " SS/SS//5      n[        X0X!0 5      u  pE[        USS/SS/SS/SS//5        [        XSR                  5        [         R
                  R                  S5      nS	nUR                  S
S9n[        UU UU0 S9u  pEUR                  X-  UR                  S   4:X  d   e[         R                  " U5      R                  SU4:X  d   eUR                  UR                  :X  d   eSnSX7S-
  S 2S4'   UR                  U5        [        UU UU0 S9u  pEUR                  Xq-  UR                  S   4:X  d   eUS   R                  U4:X  d   eUS   R                  U4:X  d   eUR                  UR                  :X  d   eUR                  S
S9nSX7S-
  S 2S4'   / SQn[        UU UUSU0S9u  pEUR                  U[        U5      -  UR                  S   4:X  d   eUS   R                  U4:X  d   eUS   R                  [        U5      4:X  d   eUR                  UR                  :X  d   eUR                  S
S9n/ SQn	Sn[        UU UUSU	0S9u  pEUR                  U[        U	5      -  UR                  S   4:X  d   eUS   R                  [        U	5      4:X  d   eUS   R                  U4:X  d   eUR                  [         R                  " U[         R                  " U	5      R                  5      :X  d   e[         R                  " SS/SS/SS//5      n[        UU UUS/ SQ0S9u  pEUR                  [        :X  d   eg )N皙?ffffff?d   Fr*   r+   r/      r      )   r+   sizer5   rB      90  r   r+   r/   )is_categoricalr5   rB   )r   r+   r/   r`   r6      r6   abcrk   rl   rm   )rJ   rK   r   r%   TrandomRandomStatenormalrF   dtypeshufflerI   result_typearrayobject)
percentilesr5   ri   r@   gridrT   rngn_unique_valuescol_1_rangecol_0_ranges
             rY   test_grid_from_Xr~      s   
 KOU^N


QFQF#$AanrRJDtq!fq!fq!fq!f=>tSS! ))


"CO 	


 A	'JD ::/;QWWQZHHHH::d!!a%9999::    O"'AQKKN	'JD ::/;QWWQZHHHH7==_....7==_....::    	


 A"'AQK	%'+&JD ::/C,<<aggajIIII7==_....7==S-////::    	


 A$KO	%'+&JD ::/C,<<aggajIIII7==S-////7==_....::2::k+B+H+HIIII
1c(QHq#h/0A	%'/*JD ::    r_   c                     [         R                  " S5      nSnS/nUR                  S/ SQ05      n[        UUUU 0 S9u  pVUR                  SUR                  S   4:X  d   eUS	   R                  S
:X  d   eg)bCheck that `_grid_from_X` always sample from categories and does not
depend from the percentiles.
pandasr\   Tcat_feature)ABCr   r   DEre   r6   r*   r   )r6   N)pytestimportorskip	DataFramer   rF   )r5   pdrx   ri   r@   ry   rT   s          rY   !test_grid_from_X_with_categoricalr      s     
		X	&BKVN
m%HIJA	'JD ::!QWWQZ(((7==D   r   c                    [         R                  " S5      nSnSS/nUR                  / SQ/ SQS.5      nUR                  5       n[	        UUUU 0 S9u  pgU S	:X  aF  UR
                  S
:X  d   eUS   R
                  S   US   :X  d   eUS   R
                  S   U :X  d   egUR
                  S:X  d   eUS   R
                  S   US   :X  d   eUS   R
                  S   US   :X  d   eg)r   r   r\   TF)
r   r   r   r   r   r   r   r   r   r   )
r*   r*   r*   r+   r6   rj   rj   rj   rj      )catnumre   r/   )ra   r+   r   r   r*   )   r+   r   N)r   r   r   nuniquer   rF   )r5   r   rx   ri   r@   r   ry   rT   s           rY   #test_grid_from_X_heterogeneous_typer     s	   
 
		X	&BKE]N
E1	
	A iikG	'JD !zzW$$$Aw}}Q75>111Aw}}Q?222zzW$$$Aw}}Q75>111Aw}}Q75>111r   z%grid_resolution, percentiles, err_msg))r+   )r   g-C6?zpercentiles are too close)r_   )r*   r+   r/   r`   .'percentiles' must be a sequence of 2 elements)r_   rg   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           	          [         R                  " SS/SS//5      nS/n[        R                  " [        US9   [        X1X@0 S9  S S S 5        g ! , (       d  f       g = f)Nr*   r+   r/   r`   Fmatch)rB   )rJ   rK   r   raises
ValueErrorr   )r5   rx   err_msgr@   ri   s        rY   test_grid_from_X_errorr   ,  sM     	

QFQF#$AWN	z	1Q^TVW 
2	1	1s   A
Atarget_featurer6   zest, methodr.   	recursionc                 *   [        SSSS9u  p4XDR                  5       -
  n[        U 5      R                  X45      n [        R
                  " U/[        R                  S9n[        R
                  " S/S//5      nUS:X  a  [        XXSSS	9u  pxO[        XU5      n/ n	S
 HI  n
UR                  5       nXS S 2U4'   U	R                  U R                  U5      R                  5       5        MK     US   nUS:X  a  SOSn[        R                  " XyUS9(       d   eg )Nr   r6   )r.   
n_featuresn_informativers         ?{   r4   r3   )response_method)r   r   r   r   gMbP?)rtol)r   meanr   rG   rJ   rv   intpr   r   copyappendpredictallclose)rN   rA   r   r@   rO   r8   ry   rS   predictionsmean_predictionsvalX_r   s                rY   test_partial_dependence_helpersr   ?  s   0 aqIDA 	
FFHA *..
C xx(8H88cUSEN#D4xF
[ ,Cx@VVX #1nB 4 4 67 
 a&C [(4dD;;s4888r   seedc                 @   [         R                  R                  U 5      nSnSnUR                  X#5      nUR                  U5      S-  nXUR	                  5       -
  nSnSn[        SS SUUS9n[        U5      R                  [         R                  " [         R                  5      R                  5      n	[        SSSUU	S	9n
[        XiS
9nUR                  XE5        U
R                  XE5        UR                  XE5         [        UR                  U
S   R                  5        [        UR                  US   R                  5        UR                  S5      R%                  SS5      n['        U5       H  n[         R(                  " U/[         R*                  S9n[-        XU5      n[-        XU5      n[-        XU5      n[         R.                  R1                  UU5        [         R.                  R1                  UU5        M     g ! [          a    ["        (       d   S5       e g f = f)N  r6   r7   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   )rJ   rp   rq   randnr   r   r'   randintiinfoint32maxr   r"   rG   r#   tree_AssertionErrorr&   reshaperH   rv   r   r   testingr$   )r   rz   r-   r   r@   rO   r   	tree_seedforestequiv_random_stategbdttreery   rQ   r8   
pdp_forestpdp_gbdtpdp_trees                     rY   /test_recursion_decision_tree_vs_forest_and_gbdtr   x  s    ))


%C IJ		)(A		)r!A
 	
FFHA II"F ,I6>>rxx?Q?U?UV$!'D !9VD
JJqHHQNHHQN$**d4j&6&67$**fQioo6 99R=  Q'D:88QCrww/26J
0XF0XF


""8X6


"":x8    yEEEys   <AG> >HHrN   )r   r*   r+   r/   r`   r6   c           	          [        SSSS9u  p#[        R                  " U5      S:X  d   e[        U 5      R	                  X#5      n [        U UU/SSSS9n[        U UU/SS	SS9n[        US   US   S
S9  g )Nr+   r*   r0   r1   r.   r   decision_functionr   r:   )r   rA   r9   r4   gHz>)atol)r
   rJ   r   r   rG   r   r$   )rN   r   r@   rO   preds_1preds_2s         rY    test_recursion_decision_functionr     s     QRSDA771:
*..
C 		+G !		+G GI&	(:Fr   )r.   min_samples_leafmax_leaf_nodesmax_iterpower)r*   r+   c                    [         R                  R                  S5      nSnSnUR                  US4S9nUS S 2U4   U-  n[	        U 5      R                  XV5      n [        X/USSS9nUS	   S   R                  S
S5      nUS   S   n	[        US9R                  U5      n[        5       R                  X5      n
[        XR                  U5      5      nUS:  d   eg )Nr      r+   r6   rc   r   r:   )r8   r@   r5   r9   rC   r)   r*   )degreeGz?)rJ   rp   rq   rr   r   rG   r   r   r   fit_transformr   r   r   )rN   r   rz   r-   target_variabler@   rO   rS   new_Xnew_ylrr2s               rY   #test_partial_dependence_easy_targetr     s    ( ))


"CIO

A
'A	!_
&A
*..
C
'1dC q!))"a0E	N1Ee,::5AE					-B	%E*	+B99r   rL   c                    [        SSSS9u  p[        R                  " X"/5      R                  nU " 5       nUR	                  X5        [
        R                  " [        SS9   [        X1S/5        S S S 5        g ! , (       d  f       g = f)Nr/   r*   r   r   z3Multiclass-multioutput estimators are not supportedr   )	r
   rJ   rv   ro   rG   r   r   r   r   )rL   r@   rO   rN   s       rY   test_multiclass_multioutputr     sm     QRSDA
!A
+CGGAM	O
 	3A3'
 
 
s    A77
Bc                       \ rS rSrS rSrg) NoPredictProbaNoDecisionFunctioni+  c                     SS/U l         U $ )Nr   r*   classes_)selfr@   rO   s      rY   rG   $NoPredictProbaNoDecisionFunction.fit,  s    Ar   r   N)__name__
__module____qualname____firstlineno__rG   __static_attributes__ r   rY   r   r   +  s    r   r   zestimator, params, err_msg)r.   n_initz4'estimator' must be a fitted regressor or classifierpredict_proba)r8   r   z7The response_method parameter is ignored for regressors)r8   r   rA   zC'recursion' method, the response_method must be 'decision_function'r;   )r8   rA   r9   zCThe 'recursion' method only applies when 'kind' is set to 'average'r<   )r8   rA   z=Only the following estimators support the 'recursion' method:r*   r+   r/   )r/   r/   r   r*   )r8   rB   zYThe custom grid for some features is not a one-dimensional array. Feature 1: 2 dimensionsc                     [        SS9u  p4[        U 5      R                  X45      n [        R                  " [
        US9   [        X40 UD6  S S S 5        g ! , (       d  f       g = f)Nr   r   r   r
   r   rG   r   r   r   r   )	estimatorparamsr   r@   rO   s        rY   test_partial_dependence_errorr   2  sM    j A.DAi $$Q*I	z	19262 
2	1	1s   A
A#r   i'  c                     [        SS9u  p#[        U 5      R                  X#5      n Sn[        R                  " [
        US9   [        XU/5        S S S 5        g ! , (       d  f       g = f)Nr   r   zall features must be inr   r   )r   r8   r@   rO   r   s        rY   /test_partial_dependence_unknown_feature_indicesr   n  sP    
 A.DAi $$Q*I'G	z	19(4 
2	1	1s   A
A&c                 $   [         R                  " S5      n[        SS9u  p#UR                  U5      n[	        U 5      R                  XC5      n S/nSn[         R                  " [        US9   [        XU5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   rp   z/A given column is not a column of the dataframer   )	r   r   r
   r   r   rG   r   r   r   )r   r   r@   rO   dfr8   r   s          rY   .test_partial_dependence_unknown_feature_stringr  {  sr     
		X	&BA.DA	aBi $$R+IzH?G	z	19(3 
2	1	1s   +B
Bc                 z    [        SS9u  p[        U 5      R                  X5      n [        U [	        U5      S/SS9  g )Nr   r   r:   )r9   )r
   r   rG   r   list)r   r@   rO   s      rY   test_partial_dependence_X_listr    s9    
 A.DAi $$Q*Iy$q'A3Y?r   c            	      p   [        [        5       SS9n U R                  [        [        5        [
        R                  " [        SS9   [        U [        S/SSS9  S S S 5        [
        R                  " [        SS9   [        U [        S/SSS9  S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr   )initr.   z9Using recursion method with a non-constant init predictorr   r   r:   )rA   r9   )	r   r   rG   r@   rO   r   warnsUserWarningr   )gbcs    rY   (test_warning_recursion_non_constant_initr    s     %/*;!
LCGGAqM	V
 	3A3{K

 
V
 	3A3{K
 

 


 
s   B:B'
B$'
B5c                     Sn [         R                  R                  S5      nUR                  SU [        S9nUR                  U 5      nUR                  5       nXB)    * XB) '   [         R                  X#4   n[         R                  " U 5      nSXb'   [        SSS9nUR                  XTUS	9  [        XuS/S
S9n[         R                  " US
   US   5      S   S:  d   eg )Nr   i@ r+   )rd   rs   g     @@r7   r*   )r?   r.   sample_weightr:   )r8   r9   rC   r   r   )rJ   rp   rq   r   boolrandr   c_onesr   rG   r   corrcoef)	Nrz   maskxrO   r@   r  clfrS   s	            rY   9test_partial_dependence_sample_weight_of_fitted_estimatorr    s    
 	A
))


'C;;qq;-DA	A%yAeH
dgAGGAJM M
#!
DCGGAG.
Sqc	
BC;;s9~s='9:4@4GGGr   c            	         [        SS9n U R                  [        [        [        R
                  " [        [        5      5      S9  [        R                  " [        SS9   [        U [        S/S9  S S S 5        g ! , (       d  f       g = f)Nr*   r   r  z#does not support partial dependencer   r8   )r   rG   r@   rO   rJ   r  rI   r   r   NotImplementedErrorr   r  s    rY   test_hist_gbdt_sw_not_supportedr    s\    
'Q
7CGGAqAG0	#H
 	3QC0
 
 
s   A77
Bc                     [        5       n [        5       n[        SS9n[        X5      nUR	                  UR                  U R                  5      U R                  5        UR	                  U R                  U R                  5        Sn[        X0R                  U/SSS9n[        UUR                  U R                  5      U/SSS9n[        US   US   5        [        US   S   US   S   UR                  U   -  UR                  U   -   5        g )N*   r   r   r7   r:   r8   r5   r9   rC   )r	   r    r   r   rG   r   rM   targetr   	transformr$   scale_mean_)irisscalerr  piper8   pdp_pipepdp_clfs          rY    test_partial_dependence_pipeliner*    s    ;DF
r
*C%DGGF  +T[[9HHTYY$H!ii8*byH !#G HY');<"q!FMM($;;fll8>TTr   z*features, grid_resolution, n_vals_expectedrk   r7   c           	          [         R                  " S5      n[        5       n[        R                  R                  S5      nUR                  UR                  SSSS9R                  [        R                  5      UR                  SSSS9R                  [        R                  5      S.5      nUR                  UR                  SSSS95      nUR                  Xg5        [        UUU USS	9nUS   R                  U:X  d   eg )
Nr   r   r7   r_   rc   rk   rl   r+   r:   r   )r   r   r   rJ   rp   rq   r   r   astypefloat64SeriesrG   r   rd   )	r8   r5   n_vals_expectedr   modelrz   r@   rO   part_deps	            rY   4test_partial_dependence_binary_model_grid_resolutionr3    s     
		X	&BE
))


"C
Q-44RZZ@Q-44RZZ@	
	A 			#++a+-.A	IIaO!	'H I##666r   z(features, custom_values, n_vals_expected      ?       @      @g      @r`   r5  r6  c           	         [         R                  " S5      n[        5       nUR                  / SQ/ SQS.5      nUR	                  / SQ5      nUR                  XV5        [        UUU SUSS9nUS   R                  U:X  d   eg )	Nr   r4  )g      @g      @g       @g      "@r,  r   r*   r   r*   r/   r:   r8   r5   rB   r9   )r   r   r   r   r/  rG   r   rd   )r8   rB   r0  r   r1  r@   rO   r2  s           rY   2test_partial_dependence_binary_model_custom_valuesr;  	  s     
		X	&BE
/6JKLA
		,A	IIaO!	#H I##666r   rl   r,  c           	      f   [         R                  " S5      n[        [        SS9[	        5       [        5       5      nUR                  / SQ/ SQS.5      nUR                  / SQ5      nUR                  XV5        UR                  / SQ/ SQS.5      n[        UUU S	US
S9nUS
   R                  U:X  d   eg )Nr   most_frequent)strategyr4  )rk   rl   rk   rl   r,  r9  )rk   rl   rk   Nr/   r:   r:  )r   r   r   r   r   r   r   r/  rG   r   rd   )	r8   rB   r0  r   plr@   rO   	X_holdoutr2  s	            rY   .test_partial_dependence_pipeline_custom_valuesrA  &  s     
		X	&B	//BS
B 	/6JKLA
		,AFF1L#7>STUI!
#H I##666r   r   r   r.   )r.   r?   zestimator-brutezestimator-recursion)idspreprocessorr   r+   r*   r/   passthrough)	remainder)Nonezcolumn-transformerzcolumn-transformer-passthroughzfeatures-integerzfeatures-stringc           	         [         R                  " S5      nUR                  [        [        R
                  5      [        R                  S9n[        U[        U 5      5      nUR                  U[        R                  5        [        XTUSSS9nUb  [        U5      R                  U5      nSS/nOUnSS/n[        U 5      R                  U[        R                  5      n	[        U	UUS	SSS
9n
[        US   U
S   5        UbH  UR                  S   n[        US   S   U
S   S   UR                  S   -  UR                   S   -   5        g [        US   S   U
S   S   5        g )Nr   columnsr7   r:   r   r   r*   r+   r4   )r8   rA   r5   r9   standardscalerrC   )r   r   r   r!   r%  rM   feature_namesr   r   rG   r!  r   r   r$   named_transformers_r#  r$  )r   rD  r8   r   r  r'  r(  X_procfeatures_clfr  r)  r&  s               rY   !test_partial_dependence_dataframerR  F  s`   > 
		X	&B	eDII&0B0B	CBuY'78DHHR!8RiH |$22261v1v
	


vt{{
3C G HY');<112BC]#A&M"1%a(886<<?J	

 	/2GM4J14MNr   z*features, custom_values, expected_pd_shape)r   Nr/   r7   r5  r6  r7  rS  )r/   r+   )r/   r7   r7   )   r   	   r7   )r/   r7   r`   )r*   r+   r/   r7   rh   )r/   r7   r+   r7   )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           	      l   [         R                  " S5      nUR                  [        R                  [        R
                  S9n[        [        5       S Vs/ s H  n[        R
                  U   PM     sn4[        5       S Vs/ s H  n[        R
                  U   PM     sn45      n[        U[        SSS95      nUR                  U[        R                  5        [        UUU SS	US
9nUS	   R                  U:X  d   e[        US   5      [        US	   R                  5      S-
  :X  d   eg s  snf s  snf )Nr   rK  rE  rF  r   r   rB  r7   r:   )r8   r5   r9   rB   rC   r*   )r   r   r   r%  rM   rN  r   r    r   r   r   rG   r!  r   rF   rI   )	r8   rB   expected_pd_shaper   r  irD  r'  r(  s	            rY   $test_partial_dependence_feature_typerZ    s   N 
		X	&B	dii););	<B*		6B6aD..q16BC	@A$,,Q/@AL ($QGD 	HHR!
#H I$$(9999x&'3x	/B/H/H+IA+MMMM! C@s   D,
D1c                    [         R                  n[        [        5       SS/4[	        5       SS/45      n[        X 5      n[        R                  " [        SS9   [        X1SS/SS9  S S S 5        [        R                  " [        SS9   [        XSS/SS9  S S S 5        g ! , (       d  f       N>= f! , (       d  f       g = f)	Nr   r+   r*   r/   zis not fitted yetr   r7   )r8   r5   )
r%  rM   r   r    r   r   r   r   r   r   )r   r@   rD  r'  s       rY    test_partial_dependence_unfittedr\    s     			A*		Aq6"\^aV$<L 1D	~-@	A4aVRH 
B	~-@	A91a&"M 
B	A 
B	A	A	As   BB0
B-0
B>zEstimator, datac                     U " 5       nUu  u  p4nUR                  X45        [        X#SS/SS9n[        X#SS/SS9n[        R                  " US   SS9n[	        XS   5        g )Nr*   r+   r:   r@   r8   r9   r;   )axis)rG   r   rJ   r   r$   )	rL   rM   rN   r@   rO   r2   pdp_avgpdp_indavg_inds	            rY   +test_kind_average_and_average_of_individualrc    sh     +CFQIGGAM QFKG QFNGgggl+!4GGY/0r   c                    U " 5       nUu  u  p4n[         R                  " UR                  S   5      nUR                  X45        [	        X#SS/SS9n[	        X#SS/SUS9n[        US   US   5        [        US   US   5        g)	zDCheck that `sample_weight` does not have any effect on reported ICE.r   r*   r+   r;   r^  )r@   r8   r9   r  rC   N)rJ   arangerF   rG   r   r$   )	rL   rM   rN   r@   rO   r2   r  pdp_nswpdp_sws	            rY   =test_partial_dependence_kind_individual_ignores_sample_weightrh    s     +CFQIIIaggaj)MGGAM QFNGAq6MF GL)6,+?@GM*F=,ABr   non_null_weight_idx)r   r*   r)   c           	         [         R                  [         R                  p2[        [	        5       SS/4[        5       SS/45      n[        U[        U 5      5      R                  X#5      n[        R                  " U5      nSXa'   [        UUSS/SUSS9n[        XRSS/SSS	9n[        U5      (       a  SO[        [        R                  " U5      5      n	[        U	5       H  n
[!        US   U
   U   US   U
   5        M      g
)zCheck 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/   r:   r7   )r9   r  r5   r;   )r9   r5   N)r%  rM   r!  r   r    r   r   r   rG   rJ   
zeros_liker   r   rI   uniquerH   r$   )r   ri  r@   rO   rD  r'  r  rg  ra  
output_dimrY  s              rY   +test_partial_dependence_non_null_weight_idxrn    s      99dkkq*		Aq6"\^aV$<L uY'78<<QBDMM!$M)*M&		
A#F !1a&|UWXG"4((c"))A,.?J:L!!$%899a 	
 r   c                 ~   U " 5       nUu  u  p4nUR                  X45        SUSS/SS.pv[        U40 UDSU0D6n[        R                  " [	        U5      5      n[        U40 UDSU0D6n	[        US   U	S   5        S[        R                  " [	        U5      5      -  n[        U40 UDSU0D6n
[        US   U
S   5        g)zFCheck that `sample_weight=None` is equivalent to having equal weights.Nr*   r+   r:   r^  r  )rG   r   rJ   r  rI   r$   )rL   rM   rN   r@   rO   r2   r  r   pdp_sw_nonepdp_sw_unitpdp_sw_doublings              rY   7test_partial_dependence_equivalence_equal_sample_weightrs  1  s     +CFQIGGAM 1vy"Q6$SPFP-PKGGCFOM$SPFP-PKK	*K	,BCA'M(TTmTOK	*OI,FGr   c            	         [        5       n [        u  u  pn[        R                  " U5      nU R	                  X5        [
        R                  " [        SS9   [        XS/USS SS9  SSS5        g! , (       d  f       g= f)zbCheck 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*   Nr7   )r8   r  r5   )	r   binary_classification_datarJ   	ones_likerG   r   r   r   r   rN   r@   rO   r2   r  s        rY   0test_partial_dependence_sample_weight_size_errorrx  I  sg     
C2FQILLOMGGAM	z)A	BaSab0ASU	
 
C	B	Bs   A00
A>c            	          [        5       n [        u  u  pn[        R                  " U5      nU R	                  XUS9  [
        R                  " [        SS9   [        XS/SUS9  SSS5        g! , (       d  f       g= f)zYCheck that we raise an error when `sample_weight` is provided with
`"recursion"` method.
r  z+'recursion' method can only be applied whenr   r   r   )r8   rA   r  N)	r   regression_datarJ   rv  rG   r   r   r   r   rw  s        rY   4test_partial_dependence_sample_weight_with_recursionr{  X  sd      
!C'FQILLOMGGAG.	z)V	WaSM	
 
X	W	Ws   A,,
A:c                     [         R                  " SSS[         R                  /[        S9R	                  SS5      n [         R                  " / SQ5      nSS	KJn  [        U" SS
9[        5       5      R                  X5      n[        R                  " [        SS9   [        X0S/S9  SSS5        g! , (       d  f       g= f)zjCheck 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*   r9  r   )OrdinalEncoder)encoded_missing_valuez'The column #0 contains mixed data typesr   r  N)rJ   rv   nanrw   r   sklearn.preprocessingr}  r   r   rG   r   r   r   r   )r@   rO   r}  r  s       rY   test_mixed_type_categoricalr  g  s     	#sC(7??AFA
A4
R0 
c!i  
z)R	S3QC0 
T	S	Ss   B//
B=c                  H   [         R                  " S5      R                  SS5      n [         R                  " / SQ5      n[	        5       nUR                  X5        [        R                  " [        [        R                  " S5      S9   [        X SS9  S S S 5        [        R                  " [        [        R                  " S	5      S9   [        X S
/S/S9  S S S 5        [        R                  " [        [        R                  " S5      S9   [        X SS
/S9  S S S 5        [        R                  " 5          [        R                  " S5        [        X S
S
/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nq= f! , (       d  f       g = f)Nr   r`   r+   r9  z#The column 0 contains integer data.r   r   r  z#The column 1 contains integer data.r*   r8   categorical_featureserror)rJ   re  r   rv   r   rG   r   r  FutureWarningreescaper   warningscatch_warningssimplefilter)r@   rO   r  s      rY   $test_reject_array_with_integer_dtyper  w  s+   
		!Q"A
A

CGGAM	RYY'LM
 	3A.

 
RYY'LM
 	3QCqcJ

 
RYY'LM
 	3QF3
 
	 	 	"g&3AQCH 
#	"#
 


 


 
 
#	"s0   E E1
F4#F 
E.1
E?
F
F!c                     [         R                  " S5      n U R                  / SQ/ SQ/ SQS.5      n[        R                  " / SQ5      n[        5       nUR                  X5        [         R                  " [        [        R                  " S5      S9   [        X1SS	9  S S S 5        [         R                  " [        [        R                  " S5      S9   [        X1S
S/S	9  S S S 5        [        R                  " 5          [        R                  " S5        [        X1S
/S	9  [        X1S/S/S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       Nl= f! , (       d  f       g = f)Nr   rT  r   rn   )r   r*   r   z%The column 'c' contains integer data.r   rm   r  rk   r  r  )r   r   r   rJ   rv   r   rG   r  r  r  r  r   r  r  r  )r   r@   rO   r  s       rY   %test_reject_pandas_with_integer_dtyper    s   			X	&B
 	
	A 	A

CGGAM	RYY'NO
 	3C0

 
RYY'NO
 	3S#J7
 
	 	 	"g&3SE23SEN 
#	"
 


 
 
#	"s$   D4E</E4
E
E
E$c                  \   [        [        5       [        5       5      n U R                  [        R
                  [        R                  5        [        R                  " [        [        R                  " S5      S9   [        U [        R
                  S// S9  SSS5        g! , (       d  f       g= f)zUCheck 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   r@   r8   r  N)r   r    r   rG   r%  rM   r!  r   r   r   r  r  r   r  s    rY   2test_partial_dependence_empty_categorical_featuresr    sv     (*<*>
?CGGDIIt{{#	ii$

 	TYY!2	

 
 
s   8B
B+)x__doc__r  r  numpyrJ   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.imputer   sklearn.inspectionr   &sklearn.inspection._partial_dependencer   r   r   sklearn.linear_modelr   r   r   sklearn.metricsr   sklearn.pipeliner   r  r   r   r   r    r!   sklearn.treer"   sklearn.tree.tests.test_treer#   sklearn.utils._testingr$   r%   sklearn.utils.fixesr&   sklearn.utils.validationr'   r@   rO   ru  multiclass_classification_datarz  multioutput_regression_datar%  markparametrizerZ   r~   r   r   r   rH   r   r   r   r   r   DecisionTreeClassifierExtraTreeClassifierensembleExtraTreesClassifier	neighborsKNeighborsClassifierRadiusNeighborsClassifierRandomForestClassifierr   r   r  r   r   r  r  r  r  r  r*  r3  r;  rA  rN  rR  rv   rZ  r\  rc  rh  rn  rs  rx  r{  r  r  r  r  )rY  s   0rY   <module>r     sb   
     L L " 3 L L )  . ( 1 
 V U $ *  / : F ) 7 	"XBx"bAq6Aq6Aq6: 2BQOQRS  	"  #Ra@!DbAA>  { 	#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qcAq6]3!BC,tUm<49 = D 4 5#*49n[ | 	!!& *QH52 62@ +XX )584		W%	"	2G<	"	2K@	&A	6@	&A	6D	+9	 5+9\ q*C9 +C9L 	"2&A6 )+=>G ?G< 	!q1%Qta	
 	1-
 &) *
> ++((--..33//
(
(     &1!B	
 AE	
 'A6C#2%
 R	
 'A6FSQ	
 \JQ	
 VDQ	
 4K	
 QiBGGFO2TU*		
Q03h3i3h3 "$&@a&PQ b%[15 25 "$&@a&PQ	4	4 "$&@a&PQ@@L$H41: 0
B
1774 .
*+Q/
sCj!1%
sea 77* .
sCj!1%
sea 
sC:S#J7;770 Dq9"B 
12   vFv! 2 21 5vFG^VDVd003VDE	
 	 vFv! 2 21 5vFG#	

 	I   VV4Vd  #V45	./  
(O8(OV 0	
Q &)			A	g.			A	!3!3A!6#s8L MvV
Q{#
Q!]#Z0)/	0A$

Q
	0$D,23FqT"F3"M2	

 *0	0A$

Q
	01m2DkR,56IqT"I6"QG,	

 
$T;7'*	/  $JNK$JN2 !#"$		N	N 	67	7811 	67	78CC "$	 .
;
 <
> 	67	78HH"

1 I6O>
}
  GD  G 5n 
13 
16s0   "e9e>4f6ff>f1ff