ó
    †ñ:iÑ-  ã                  ó2  • % S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SKJ	r	J
r
  S SKrS SKrS SKrS SKr\	(       a  SSKJr  0 qS\S'   SS	 jrSS
 jrSS jrS rS rSS jr\R8                  4S jrSSS jjrSS jrS r S r! " S S5      r"\S 5       r#g)é    )ÚannotationsN)Úcontextmanager)ÚTYPE_CHECKINGÚAnyé   )Ú_ArrayTz dict[str, tuple[str, Exception]]Úimport_errorsc                óH   • U [         ;   a  [         U    u  p[        U5        Ueg ©N)r	   Úprint©Úpackage_nameÚmsgÚes      ÚV/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/shap/utils/_general.pyÚassert_importr      s'   € à”}Ó$Ü˜|Ñ,‰ˆÜˆcŒ
Øˆð %ó    c                ó   • X4[         U '   g r   )r	   r   s      r   Úrecord_import_errorr      s   € à#& („M�,Òr   c                ó¬   • [         R                  " U 5      n[        U 5       H.  nSU [        R                  R                  U S-
  U5      -  -  X'   M0     U$ )Nr   )ÚnpÚzerosÚrangeÚscipyÚspecialÚcomb)ÚnÚoutÚis      r   Úshapley_coefficientsr    "   sH   € Ü
�(Š(�1‹+€CÜ�1ŽXˆØ�aœ%Ÿ-™-×,Ñ,¨Q°©U°AÓ6Ñ6Ñ7ˆ‹ñ à€Jr   c                ó   • [        U [        5      (       a¸  [        R                  " [        R                  " U5      U :H  5      S   n[        U5      S:X  at  U R                  S5      (       aI  [        R                  " [        R                  " U5      R                  S5      * 5      [        U SS 5         $ U S:X  a  g[        SU -   5      eUS   $ U $ )Nr   zrank(é   éÿÿÿÿzsum()zCould not find feature named: )Ú
isinstanceÚstrr   ÚwhereÚarrayÚlenÚ
startswithÚargsortÚabsÚmeanÚintÚ
ValueError)ÚindÚshap_valuesÚinput_namesÚnzindss       r   Úconvert_namer3   )   s¬   € Ü�#”s×ÑÜ—’œ"Ÿ(š( ;Ó/°3Ñ6Ó7¸Ñ:ˆÜˆv‹;˜!Óà�~‰~˜g×&Ñ&Ü—z’z¤2§6¢6¨+Ó#6×#;Ñ#;¸AÓ#>Ð">Ó?ÄÀCÈÈ"ÀIÃÑOÐOð ˜“Øä Ð!AÀCÑ!GÓHÐHà˜!‘9Ðàˆ
r   c                ó¶  • [         R                  " UR                  R                  U R                  -
  R                  R	                  S5      S:  5      nUR
                  nUR                  S   S:”  aH  [         R                  " UR                  S   5      n[         R                  R                  U5        USS nO#[         R                  " UR                  S   5      nU R
                  U   n[         R                  " U5      nU R                  U   nX‡   n[        [        [        [        U5      S-  5      S5      S5      n	/ n
[        UR                  S   5       GHÐ  n[!        X5U4   U   ["        S9nUnS	nX²;   d¹  [         R$                  " [         R&                  " U5      5      S:  d‹  [        S[        U5      U	5       Hq  n[         R                  " XßXù-    5      S:”  d  M#  [         R                  " X�Xù-    5      S:”  d  MC  U['        [         R(                  " X�Xù-    XßXù-    5      S
   5      -  nMs     Un[         R*                  " U5      nS	nX²;   d¹  [         R$                  " [         R&                  " U5      5      S:  d‹  [        S[        U5      U	5       Hq  n[         R                  " XßXù-    5      S:”  d  M#  [         R                  " X�Xù-    5      S:”  d  MC  U['        [         R(                  " X�Xù-    XßXù-    5      S
   5      -  nMs     UnU
R-                  [        UU5      5        GMÓ     [         R                  " [         R&                  " U
5      * 5      $ )á  Order other features by how much interaction they seem to have with the feature at the given index.

This just bins the SHAP values for a feature along that feature's value. For true Shapley interaction
index values for SHAP see the interaction_contribs option implemented in XGBoost.
r   ç:Œ0âŽyE>é'  Nç      $@é2   r   ©Údtypeç        ©r   r   )r   r&   ÚvaluesÚTÚstdÚdataÚshapeÚarangeÚrandomÚshuffler*   ÚmaxÚminr-   r(   r   Úencode_array_if_neededÚfloatÚsumr+   ÚcorrcoefÚisnanÚappend)Úshap_values_columnÚshap_values_matrixÚignore_indsÚXÚaÚindsÚxÚsrtÚshap_refÚincÚinteractionsr   Úencoded_val_otherÚ	val_otherÚvÚjÚval_vÚnan_vs                     r   Úpotential_interactionsr_   =   s´  € ô —(’(Ð.×5Ñ5×7Ñ7Ð:L×:SÑ:SÑS×VÑV×ZÑZÐ[\Ó]Ð`dÑdÓe€Kà×Ñ€Aà‡w�wˆq�z�EÓÜ�IŠI�a—g‘g˜a‘jÓ!ˆÜ
�	‰	×Ñ˜!ÔØ��%ˆy‰ä�yŠy˜Ÿ™ ™Ó$ˆà×Ñ Ñ%€AÜ
�*Š*�Q‹-€CØ!×(Ñ(¨Ñ.€HØ‰}€HÜ
Œc”#”c˜!“f˜t‘mÓ$ bÓ)¨1Ó
-€CØ€LÜ�1—7‘7˜1‘:×ˆÜ2°1¸1°W±:¸c±?Ì%ÑPÐà%ˆ	ØˆØÓ ¤B§F¢F¬2¯6ª6°)Ó+<Ó$=ÀÓ$DÜ˜1œc !›f cÖ*�Ü—6’6˜)¨©Ð0Ó1°AÕ5¼"¿&º&ÀÈaÉgÐAVÓ:WÐZ[Õ:[ØœœRŸ[š[¨°a±gÐ)>À	ÈaÉgÐ@VÓWÐX\Ñ]Ó^Ñ^’Añ +ð ˆä—H’HÐ.Ó/ˆ	ØˆØÓ ¤B§F¢F¬2¯6ª6°)Ó+<Ó$=ÀÓ$DÜ˜1œc !›f cÖ*�Ü—6’6˜)¨©Ð0Ó1°AÕ5¼"¿&º&ÀÈaÉgÐAVÓ:WÐZ[Õ:[ØœœRŸ[š[¨°a±gÐ)>À	ÈaÉgÐ@VÓWÐX\Ñ]Ó^Ñ^’Añ +ð ˆà×ÑœC  uÓ-×.ñ' ô* �:Š:”r—v’v˜lÓ+Ð+Ó,Ð,r   c                ó`  • [        U[        R                  5      (       a  Uc  UR                  nUR                  n[        XU5      n UR                  S   S:”  aH  [        R                  " UR                  S   5      n[        R                  R                  U5        USS nO#[        R                  " UR                  S   5      nX%U 4   n[        R                  " U5      nXU 4   nX‡   n[        [        [        [        U5      S-  5      S5      S5      n	/ n
[!        UR                  S   5       GHÐ  n[#        X%U4   U   [$        S9nUnSnX°:X  d¹  [        R&                  " [        R(                  " U5      5      S	:  d‹  [!        S[        U5      U	5       Hq  n[        R*                  " XßXù-    5      S:”  d  M#  [        R*                  " X�Xù-    5      S:”  d  MC  U[)        [        R,                  " X�Xù-    XßXù-    5      S
   5      -  nMs     Un[        R.                  " U5      nSnX°:X  d¹  [        R&                  " [        R(                  " U5      5      S	:  d‹  [!        S[        U5      U	5       Hq  n[        R*                  " XßXù-    5      S:”  d  M#  [        R*                  " X�Xù-    5      S:”  d  MC  U[)        [        R,                  " X�Xù-    XßXù-    5      S
   5      -  nMs     UnU
R1                  [        UU5      5        GMÓ     [        R                  " [        R(                  " U
5      * 5      $ )r5   Nr   r7   r8   r9   r   r:   r<   r6   r=   )r$   ÚpdÚ	DataFrameÚcolumnsr>   r3   rB   r   rC   rD   rE   r*   rF   rG   r-   r(   r   rH   rI   rJ   r+   r@   rK   rL   rM   )Úindexr0   rQ   Úfeature_namesrR   rS   rT   rU   rV   rW   rX   r   rY   rZ   r[   r\   r]   r^   s                     r   Úapproximate_interactionsrf   m   s”  € ô �!”R—\‘\×"Ñ"ØÑ ØŸI™IˆMØ�H‰Hˆä˜¨]Ó;€Eà‡w�wˆq�z�EÓÜ�IŠI�a—g‘g˜a‘jÓ!ˆÜ
�	‰	×Ñ˜!ÔØ��%ˆy‰ä�yŠy˜Ÿ™ ™Ó$ˆà	�ˆ+‰€AÜ
�*Š*�Q‹-€CØ ˜;Ñ'€HØ‰}€HÜ
Œc”#”c˜!“f˜t‘mÓ$ bÓ)¨1Ó
-€CØ€LÜ�1—7‘7˜1‘:×ˆÜ2°1¸1°W±:¸c±?Ì%ÑPÐà%ˆ	ØˆØ“
œbŸfšf¤R§V¢V¨IÓ%6Ó7¸$Ó>Ü˜1œc !›f cÖ*�Ü—6’6˜)¨©Ð0Ó1°AÕ5¼"¿&º&ÀÈaÉgÐAVÓ:WÐZ[Õ:[ØœœRŸ[š[¨°a±gÐ)>À	ÈaÉgÐ@VÓWÐX\Ñ]Ó^Ñ^’Añ +ð ˆä—H’HÐ.Ó/ˆ	ØˆØ“
œbŸfšf¤R§V¢V¨IÓ%6Ó7¸$Ó>Ü˜1œc !›f cÖ*�Ü—6’6˜)¨©Ð0Ó1°AÕ5¼"¿&º&ÀÈaÉgÐAVÓ:WÐZ[Õ:[ØœœRŸ[š[¨°a±gÐ)>À	ÈaÉgÐ@VÓWÐX\Ñ]Ó^Ñ^’Añ +ð ˆà×ÑœC  uÓ-×.ñ' ô* �:Š:”r—v’v˜lÓ+Ð+Ó,Ð,r   c                ó  •  U R                  U5      $ ! [         ao    [        R                  " U 5      n[	        U5       VVs0 s H  u  p4XC_M	     Os  snnf nnn[        R
                  " U  Vs/ s H  oEU   PM	     Os  snf snUS9nUs $ f = f)Nr:   )Úastyper.   r   ÚuniqueÚ	enumerater'   )Úarrr;   Úunique_valuesrd   ÚstringÚencoding_dictÚencoded_arrays          r   rH   rH       s}   € ðØ�z‰z˜%Ó Ð øÜó ÜŸ	š	 #›ˆÜ<EÀmÔ<TÔUÒ<T©=¨5˜šÒ<TùÓUˆÑUÜŸšÁcÓ!JÂc¸F°Ô"7ÂcùÔ!JÐRWÑXˆØÒð	ús'   ‚ “.BÁAÁBÁ-A<
Á;BÂBc                ó²   • [        U S5      (       a  XR                  S   :¬  nOU[        U 5      :¬  nU(       a  U $ [        R                  R                  XUS9$ )a™  Performs sampling without replacement of the input data ``X``.

This is a simple wrapper over scikit-learn's ``shuffle`` function.
It is used mainly to downsample ``X`` for use as a background
dataset in SHAP :class:`.Explainer` and its subclasses.

.. versionchanged :: 0.42
    The behaviour of ``sample`` was changed from sampling *with* replacement to sampling
    *without* replacement.
    Note that reproducibility might be broken when using this function pre- and post-0.42,
    even with the specification of ``random_state``.

Parameters
----------
X : array-like
    Data to sample from. Input data can be arrays, lists, dataframes
    or scipy sparse matrices with a consistent first dimension.

nsamples : int
    Number of samples to generate from ``X``.

random_state :
    Determines random number generation for shuffling the data. Use this to
    ensure reproducibility across multiple function calls.

rB   r   )Ú	n_samplesÚrandom_state)ÚhasattrrB   r(   ÚsklearnÚutilsrE   )rQ   Únsamplesrr   Ú
over_counts       r   Úsamplerx   ª   sQ   € ô6 ˆq�'×ÑØ§¡¨¡Ñ+‰
à¤ Q£Ñ'ˆ
æØˆÜ�=‰=× Ñ  À\Ð ÐRÐRr   c                ól  • [        U[        5      (       a  U/nO![        U[        [        45      (       a  UnOS/nU Ht  nSU;  a  [	        S5      eUR                  SS5      u  p4U[        R                  ;  a  M>  [        R                  U   n[        XTS5      nUc  Mb  [        X5      (       d  Mt    g   g)aõ  Acts as a safe version of isinstance without having to explicitly
import packages which may not exist in the users environment.

Checks if obj is an instance of type specified by class_path_str.

Parameters
----------
obj: Any
    Some object you want to test against
class_path_str: str or list
    A string or list of strings specifying full class paths
    Example: `sklearn.ensemble.RandomForestRegressor`

Returns
-------
bool: True if isinstance is true and the package exists, False otherwise

Ú Ú.z™class_path_str must be a string or list of strings specifying a full                 module path to a class. Eg, 'sklearn.ensemble.RandomForestRegressor'r   NTF)	r$   r%   ÚlistÚtupler.   ÚrsplitÚsysÚmodulesÚgetattr)ÚobjÚclass_path_strÚclass_path_strsÚmodule_nameÚ
class_nameÚmoduleÚ_classs          r   Úsafe_isinstancer‰   Ï   s¼   € ô& �.¤#×&Ñ&Ø)Ð*‰Ü	�N¤T¬5 M×	2Ñ	2Ø(‰à˜$ˆó *ˆØ�nÓ$ÜðVóð ð #1×"7Ñ"7¸¸QÓ"?Ñˆð
 œcŸk™kÓ)Ùä—‘˜[Ñ)ˆô ˜¨TÓ2ˆà‰>Ùä�c×"Ó"Ùñ3 *ð6 r   c                óœ   • [        [        U 5      [        5      (       d  X-  n [        R                  " SSU 5      n U S   S:X  a  SU SS -   n U $ )z4Strips trailing zeros and uses a unicode minus sign.z\.?0+$rz   r   Ú-u   âˆ’r   N)Ú
issubclassÚtyper%   ÚreÚsub)ÚsÚ
format_strs     r   Úformat_valuer’     sL   € ä”d˜1“gœs×#Ñ#Ø‰NˆÜ
�Šˆy˜"˜aÓ €AØˆ�tˆsƒ{Ø�q˜˜�uÑˆØ€Hr   c                ó„   • [        U 5      SSSS.R                  SU S-  s=::  a  S:  a  O  O	SS	5      -   $ U S-  S	5      -   $ )
z(Converts a number to and ordinal string.ÚstÚndÚrd)r   é   é   é
   éd   é   é   Úth)r%   Úget)r   s    r   Úordinal_strrŸ     sK   € äˆq‹6˜ ¨$Ñ/×3Ñ3¸¸qÀ3¹wÕ9KÈÖ9K°AÐY]Ó^Ñ^Ð^ÐQRÐUWÑQWÐY]Ó^Ñ^Ð^r   c                  óL   • \ rS rSrSrSSS jjrS rSS jrS rSS jr	S r
S	rg
)ÚOpChaini  z^A way to represent a set of dot chained operations on an object without actually running them.c                ó   • / U l         Xl        g r   ©Ú_opsÚ
_root_name)ÚselfÚ	root_names     r   Ú__init__ÚOpChain.__init__  s   € Ø%'ˆŒ	Ø#�r   c                óx   • U R                    H)  nUu  p4nUb  [        X5      " U0 UD6nM  [        X5      nM+     U$ )zSApplies all our ops to the given object, usually an :class:`.Explanation` instance.)r¤   r�   )r¦   r‚   ÚoÚopÚargsÚkwargss         r   ÚapplyÚOpChain.apply  sE   € à—”ˆAØ ÑˆB�fØÑÜ˜cÔ&¨Ð7°Ñ7’ä˜cÓ&’ñ ð ˆ
r   c                ó¾   • [        U R                  5      n[        R                  " U R                  5      Ul        XR                  S   S'   X#R                  S   S'   U$ )z+Update the args for the previous operation.r#   r   r—   )r¡   r¥   Úcopyr¤   )r¦   r­   r®   Únew_selfs       r   Ú__call__ÚOpChain.__call__)  sK   € ä˜4Ÿ?™?Ó+ˆÜŸ	š	 $§)¡)Ó,ˆŒØ#�‰�bÑ˜!ÑØ%�‰�bÑ˜!ÑØˆr   c                ó¸   • [        U R                  5      n[        R                  " U R                  5      Ul        UR                  R	                  SU/0 /5        U$ )NÚ__getitem__)r¡   r¥   r²   r¤   rM   )r¦   Úitemr³   s      r   r·   ÚOpChain.__getitem__1  sD   € Ü˜4Ÿ?™?Ó+ˆÜŸ	š	 $§)¡)Ó,ˆŒØ�‰×Ñ˜m¨d¨V°RÐ8Ô9Øˆr   c                ó  • UR                  S5      (       a  UR                  S5      (       a  g [        U R                  5      n[        R                  " U R
                  5      Ul        UR
                  R                  US S /5        U$ )NÚ__)r)   Úendswithr¡   r¥   r²   r¤   rM   )r¦   Únamer³   s      r   Ú__getattr__ÚOpChain.__getattr__7  sb   € à�?‰?˜4× Ñ  T§]¡]°4×%8Ñ%8ØÜ˜4Ÿ?™?Ó+ˆÜŸ	š	 $§)¡)Ó,ˆŒØ�‰×Ñ˜d D¨$Ð/Ô0Øˆr   c                óÈ  • U R                   nU R                   Hº  nUu  p4nU=(       d
    [        5       nU=(       d    0 nUSU 3-  n[        U5      S:„  n[        U5      S:„  nU(       d	  U(       d  MZ  USSR	                  U Vs/ s H  n[        U5      PM     snUR                  5        V	Vs/ s H  u  p˜U	 SU< 3PM     snn	-   5      -   S-   -  nM¼     U$ s  snf s  snn	f )Nr{   r   Ú(z, Ú=Ú))r¥   r¤   r}   r(   ÚjoinÚreprÚitems)
r¦   r   r¬   Úop_namer­   r®   Úhas_argsÚ
has_kwargsr[   Úks
             r   Ú__repr__ÚOpChain.__repr__@  sÖ   € Ø�o‰oˆØ—)”)ˆBØ$&Ñ!ˆG˜6Ø—?œ5›7ˆDØ—\˜rˆFà�Q�w�i�=Ñ ˆCÜ˜4“y 1‘}ˆHÜ˜V› q™ˆJÞŸ:˜:Ø�s˜TŸY™Y¹Ó'>º°A¬¨Q®¹Ñ'>Ð[a×[gÑ[gÔ[iÔAjÒ[iÑSWÐSTÀQÀCÀqÈÉÃ,Ñ[iÒAjÑ'jÓkÑkÐnqÑqÑq’ñ ð ˆ
ùò (?ùÓAjs   ÂCÂ.Cr£   N)rz   )r§   r%   ÚreturnÚNone)rÍ   r¡   )r½   r%   rÍ   r¡   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r¨   r¯   r´   r·   r¾   rË   Ú__static_attributes__© r   r   r¡   r¡     s#   † Ùhö$òôòôõr   r¡   c               #  óì   #   • [        [        R                  S5       n [        R                  nU [        l         S v •  U[        l         S S S 5        g ! U[        l        f = f! , (       d  f       g = f7f)NÚw)ÚopenÚosÚdevnullr   Ústderr)rÚ   Ú
old_stderrs     r   Úsuppress_stderrrÝ   P  sO   é € ä	Œb�j‰j˜#Ô	 'Ü—Z‘Zˆ
ØŒŒ
ð	$Ûà#ŒC�J÷ 
Ð	øð $ŒC�Jú÷ 
Õ	üs2   ‚A4�A#ºA¾A#Á
	A4ÁA Á A#Á#
A1Á-A4)r   r%   rÍ   rÎ   )r   r%   r   r%   r   ÚImportErrorrÍ   rÎ   )r   r-   rÍ   z
np.ndarrayr   )rš   r   )rQ   r   rv   r-   rr   r-   rÍ   r   )r‚   r   rƒ   zstr | list[str]rÍ   Úbool)$Ú
__future__r   r²   rÙ   rŽ   r   Ú
contextlibr   Útypingr   r   Únumpyr   Úpandasra   Úscipy.specialr   rt   Ú_typesr   r	   Ú__annotations__r   r   r    r3   r_   rf   Úfloat64rH   rx   r‰   r’   rŸ   r¡   rÝ   rÕ   r   r   Ú<module>ré      sœ   ðÞ "ã Û 	Û 	Û 
Ý %ß %ã Û Û Û æÝà24€Ð/Ó 4ôô+ô
òò(--ô`0-ðf ')§j¡jô ö"SôJ6òrò_÷
4ñ 4ðp ñ$ó ñ$r   