Ë
    ÷Q(h'  ã                   óð  — 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j‚                  j…                  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j‚                  j…                  d"d#«      ej‚                  j…                  d$dgddgf«      ej‚                  j…                  d%d&«      d'„ «       «       «       «       ZCd(„ ZDej‚                  j…                  d"dd)g«      d*„ «       ZEej‚                  j…                  d"dd)g«      d+„ «       ZFej‚                  j…                  d,g d-¢«      d.„ «       ZGej‚                  j…                  d/ eHd0«      «      ej‚                  j…                  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j‚                  j…                  d5 eHd«      «      d6„ «       ZJej‚                  j…                  d7 ed¬2«       ed¬2«      f«      ej‚                  j…                  d/d8«      d9„ «       «       ZKej‚                  j…                  d7 e#«        ed¬2«       edddd¬:«       e0d¬2«      f«      ej‚                  j…                  d;d<«      d=„ «       «       ZLej‚                  j…                  d>ejš                  jœ                  ejš                  jž                  ej                   j¢                  ej¤                  j¦                  ej¤                  j¨                  ej                   jª                  f«      d?„ «       ZV G d@„ dAee«      ZWej‚                  j…                  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j‚                  j…                  dQ e#«        ed¬2«      g«      ej‚                  j…                  d$ddRg«      dS„ «       «       ZYej‚                  j…                  dQ e#«        ed¬2«      g«      dT„ «       ZZej‚                  j…                  dQ e#«        ed¬2«      g«      dU„ «       Z[dV„ Z\dW„ Z]dX„ Z^dY„ Z_ej‚                  j…                  dQ e$dZd¬[«       edd0¬\«      gd]d^g¬_«      ej‚                  j…                  d`d e e-«       daD � cg c]  } e@jÀ                  |    ‘Œ c} f e,«       dbD � cg c]  } e@jÀ                  |    ‘Œ c} f«       e e-«       daD � cg c]  } e@jÀ                  |    ‘Œ c} fdc¬d«      gg de¢¬_«      ej‚                  j…                  d$ddgdaD � cg c]  } e@jÀ                  |    ‘Œ c} gdfdgg¬_«      dh„ «       «       «       Zaej‚                  j…                  didje@jÀ                  d   dkfddgdlfdaD � cg c]  } e@jÀ                  |    ‘Œ c} dlfg dm¢dlfgg dn¢¬_«      do„ «       Zbej‚                  j…                  dQ e#«        e$«        e«        e«       g«      dp„ «       Zcej‚                  j…                  dqe#e?fe$e<fg«      dr„ «       Zdej‚                  j…                  dqe#e?fe$e<fg«      ds„ «       Zeej‚                  j…                  dQ e#«        e$«        e«        e«       g«      ej‚                  j…                  dtg du¢«      dv„ «       «       Zfej‚                  j…                  dqe#e?fe$e<fg«      dw„ «       Zgdx„ Zhdy„ Zidz„ Zjyc c} w c c} w c c} w c c} w c c} w ){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|j                  d¬«       |\  \  }}}	|j                  d   }
|j                  ||«       t	        ||||||¬«      }||d   }}|	gt        t        |«      «      D �cg c]  }|‘Œ c}¢­}|	|
gt        t        |«      «      D �cg c]  }|‘Œ c}¢­}|dk(  r|j                  j                  |k(  sXJ ‚|dk(  r|j                  j                  |k(  s8J ‚|j                  j                  |k(  sJ ‚|j                  j                  |k(  sJ ‚t        |«      |f}|€J ‚t        j                  |«      j                  |k(  sJ ‚y c c}w c c}w )	NÚn_estimatorsr)   )r<   r   )ÚXr6   Úmethodr7   r3   Úgrid_valuesr8   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                     ún/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/inspection/tests/test_partial_dependence.pyÚtest_output_shaperU   B   s�  € ñ6 ‹+€CÜˆs�NÔ#Ø�‰ AˆÔ&ð
 Ñ�F€QˆˆIØ—'‘'˜!‘*€Kà‡G�GˆAˆq„MÜØØ
ØØØØ'ô€Fð ˜˜}Ñ-ˆ€Cà#ÐVÄÄcÈ(ÃmÓ@TÖ&U¸1¢Ò&UÑVÐàØðô $)¬¨X«Ó#7Ö	8˜aŠ/Ò	8ñÐð
 ˆyÒØ�{‰{× Ñ Ð$6Ò6Ð6Ð6Ø	�Ò	Ø�~‰~×#Ñ#Ð'9Ò9Ð9Ð9à�{‰{× Ñ Ð$6Ò6Ð6Ð6Ø�~‰~×#Ñ#Ð'9Ò9Ð9Ð9ä˜x›=¨/Ð:ÐØÐÐÐÜ�:‰:�dÓ×!Ñ!Ð%8Ò8Ð8Ñ8ùò! 'Vùò 
9s   Á?	E Â&	E%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
                  j                  d«      }d	}|j                  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<   |j                  |«       t        || ||¬«      \  }}|j                  ||z  |j                  d   fk(  sJ ‚|d   j                  |fk(  sJ ‚|d   j                  |fk(  sJ ‚y )N©çš™™™™™©?çffffffî?éd   Fr(   r)   r-   é   r   é   )é   r)   ©Úsize©r3   é   é90  )
rF   rG   r   r#   ÚTÚrandomÚRandomStateÚnormalrB   Úshuffle)Úpercentilesr3   Úis_categoricalr=   ÚgridrO   ÚrngÚn_unique_valuess           rT   Útest_grid_from_Xrm   …   s›  € ð
 €KØ€OØ˜U�^€NÜ
�
‰
�Q˜�F˜Q ˜FÐ#Ó$€AÜ˜a ¨n¸oÓN�J€Dˆ$Ü�t˜q !˜f q¨! f¨q°!¨f°q¸!°fÐ=Ô>Ü�t˜QŸS™SÔ!ô �)‰)×
Ñ
 Ó
"€CØ€Oð 	�
‰
˜ˆ
Ó €AÜØ	ˆ;˜¸ô�J€Dˆ$ð �:‰:˜/¨OÑ;¸Q¿W¹WÀQ¹ZÐHÒHÐHÐHÜ�:‰:�dÓ×!Ñ! a¨Ð%9Ò9Ð9Ð9ð €OØ"'€A€o˜ÑÑ˜QÐÑØ‡K�K�„NÜØ	ˆ;˜¸ô�J€Dˆ$ð �:‰:˜/¨OÑ;¸Q¿W¹WÀQ¹ZÐHÒHÐHÐHà�‰7�=‰=˜_Ð.Ò.Ð.Ð.Ø�‰7�=‰=˜_Ð.Ò.Ð.Ñ.ó    rZ   c                 óî   — t        j                  d«      }d}dg}|j                  dg d¢i«      }t        |||| ¬«      \  }}|j                  d|j                  d   fk(  sJ ‚|d	   j                  d
k(  sJ ‚y)újCheck that `_grid_from_X` always sample from categories and does not
    depend from the percentiles.
    ÚpandasrW   TÚcat_feature)ÚAÚBÚCrs   rt   ÚDÚEr`   r4   r(   r   )r4   N)ÚpytestÚimportorskipÚ	DataFramer   rB   )r3   Úpdrh   ri   r=   rj   rO   s          rT   Ú!test_grid_from_X_with_categoricalr|   ¬   s�   € ô 
×	Ñ	˜XÓ	&€BØ€KØ�V€NØ
�‰�mÒ%HÐIÓJ€AÜØ	ˆ;˜¸ô�J€Dˆ$ð �:‰:˜!˜QŸW™W Q™Z˜Ò(Ð(Ð(Ø�‰7�=‰=˜DÒ Ð Ñ rn   c                 óÈ  — t        j                  d«      }d}ddg}|j                  g d¢g d¢dœ«      }|j                  «       }t	        |||| ¬«      \  }}| d	k(  rC|j
                  d
k(  sJ ‚|d   j
                  d   |d   k(  sJ ‚|d   j
                  d   | k(  sJ ‚y|j
                  dk(  sJ ‚|d   j
                  d   |d   k(  sJ ‚|d   j
                  d   |d   k(  sJ ‚y)rp   rq   rW   TF)
rs   rt   ru   rs   rt   rv   rw   rs   rt   rv   )
r(   r(   r(   r)   r4   é   r~   r~   r~   é   )ÚcatÚnumr`   r-   )r\   r)   r   r�   r(   )é   r)   r€   N)rx   ry   rz   Únuniquer   rB   )r3   r{   rh   ri   r=   rƒ   rj   rO   s           rT   Ú#test_grid_from_X_heterogeneous_typer„   Â   s  € ô
 
×	Ñ	˜XÓ	&€BØ€KØ˜E�]€NØ
�‰âEÚ1ñ	
ó	€Að �i‰i‹k€GäØ	ˆ;˜¸ô�J€Dˆ$ð ˜!ÒØ�z‰z˜WÒ$Ð$Ð$Ø�A‰w�}‰}˜QÑ 7¨5¡>Ò1Ð1Ð1Ø�A‰w�}‰}˜QÑ ?Ò2Ð2Ñ2à�z‰z˜WÒ$Ð$Ð$Ø�A‰w�}‰}˜QÑ 7¨5¡>Ò1Ð1Ð1Ø�A‰w�}‰}˜QÑ 7¨5¡>Ò1Ð1Ñ1rn   z%grid_resolution, percentiles, err_msg))r)   )r   g-Cëâ6?zpercentiles are too close)rZ   )r(   r)   r-   r[   ú.'percentiles' must be a sequence of 2 elements)rZ   rb   r…   )rZ   )r'   rY   ú('percentiles' values must be in \[0, 1\])rZ   )rX   r)   r†   )rZ   )gÍÌÌÌÌÌì?çš™™™™™¹?z+percentiles\[0\] must be strictly less than)r(   rW   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 «       y # 1 sw Y   y xY w)Nr(   r)   r-   r[   F©Úmatch)rF   rG   rx   ÚraisesÚ
ValueErrorr   )r3   rh   Úerr_msgr=   ri   s        rT   Útest_grid_from_X_errorrŽ   ß   s[   € ô 	�
‰
�Q˜�F˜Q ˜FÐ#Ó$€AØ�W€NÜ	�‰”z¨Ô	1ñ FÜ�Q˜ ^°_ÔE÷F÷ Fñ Fús   ºAÁAÚtarget_featurer4   zest, method©r,   Ú	recursionc                 ó<  — t        ddd¬«      \  }}||j                  «       z
  }t        | «      j                  ||«      } t	        j
                  |gt        j                  ¬«      }t	        j
                  dgdgg«      }|dk(  rt        | |||d¬	«      \  }}nt        | ||«      }g }	d
D ]I  }
|j                  «       }|
|d d …|f<   |	j                  | j                  |«      j                  «       «       ŒK |d   }|dk(  rdnd}t	        j                  ||	|¬«      sJ ‚y )Nr   r4   )r,   Ú
n_featuresÚn_informative©Údtypeç      à?é{   r2   r1   )Úresponse_method)r—   r˜   r‘   r‡   gü©ñÒMbP?)Úrtol)r   Úmeanr   rC   rF   ÚarrayÚintpr   r   ÚcopyÚappendÚpredictÚallclose)rJ   r>   r�   r=   rK   r6   rj   rN   ÚpredictionsÚmean_predictionsÚvalÚX_rš   s                rT   Útest_partial_dependence_helpersr¦   ò   s  € ô0 ¨°aÀqÔI�D€A€qð 	
ˆA�F‰F‹H‰€Aô �‹*�.‰.˜˜AÓ
€Cô �x‰x˜Ð(´·±Ô8€HÜ�8‰8�c�U˜S˜E�NÓ#€Dà�ÒÜ4Ø��x °Fô
Ñˆ‰[ô ,¨C°°xÓ@ˆàÐØò 8ˆØ�V‰V‹XˆØ #ˆŠ1ˆnÐÑØ×Ñ §¡¨B£× 4Ñ 4Ó 6Õ7ð8ð
 ˆa‰&€Cð ˜[Ò(‰4¨d€DÜ�;‰;�sÐ,°4Õ8Ð8Ñ8rn   Úseedc                 óV  — t         j                  j                  | «      }d}d}|j                  ||«      }|j                  |«      dz  }||j	                  «       z
  }d}d}t        dd d||¬«      }t        |«      j                  t        j                  t         j                  «      j                  «      }	t        ddd||	¬	«      }
t        ||	¬
«      }|j                  ||«       |
j                  ||«       |j                  ||«       	 t        |j                  |
d   j                  «       t        |j                  |d   j                  «       |j                  d«      j%                  dd«      }t'        |«      D ]�  }t        j(                  |gt         j*                  ¬«      }t-        |||«      }t-        |
||«      }t-        |||«      }t         j.                  j1                  ||«       t         j.                  j1                  ||«       Œ‘ y # t         $ r t"        sJ d«       ‚Y y w xY w)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•   )rF   rd   re   Úrandnr›   r   r%   ÚrandintÚiinfoÚint32Úmaxr   r    rC   r!   Útree_ÚAssertionErrorr$   ÚreshaperD   rœ   r�   r   Útestingr"   )r§   rk   r+   r“   r=   rK   r¬   Ú	tree_seedÚforestÚequiv_random_stateÚgbdtÚtreerj   Úfr6   Ú
pdp_forestÚpdp_gbdtÚpdp_trees                     rT   Ú/test_recursion_decision_tree_vs_forest_and_gbdtrÂ   +  sç  € ô �)‰)×
Ñ
 Ó
%€Cð €IØ€JØ�	‰	�)˜ZÓ(€AØ�	‰	�)Ó˜rÑ!€Að
 	
ˆA�F‰F‹H‰€Að €Ià€IÜ"ØØØØØô€Fô ,¨IÓ6×>Ñ>¼r¿x¹xÌÏÉÓ?Q×?UÑ?UÓVÐÜ$ØØØ!ØØ'ô€Dô !¨9ÐCUÔV€Dà
‡J�Jˆq�!ÔØ‡H�HˆQ�„NØ‡H�HˆQ�„NðÜ˜$Ÿ*™* d¨4¡j×&6Ñ&6Ô7Ü˜$Ÿ*™* f¨Q¡i§o¡oÔ6ð �9‰9�R‹=× Ñ   QÓ'€DÜ�:Óò 9ˆÜ—8‘8˜Q˜C¤r§w¡wÔ/ˆä2°6¸4ÀÓJˆ
Ü0°°t¸XÓFˆÜ0°°t¸XÓFˆä
�
‰
×"Ñ" 8¨XÔ6Ü
�
‰
×"Ñ" :¨xÕ8ñ9øô ò õ ÐEÐEÓEˆyÙðús   Ä
AH ÈH(È'H(rJ   )r   r(   r)   r-   r[   r4   c                 ó   — t        ddd¬«      \  }}t        j                  |«      dk(  sJ ‚t        | «      j	                  ||«      } t        | ||gddd¬«      }t        | ||gdd	d¬«      }t        |d   |d   d
¬«       y )Nr)   r(   ©r.   r/   r,   r—   Údecision_functionr‘   r8   )r™   r>   r7   r2   gH¯¼šò×z>)Úatol)r
   rF   r›   r   rC   r   r"   )rJ   r�   r=   rK   Úpreds_1Úpreds_2s         rT   Ú test_recursion_decision_functionrÉ   r  s™   € ô ¨ÀÐQRÔS�D€A€qÜ�7‰7�1‹:˜ÒÐÐä
�‹*�.‰.˜˜AÓ
€Cä ØØ	Ø	ÐØ+ØØô€Gô !ØØ	Ø	ÐØ+ØØô€Gô �G˜IÑ&¨°	Ñ(:ÀÖFrn   )r,   Úmin_samples_leafÚmax_leaf_nodesÚmax_iterÚpower)r(   r)   c                 óÐ  — t         j                  j                  d«      }d}d}|j                  |df¬«      }|d d …|f   |z  }t	        | «      j                  ||«      } t        | |g|dd¬«      }|d	   d   j                  d
d«      }|d   d   }	t        |¬«      j                  |«      }t        «       j                  ||	«      }
t        |	|
j                  |«      «      }|dkD  sJ ‚y )Nr   éÈ   r)   r4   r^   r©   r8   )r6   r=   r3   r7   r?   r'   r(   )Údegreeç®Gáz®ï?)rF   rd   re   rf   r   rC   r   r·   r   Úfit_transformr   r   r    )rJ   rÍ   rk   r+   Útarget_variabler=   rK   rN   Únew_XÚnew_yÚlrÚr2s               rT   Ú#test_partial_dependence_easy_targetrØ   ˜  sí   € ô( �)‰)×
Ñ
 Ó
"€CØ€IØ€OØ�
‰
˜ A˜ˆ
Ó'€AØ	Š!ˆ_Ð
Ñ Ñ&€Aä
�‹*�.‰.˜˜AÓ
€Cä
Ø�Ð'¨1¸dÈô€Cð �Ñ˜qÑ!×)Ñ)¨"¨aÓ0€EØ�	‰N˜1Ñ€Eä eÔ,×:Ñ:¸5ÓA€Eä	Ó	×	Ñ	  uÓ	-€BÜ	�%˜Ÿ™ EÓ*Ó	+€Bà�Š9Ð‰9rn   rH   c                 ó  — t        ddd¬«      \  }}t        j                  ||g«      j                  } | «       }|j	                  ||«       t        j                  t        d¬«      5  t        ||dg«       d d d «       y # 1 sw Y   y xY w)Nr-   r(   r   rÄ   z3Multiclass-multioutput estimators are not supportedr‰   )	r
   rF   rœ   rc   rC   rx   r‹   rŒ   r   )rH   r=   rK   rJ   s       rT   Útest_multiclass_multioutputrÚ   Ã  sz   € ô ¨ÀÐQRÔS�D€A€qÜ
�‰�!�Q�Ó×Ñ€Aá
‹+€CØ‡G�GˆAˆq„Mä	�‰ÜÐOô
ñ (ô 	˜3  A 3Ô'÷(÷ (ñ (ús   Á'A?Á?Bc                   ó   — e Zd Zd„ Zy)Ú NoPredictProbaNoDecisionFunctionc                 ó   — ddg| _         | S )Nr   r(   )Úclasses_)Úselfr=   rK   s      rT   rC   z$NoPredictProbaNoDecisionFunction.fitß  s   € à˜A˜ˆŒØˆrn   N)Ú__name__Ú
__module__Ú__qualname__rC   © rn   rT   rÜ   rÜ   Þ  s   „ órn   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        | «      j                  ||«      } t        j                  t
        |¬«      5  t        | |fi |¤Ž d d d «       y # 1 sw Y   y xY w)Nr   r�   r‰   ©r
   r   rC   rx   r‹   rŒ   r   )Ú	estimatorÚparamsr�   r=   rK   s        rT   Útest_partial_dependence_errorrê   å  s\   € ôZ ¨AÔ.�D€A€qÜ�iÓ ×$Ñ$ Q¨Ó*€Iä	�‰”z¨Ô	1ñ 3Ü˜9 aÑ2¨6Ò2÷3÷ 3ñ 3ús   ÁAÁA&rè   i'  c                 óØ   — t        d¬«      \  }}t        | «      j                  ||«      } d}t        j                  t
        |¬«      5  t        | ||g«       d d d «       y # 1 sw Y   y xY w)Nr   r�   zall features must be inr‰   rç   )rè   r6   r=   rK   r�   s        rT   Ú/test_partial_dependence_unknown_feature_indicesrì     s_   € ô
 ¨AÔ.�D€A€qÜ�iÓ ×$Ñ$ Q¨Ó*€Ià'€GÜ	�‰”z¨Ô	1ñ 5Ü˜9 a¨(¨Ô4÷5÷ 5ñ 5ús   ÁA Á A)c                 ó(  — t        j                  d«      }t        d¬«      \  }}|j                  |«      }t	        | «      j                  ||«      } dg}d}t        j                  t        |¬«      5  t        | ||«       d d d «       y # 1 sw Y   y xY w)Nrq   r   r�   rd   z/A given column is not a column of the dataframer‰   )	rx   ry   r
   rz   r   rC   r‹   rŒ   r   )rè   r{   r=   rK   Údfr6   r�   s          rT   Ú.test_partial_dependence_unknown_feature_stringrï   &  s�   € ô 
×	Ñ	˜XÓ	&€BÜ¨AÔ.�D€A€qØ	�‰�a‹€BÜ�iÓ ×$Ñ$ R¨Ó+€Iàˆz€HØ?€GÜ	�‰”z¨Ô	1ñ 4Ü˜9 b¨(Ô3÷4÷ 4ñ 4ús   Á1BÂBc                 óŠ   — t        d¬«      \  }}t        | «      j                  ||«      } t        | t	        |«      dgd¬«       y )Nr   r�   r8   )r7   )r
   r   rC   r   Úlist)rè   r=   rK   s      rT   Útest_partial_dependence_X_listrò   5  s=   € ô
 ¨AÔ.�D€A€qÜ�iÓ ×$Ñ$ Q¨Ó*€IÜ�y¤$ q£'¨A¨3°YÖ?rn   c                  óv  — t        t        «       d¬«      } | j                  t        t        «       t        j                  t        d¬«      5  t        | t        dgdd¬«       d d d «       t        j                  t        d¬«      5  t        | t        dgdd¬«       d d d «       y # 1 sw Y   ŒCxY w# 1 sw Y   y xY w)Nr   )Úinitr,   z9Using recursion method with a non-constant init predictorr‰   r‘   r8   )r>   r7   )	r   r   rC   r=   rK   rx   ÚwarnsÚUserWarningr   )Úgbcs    rT   Ú(test_warning_recursion_non_constant_initrø   ?  s¦   € ô %¬/Ó*;È!Ô
L€CØ‡G�GŒAŒq„Mä	�‰ÜÐVô
ñ Lô 	˜3¤ A 3¨{ÀÕK÷Lô
 
�‰ÜÐVô
ñ Lô 	˜3¤ A 3¨{ÀÕK÷Lð L÷Lð Lú÷
Lð Lús   ÁB#ÂB/Â#B,Â/B8c                  óÖ  — d} t         j                  j                  d«      }|j                  d| t        ¬«      }|j                  | «      }|j                  «       }||     || <   t         j                  ||f   }t        j                  | «      }d||<   t        dd¬«      }|j                  |||¬	«       t        ||dgd
¬«      }t        j                  |d
   |d   «      d   dkD  sJ ‚y )Nr©   i@â r)   )r_   r–   g     @�@r5   r(   )r<   r,   ©Úsample_weightr8   )r6   r7   r?   )r   r(   rÑ   )rF   rd   re   r±   ÚboolÚrandrž   Úc_Úonesr   rC   r   Úcorrcoef)	ÚNrk   ÚmaskÚxrK   r=   rû   ÚclfrN   s	            rT   Ú9test_partial_dependence_sample_weight_of_fitted_estimatorr  Q  sÛ   € ð
 	€AÜ
�)‰)×
Ñ
 Ó
'€CØ�;‰;�q˜q¬ˆ;Ó-€Dà�‰�‹€Aà	�‰‹€AØ�4�%‘ˆy€A€t€e�HÜ
�‰ˆd�Aˆg‰€Aä—G‘G˜A“J€MØ €M�$Ñä
#°À!Ô
D€CØ‡G�GˆAˆq €GÔ.ä
˜S !¨q¨c¸	Ô
B€Cä�;‰;�s˜9‘~ s¨=Ñ'9Ó:¸4Ñ@À4ÒGÐGÑGrn   c            	      ó  — t        d¬«      } | j                  t        t        t	        j
                  t        t        «      «      ¬«       t        j                  t        d¬«      5  t        | t        dg¬«       d d d «       y # 1 sw Y   y xY w)Nr(   r�   rú   z#does not support partial dependencer‰   ©r6   )r   rC   r=   rK   rF   rÿ   rE   rx   r‹   ÚNotImplementedErrorr   )r  s    rT   Útest_hist_gbdt_sw_not_supportedr	  k  sa   € ä
'°QÔ
7€CØ‡G�GŒAŒq¤§¡¬¬A«£€GÔ0ä	�‰ÜÐ#Hô
ñ 1ô 	˜3¤¨Q¨CÕ0÷1÷ 1ñ 1ús   Á$BÂB
c                  ó4  — t        «       } t        «       }t        d¬«      }t        ||«      }|j	                  |j                  | j                  «      | j                  «       |j	                  | j                  | j                  «       d}t        || j                  |gdd¬«      }t        ||j                  | j                  «      |gdd¬«      }t        |d   |d   «       t        |d   d   |d   d   |j                  |   z  |j                  |   z   «       y )Né*   r�   r   r5   r8   ©r6   r3   r7   r?   )r	   r   r   r   rC   rÒ   rI   Útargetr   Ú	transformr"   Úscale_Úmean_)ÚirisÚscalerr  Úpiper6   Úpdp_pipeÚpdp_clfs          rT   Ú test_partial_dependence_pipeliner  v  sþ   € ä‹;€DäÓ€FÜ
 rÔ
*€CÜ˜ Ó%€Dà‡G�GˆF× Ñ  §¡Ó+¨T¯[©[Ô9Ø‡H�HˆT�Y‰Y˜Ÿ™Ô$à€HÜ!Øˆd�i‰i 8 *¸bÀyô€Hô !ØØ×Ñ˜Ÿ™Ó#Ø�ØØô€Gô �H˜YÑ'¨°Ñ);Ô<ÜØ�Ñ Ñ"Ø�Ñ˜qÑ! F§M¡M°(Ñ$;Ñ;¸f¿l¹lÈ8Ñ>TÑTõrn   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                 óÒ  — t        j                  d«      }|j                  t        t        j
                  «      t        j                  ¬«      }t        |t        | «      «      }|j                  |t        j                  «       t        |||dd¬«      }|�t        |«      j                  |«      }ddg}n|}ddg}t        | «      j                  |t        j                  «      }	t        |	||d	dd¬
«      }
t        |d   |
d   «       |�H|j                  d   }t        |d   d   |
d   d   |j                  d   z  |j                   d   z   «       y t        |d   d   |
d   d   «       y )Nrq   ©Úcolumnsr5   r8   r  r   r(   r)   r2   )r6   r>   r3   r7   Ústandardscalerr?   )rx   ry   rz   r   r  rI   Úfeature_namesr   r   rC   r  r   rÒ   r"   Únamed_transformers_r  r  )rè   r  r6   r{   rî   r  r  ÚX_procÚfeatures_clfr  r  r  s               rT   Ú!test_partial_dependence_dataframer'  “  sb  € ô> 
×	Ñ	˜XÓ	&€BØ	�‰”eœDŸI™IÓ&´×0BÑ0BˆÓ	C€Bä˜¤u¨YÓ'7Ó8€DØ‡H�HˆR”—‘ÔÜ!Øˆb˜8°R¸iô€Hð ÐÜ�|Ó$×2Ñ2°2Ó6ˆØ˜1�v‰àˆØ˜1�vˆä
�	Ó
×
Ñ
˜v¤t§{¡{Ó
3€CÜ ØØØØØØô€Gô �H˜YÑ'¨°Ñ);Ô<ØÐØ×1Ñ1Ð2BÑCˆÜØ�]Ñ# AÑ&Ø�MÑ" 1Ñ%¨¯©°aÑ(8Ñ8¸6¿<¹<È¹?ÑJõ	
ô
 	˜ Ñ/°Ñ2°G¸MÑ4JÈ1Ñ4MÕNrn   zfeatures, expected_pd_shape)r   ©r-   r5   r(  )r-   r5   r5   )TFTF)z
scalar-intz
scalar-strzlist-intzlist-strr  c           	      ój  — t        j                  d«      }|j                  t        j                  t        j
                  ¬«      }t        t        «       dD �cg c]  }t        j
                  |   ‘Œ c}ft        «       dD �cg c]  }t        j
                  |   ‘Œ c}f«      }t        |t        dd¬«      «      }|j                  |t        j                  «       t        ||| dd	¬
«      }|d	   j                  |k(  sJ ‚t        |d   «      t        |d	   j                  «      dz
  k(  sJ ‚y c c}w c c}w )Nrq   r   r  r  r©   r   r  r5   r8   r  r?   r(   )rx   ry   rz   r  rI   r#  r   r   r   r   r   rC   r  r   rB   rE   )r6   Úexpected_pd_shaper{   rî   Úir  r  r  s           rT   Ú$test_partial_dependence_feature_typer,  Ú  s  € ô 
×	Ñ	˜XÓ	&€BØ	�‰”d—i‘i¬×);Ñ);ˆÓ	<€Bä*Ü	Ó	¸6ÖB°aœD×.Ñ.¨qÓ1ÒBÐCÜ	‹¸Ö@°Aœ$×,Ñ,¨QÓ/Ò@ÐAó€Lô ØÔ(°$ÀQÔGó€Dð 	‡H�HˆR”—‘ÔÜ!Øˆb˜8°R¸iô€Hð �IÑ×$Ñ$Ð(9Ò9Ð9Ð9Üˆx˜Ñ&Ó'¬3¨x¸	Ñ/B×/HÑ/HÓ+IÈAÑ+MÒMÐMÑMùò CùÚ@s   ÁD+
ÂD0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 «       t        j                  t        d¬«      5  t        | |ddgd¬«       d d d «       y # 1 sw Y   Œ?xY w# 1 sw Y   y xY w)	Nr   r)   r(   r-   zis not fitted yetr‰   r5   )r6   r3   )
r  rI   r   r   r   r   rx   r‹   r   r   )rè   r=   r  r  s       rT   Ú test_partial_dependence_unfittedr.  ù  s»   € ô 	�	‰	€AÜ*Ü	Ó	˜A˜q˜6Ð"¤\£^°a¸°VÐ$<ó€Lô ˜ yÓ1€DÜ	�‰”~Ð-@Ô	Añ IÜ˜4 ¨a°¨VÀRÕH÷Iä	�‰”~Ð-@Ô	Añ NÜ˜9 a°1°a°&È"ÕM÷Nð N÷Ið Iú÷Nð Nús   ÁB,ÂB8Â,B5Â8CzEstimator, datac                 óÜ   —  | «       }|\  \  }}}|j                  ||«       t        ||ddgd¬«      }t        ||ddgd¬«      }t        j                  |d   d¬«      }t	        ||d   «       y )Nr(   r)   r8   ©r=   r6   r7   r9   )Úaxis)rC   r   rF   r›   r"   )	rH   rI   rJ   r=   rK   r0   Úpdp_avgÚpdp_indÚavg_inds	            rT   Ú+test_kind_average_and_average_of_individualr5    sr   € ñ ‹+€CØÑ�F€QˆˆIØ‡G�GˆAˆq„Mä  ¨°Q¸°FÀÔK€GÜ  ¨°Q¸°FÀÔN€GÜ�g‰g�g˜lÑ+°!Ô4€GÜ�G˜W YÑ/Õ0rn   c                 ó  —  | «       }|\  \  }}}t        j                  |j                  d   «      }|j                  ||«       t	        ||ddgd¬«      }t	        ||ddgd|¬«      }t        |d   |d   «       t        |d   |d   «       y)	zDCheck that `sample_weight` does not have any effect on reported ICE.r   r(   r)   r9   r0  )r=   r6   r7   rû   r?   N)rF   ÚarangerB   rC   r   r"   )	rH   rI   rJ   r=   rK   r0   rû   Úpdp_nswÚpdp_sws	            rT   Ú=test_partial_dependence_kind_individual_ignores_sample_weightr:     s“   € ñ ‹+€CØÑ�F€QˆˆIÜ—I‘I˜aŸg™g a™jÓ)€MØ‡G�GˆAˆq„Mä  ¨°Q¸°FÀÔN€GÜØˆq˜A˜q˜6¨ÀMô€Fô �G˜LÑ)¨6°,Ñ+?Ô@Ü�G˜MÑ*¨F°=Ñ,AÕBrn   Únon_null_weight_idx)r   r(   r'   c                 ó   — t         j                  t         j                  }}t        t	        «       ddgft        «       ddgf«      }t        |t        | «      «      j                  ||«      }t        j                  |«      }d||<   t        ||ddgd|d¬«      }t        ||ddgdd¬	«      }t        |«      rdnt        t        j                  |«      «      }	t        |	«      D ]  }
t!        |d   |
   |   |d   |
   «       Œ y
)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  rI   r  r   r   r   r   r   rC   rF   Ú
zeros_liker   r   rE   ÚuniquerD   r"   )rè   r;  r=   rK   r  r  rû   r9  r3  Ú
output_dimr+  s              rT   Ú+test_partial_dependence_non_null_weight_idxr@  6  s  € ô  �9‰9”d—k‘k€q€AÜ*Ü	Ó	˜A˜q˜6Ð"¤\£^°a¸°VÐ$<ó€Lô ˜¤u¨YÓ'7Ó8×<Ñ<¸QÀÓB€Dä—M‘M !Ó$€MØ)*€MÐ%Ñ&ÜØØ	Ø	
ˆAˆØØ#Øô€Fô !  q¨1¨a¨&°|ÐUWÔX€GÜ" 4Ô(‘¬c´"·)±)¸A³,Ó.?€JÜ�:Óò 
ˆÜØ�LÑ! !Ñ$Ð%8Ñ9Ø�9Ñ˜aÑ õ	
ñ
rn   c                 ó€  —  | «       }|\  \  }}}|j                  ||«       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   «       y)zFCheck that `sample_weight=None` is equivalent to having equal weights.Nr(   r)   r8   r0  rû   )rC   r   rF   rÿ   rE   r"   )rH   rI   rJ   r=   rK   r0   rû   ré   Úpdp_sw_noneÚpdp_sw_unitÚpdp_sw_doublings              rT   Ú7test_partial_dependence_equivalence_equal_sample_weightrE  _  sÅ   € ñ ‹+€CØÑ�F€QˆˆIØ‡G�GˆAˆq„Mà ¨¸¸1°vÀyÑ"Q�6€MÜ$ SÑP¨FÑPÀ-ÒP€KÜ—G‘GœC ›F“O€MÜ$ SÑP¨FÑPÀ-ÒP€KÜ�K 	Ñ*¨K¸	Ñ,BÔCØœŸ™¤ A£›Ñ'€MÜ(¨ÑT°ÑTÀmÒT€OÜ�K 	Ñ*¨O¸IÑ,FÕGrn   c            	      ó  — t        «       } t        \  \  }}}t        j                  |«      }| j	                  ||«       t        j                  t        d¬«      5  t        | |dg|dd d¬«       ddd«       y# 1 sw Y   yxY w)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_datarF   Ú	ones_likerC   rx   r‹   rŒ   r   ©rJ   r=   rK   r0   rû   s        rT   Ú0test_partial_dependence_sample_weight_size_errorrJ  w  su   € ô Ó
€CÜ2Ñ�F€QˆˆIÜ—L‘L “O€MØ‡G�GˆAˆq„Mä	�‰”zÐ)AÔ	Bñ 
ÜØ�˜a˜S°¸a¸bÐ0AÐSUõ	
÷
÷ 
ñ 
ús   ÁA7Á7B c                  ó  — t        «       } t        \  \  }}}t        j                  |«      }| j	                  |||¬«       t        j                  t        d¬«      5  t        | |dgd|¬«       ddd«       y# 1 sw Y   yxY w)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_datarF   rH  rC   rx   r‹   rŒ   r   rI  s        rT   Ú4test_partial_dependence_sample_weight_with_recursionrM  †  sr   € ô  Ó
!€CÜ'Ñ�F€QˆˆIÜ—L‘L “O€MØ‡G�GˆAˆq €GÔ.ä	�‰”zÐ)VÔ	Wñ 
ÜØ�˜a˜S¨ÀMõ	
÷
÷ 
ñ 
ús   ÁA6Á6A?c                  óŒ  — t        j                  dddt         j                  gt        ¬«      j	                  dd«      } t        j                  g d¢«      }dd	lm} t         |d¬
«      t        «       «      j                  | |«      }t        j                  t        d¬«      5  t        || dg¬«       ddd«       y# 1 sw Y   yxY w)znCheck that we raise a proper error when a column has mixed types and
    the sorting of `np.unique` will fail.rs   rt   ru   r•   r'   r(   )r   r(   r   r(   r   )ÚOrdinalEncoder)Úencoded_missing_valuez'The column #0 contains mixed data typesr‰   r  N)rF   rœ   ÚnanÚobjectr·   Úsklearn.preprocessingrO  r   r   rC   rx   r‹   rŒ   r   )r=   rK   rO  r  s       rT   Útest_mixed_type_categoricalrT  •  s›   € ô 	�‰�#�s˜C¤§¡Ð(´Ô7×?Ñ?ÀÀAÓF€AÜ
�‰’Ó€Aå4ä
Ù¨RÔ0ÜÓó÷ 
�cˆ!ˆQƒið ô 
�‰”zÐ)RÔ	Sñ 1Ü˜3 ¨Q¨CÕ0÷1÷ 1ñ 1ús   Â!B:Â:C)kÚ__doc__ÚnumpyrF   rx   Ú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   rS  r   r   r   r   Úsklearn.treer    Úsklearn.tree.tests.test_treer!   Úsklearn.utils._testingr"   r#   Úsklearn.utils.fixesr$   Úsklearn.utils.validationr%   r=   rK   rG  Úmulticlass_classification_datarL  Úmultioutput_regression_datar  ÚmarkÚparametrizerU   rm   r|   r„   rŽ   rD   r¦   rÂ   rÉ   rØ   r½   ÚDecisionTreeClassifierÚExtraTreeClassifierÚensembleÚExtraTreesClassifierÚ	neighborsÚKNeighborsClassifierÚRadiusNeighborsClassifierÚRandomForestClassifierrÚ   rÜ   rê   rì   rï   rò   rø   r  r	  r  r#  r'  r,  r.  r5  r:  r@  rE  rJ  rM  rT  )r+  s   0rT   ú<module>ru     sÍ	  ðñó Û ã ß LÓ LÝ "Ý 3ß LÑ LÝ )÷õ õ .Ý 1÷ñ ÷
 VÑ UÝ $Ý *÷ó õ /Ý :ß FÝ )Ý 7ð 	ˆ"€X��Bˆx˜"˜b˜ A q 6¨A¨q¨6°A°q°6Ð:€Ú€ñ 2¸BÈQÔOÐQRÐSÐ áØ ¸Èôð ð	"Ð ñ #¨R¸aÔ@À!ÐD€á˜b¨A¸AÔ>ØðÐ ñ ƒ{€ð ‡�×ÑØà	# VÐ-GÐHØ	# VÐ-KÐLØ	# WÐ.HÐIØ	# WÐ.LÐMØ	" F¨OÐ<Ø	" G¨_Ð=Ø	 ¨Ð9Ø	˜7 OÐ4Ø	˜7Ð$?Ð@Ø	˜WÐ&@ÐAØ	˜WÐ&DÐEØ	˜Ð"=Ð>ðóð" ‡�×ÑÐ*¨GÓ4Ø‡�×Ñ˜ q c¨A¨q¨6 ]Ó3Ø‡�×Ñ˜Ð!BÓCñ,9ó Dó 4ó 5ó#ð(,9ò^$/ðN ‡�×ÑØà	Øðóñ!óð!ð ‡�×ÑÐ*¨Q°¨HÓ5ñ2ó 6ð2ð8 ‡�×ÑØ+òóñFóðFð ‡�×ÑÐ)©5°«8Ó4Ø‡�×ÑØá	Ó	˜WÐ%Ù	"°Ô	2°GÐ<Ù	"°Ô	2°KÐ@Ù	&°AÔ	6¸Ð@Ù	&°AÔ	6¸ÐDðó	ñ+9ó	ó 5ð+9ð\ ‡�×Ñ˜¡ q£Ó*ñC9ó +ðC9ðL ‡�×ÑØ	á"°Ô2Ù&°AÔ6ðóð ‡�×ÑÐ)Ð+=Ó>ñGó ?óðGð< ‡�×ÑØ	áÓÙ!¨qÔ1Ù%Ø¨Q¸tÈaô	
ñ 	¨1Ô-ðó
ð ‡�×Ñ˜ &Ó)ñó *ó
ðð> ‡�×ÑØà�‰×+Ñ+Ø�‰×(Ñ(Ø×Ñ×-Ñ-Ø×Ñ×.Ñ.Ø×Ñ×3Ñ3Ø×Ñ×/Ñ/ðó
ñ(ó
ð(ô  ¸ô ð ‡�×ÑØ ñ  ¨&Ô1Ø˜!˜ÐØBð	
ñ ÓØ˜°ÑAØEð	
ñ '°AÔ6à˜CØ#2Ø%ñð
 Rð	
ñ '°AÔ6Ø˜°ÈFÑSØQð	
ñ ÓØ˜¨¸\ÑJØQð	
ñ ÓØ˜¨¸VÑDØQð	
ñ ÓØ˜¨Ñ4ØKð	
ðG(ó+ñX3óY+ðX3ð ‡�×ÑØÑ"Ó$Ñ&@ÈaÔ&PÐQóð ‡�×Ñ˜ b¨% [Ó1ñ5ó 2óð5ð ‡�×ÑØÑ"Ó$Ñ&@ÈaÔ&PÐQóñ	4óð	4ð ‡�×ÑØÑ"Ó$Ñ&@ÈaÔ&PÐQóñ@óð@òLò$Hò41òð: ‡�×ÑØá D°qÔ9Ù"°ÀÔBðð 
Ð1Ð2ð ó ð ‡�×ÑØàÙÙÓ¸vÖF¸! × 2Ñ 2°1Ó 5ÒFÐGÙ‹^¸VÖD¸˜d×0Ñ0°Ó3ÒDÐEó	
ñ 	 ÙÓ¸vÖF¸! × 2Ñ 2°1Ó 5ÒFÐGØ#ô	
ð
ò 	Ið ó ð ‡�×ÑØØˆ€V¨VÖ4¨ˆd× Ñ  Ó#Ò4Ð5Ø	Ð.Ð/ð ó ñ
(Oóóóð8(OðV ‡�×ÑØ!àØ	×	Ñ	˜AÑ	 Ð(Ø
ˆQˆ�ÐØ)/Ö	0 Aˆ$×
Ñ
˜QÓ
Ò	0°+Ð>Ú	# [Ð1ðò 	Eð ó 
ñNó
ðNð( ‡�×ÑØáÓÙÓÙ!Ó#Ù"Ó$ð	óñ	Nóð	Nð ‡�×ÑØà	Ð6Ð7Ø	Ð7Ð8ðóñ1óð1ð ‡�×ÑØà	Ð6Ð7Ø	Ð7Ð8ðóñCóðCð ‡�×ÑØáÓÙÓÙÓÙ"Ó$ð	óð ‡�×ÑÐ.²
Ó;ñ
ó <óð
ð> ‡�×ÑØà	Ð6Ð7Ø	Ð7Ð8ðóñHóðHò"
ò
ó1ùòk  GùÚDùò  Gùò 5ùòh 
1s   Ö(_×_$×4_)Ø9_.Ú_3