ó
    †ñ:i14  ã                   ó    • S SK r S SKJ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JrJrJr  S SKJr  SSKJr   " S S	5      r " S
 S5      rg)é    N)Útqdm)ÚExplanationÚlinks)ÚFixedCompositeÚImageÚText)ÚMaskedModelé   )ÚBenchmarkResultc                   ó(   • \ rS rSrSS.S jrS rSrg)ÚSequentialMaskeré   iô  )Ú
batch_sizec                ó¤   • U H-  n[        U[        R                  5      (       d  M$  [        S5      e   [	        XCX!5      U l        X`l        XPl        g )NzFDataFrame arguments dont iterate correctly, pass numpy arrays instead!)Ú
isinstanceÚpdÚ	DataFrameÚ	TypeErrorÚSequentialPerturbationÚinnerÚ
model_argsr   )ÚselfÚ	mask_typeÚ
sort_orderÚmaskerÚmodelr   r   Úargs           Ú]/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/shap/benchmark/_sequential.pyÚ__init__ÚSequentialMasker.__init__   sC   € ÛˆCÜ˜#œrŸ|™|×,Ó,ÜÐ hÓiÐiñ ô: ,¨E¸:ÓQˆŒ
Ø$ŒØ$�ó    c                 óZ   • U R                   " X!/U R                  Q7SU R                  0UD6$ )Nr   )r   r   r   )r   ÚexplanationÚnameÚkwargss       r   Ú__call__ÚSequentialMasker.__call__3   s)   € Ø�zŠz˜$Ðd¨d¯o©oÒdÈ$Ï/É/ÐdÐ]cÑdÐdr!   )r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r&   Ú__static_attributes__© r!   r   r   r      s   † ØUXõ  %õDer!   r   c                   óH   • \ rS rSrSS jrS/ SSSSSS.S jrSS	 jrS
 rSrg)r   é7   Fc                 ó  • [        U5      (       a  UOUR                  U l        X l        X0l        X@l        XPl        U R                  S:X  a	  S U l        O=U R                  S:X  a	  S U l        O$U R                  S:X  a	  S U l        O[        S5      e[        U[        5      (       a  UR                  OUn[        U[        5      (       a  SU l        O$[        U[        5      (       a  S	U l        OS
U l        / U l        / U l        / U l        g )NÚpositivec                 ó0   • [         R                  " U * 5      $ ©N©ÚnpÚargsort©Úxs    r   Ú<lambda>Ú1SequentialPerturbation.__init__.<locals>.<lambda>B   s   € ¬B¯JªJ¸°r¬Nr!   Únegativec                 ó.   • [         R                  " U 5      $ r3   r4   r7   s    r   r9   r:   D   s   € ¬B¯JªJ°q¬Mr!   Úabsolutec                 óB   • [         R                  " [        U 5      * 5      $ r3   )r5   r6   Úabsr7   s    r   r9   r:   F   s   € ¬B¯JªJ¼¸A»°wÔ,?r!   z@sort_order must be either "positive", "negative", or "absolute"!ÚtextÚimageÚtabular)ÚcallableÚpredictr   r   r   ÚperturbationÚlinearize_linkÚsort_order_mapÚ
ValueErrorr   r   r   Ú	data_typer   Úscore_valuesÚ
score_aucsÚlabels)r   r   r   r   rE   rF   Úunderlying_maskers          r   r   ÚSequentialPerturbation.__init__8   sÛ   € ä& uŸo™o‘U°5·=±=ˆŒ
ØŒØ$ŒØ(ÔØ,Ôð �?‰?˜jÓ(Ù":ˆDÕØ�_‰_ 
Ó*Ù"9ˆDÕØ�_‰_ 
Ó*Ù"?ˆDÕäÐ_Ó`Ð`ô .8¸Ä×-OÑ-O˜FŸMšMÐU[ÐÜÐ'¬×.Ñ.Ø#ˆD�NÜÐ)¬5×1Ñ1Ø$ˆD�Nà&ˆDŒNð ˆÔØˆŒØˆ�r!   ç{®Gáz„?Né
   )ÚpercentÚindicesÚyÚlabelÚsilentÚ
debug_moder   c          
      óº  • [        U[        R                  5      (       a  UnO-[        U[        5      (       a  UR                  nO[        S5      e[        U5      [        U
S   5      :X  d   S5       eUc  S[        U R                  5       3nS n[        R                  " 5       n/ n/ n[        [        U
6 5       GH•  u  nn[        R                  " UU   R                  5      nUU   R                  5       n[        U R                  U R                   ["        R$                  U R&                  /UQ76 U l        / n[        R*                  " U[,        S9U R.                  S:H  -  nUR1                  UR3                  5       5        U R5                  U5      n[7        S[9        UU-  5      5      n[;        SUU5       HŸ  n[;        U[=        UUU-   5      5       Vs/ s H  nUU   PM
     nnU HK  nU R>                  S:X  a  UU   S::  a  M  U R>                  S	:X  a  UU   S:¼  a  M9  U R.                  S
:H  UU'   MM     UR1                  UR3                  5       5        M¡     UR1                  U5        / n[        R@                  " U5      n[;        S[        U5      U	5       H)  nUR1                  U R)                  UUUU	-    5      5        M+     [        RB                  " U5      nUR1                  U5        UcH  [        R                  " 5       U-
  S:”  a,  [E        [        U
S   5      USSS9nURG                  US-   5        Uc  GM„  URG                  S5        GM˜     Ub  URI                  5         U R                  R1                  [        R@                  " U5      5        SnU RJ                  R1                  U5        [        RL                  " SSS5      n[        RN                  " [        U R                  S   5      [        U5      45      n [;        [        U R                  S   5      5       He  n[        RL                  " SS[        U R                  S   U   5      5      n!U R                  S   U   n"[        RP                  " UU!U"5      U US S 24'   Mg     U RS                  S5      n#U RU                  S5      [        RV                  " U R                  S   5      -  n$[X        RZ                  R]                  [        RL                  " SS[        U#5      5      UU#U#S   -
  -  5      n%U(       d'  [_        U R.                  S-   U R>                  -   UUU#U$S9$ / n&[;        [        U R                  S   5      5       He  nU US S 24   n'[X        RZ                  R]                  [        RL                  " SS[        U'5      5      UU'U'S   -
  -  5      n%U&R1                  U%5        Mg     UU U&4$ s  snf )NzPThe passed explanation must be either of type numpy.ndarray or shap.Explanation!r   z\The explanation passed must have the same number of rows as the model_args that were passed!úScore ©ÚdtypeÚremover
   r1   r;   Úkeepé   Fr   )ÚtotalÚdisableÚleaveÚdescéd   éÿÿÿÿÚ )Úcurve_xÚcurve_yÚcurve_y_std)0r   r5   Úndarrayr   ÚvaluesrH   ÚlenrJ   ÚtimeÚ	enumerateÚzipÚprodÚshapeÚflattenr	   r   r   r   ÚidentityrF   Úmasked_modelÚonesÚboolrE   ÚappendÚcopyrG   ÚmaxÚintÚrangeÚminr   ÚarrayÚconcatenater   ÚupdateÚcloserL   ÚlinspaceÚzerosÚinterpÚmeanÚstdÚsqrtÚsklearnÚmetricsÚaucr   )(r   r$   r#   rQ   rR   rS   rT   rU   rV   r   r   ÚattributionsÚpbarÚ
start_timeÚsvalsÚ	mask_valsÚiÚargsÚfeature_sizeÚsample_attributionsÚmasksÚmaskÚordered_indsÚ	incrementÚjÚtÚ	oind_listÚoindri   Ú	masks_arrÚ
curve_signÚxsÚcurvesÚxpÚypÚysrƒ   r‡   ÚaucsÚcurves(                                           r   r&   ÚSequentialPerturbation.__call__X   s   € ô �k¤2§:¡:×.Ñ.Ø&‰LÜ˜¤[×1Ñ1Ø&×-Ñ-‰LäÐoÓpÐpä�<Ó ¤C¨
°1©Ó$6Ó6ð 	
Øjó	
Ð6ð ‰=ØœS ×!2Ñ!2Ó3Ð4Ð5ˆEð ˆÜ—Y’Y“[ˆ
ØˆØˆ	ä ¤ jÐ!1×2‰GˆAˆtô Ÿ7š7 <°¡?×#8Ñ#8Ó9ˆLØ".¨q¡/×"9Ñ"9Ó";Ðô !,¨D¯J©J¸¿¹ÄUÇ^Á^ÐUY×UhÑUhÐ pÐkoÒ pˆDÔàˆEä—7’7˜<¬tÑ4¸×8IÑ8IÈXÑ8UÑVˆDØ�L‰L˜Ÿ™›Ô%à×.Ñ.Ð/BÓCˆLÜ˜Aœs <°'Ñ#9Ó:Ó;ˆIÜ˜1˜l¨IÖ6�Ü6;¸A¼sÀ<ÐQRÐU^ÑQ^Ó?_Ô6`ÓaÒ6`°˜\¨!œ_Ñ6`�	Ðaã%�DàŸ™¨JÓ6Ð;NÈtÑ;TÐXYÕ;YØ ŸO™O¨zÓ9Ð>QÐRVÑ>WÐ[\Õ>\à%)×%6Ñ%6¸&Ñ%@˜˜T›
ñ &ð —‘˜TŸY™Y›[Ö)ñ 7ð ×Ñ˜UÔ#ð ˆFÜŸš ›ˆIÜ˜1œc )›n¨jÖ9�Ø—‘˜d×/Ñ/°	¸!¸aÀ*¹nÐ0MÓNÖOñ :ä—^’^ FÓ+ˆFà�L‰L˜Ô à‰|¤§	¢	£¨jÑ 8¸1Ó <Ü¤# j°¡mÓ"4¸fÈEÐXjÑk�Ø—‘˜A ™EÔ"ØÔØ—‘˜A—ñc 3ðf ÑØ�J‰JŒLà×Ñ× Ñ ¤§¢¨%£Ô1ð
 ˆ
à�‰×Ñ˜5Ô!ä�[Š[˜˜A˜sÓ#ˆÜ—’œ3˜t×0Ñ0°Ñ4Ó5´s¸2³wÐ?Ó@ˆÜ”s˜4×,Ñ,¨RÑ0Ó1Ö2ˆAÜ—’˜Q ¤3 t×'8Ñ'8¸Ñ'<¸QÑ'?Ó#@ÓAˆBØ×"Ñ" 2Ñ& qÑ)ˆBÜŸ9š9 R¨¨RÓ0ˆF�1’a�4‹Lñ 3ð �[‰[˜‹^ˆØ�j‰j˜‹mœbŸgšg f§l¡l°1¡oÓ6Ñ6ˆÜ�o‰o×!Ñ!¤"§+¢+¨a°´C¸³GÓ"<¸jÈBÐQSÐTUÑQVÉJÑ>WÓXˆæÜ"Ø×!Ñ! CÑ'¨$¯/©/Ñ9¸4ÈÐUWÐehñð ð ˆDÜœ3˜t×0Ñ0°Ñ4Ó5Ö6�Ø˜q¢!˜t™�Ü—o‘o×)Ñ)¬"¯+ª+°a¸¼CÀ»JÓ*GÈÐW\Ð_dÐefÑ_gÑWgÑIhÓi�Ø—‘˜CÖ ñ 7ð ˜f dÐ*Ð*ùòy bs   ÇWc                 ó:  • [        U[        R                  5      (       a  UnO![        U[        5      (       a  UR                  nUc  S[        U R                  5       3n[        U[        R                  [        R                  45      (       a  UR                  n[        WS   S5      (       d  [        R                  " U/5      n[        US   S5      (       d'  U R                  S:X  a  [        R                  " U/5      nSn	[        R                  " 5       n
/ n/ n[        [        U5      5       GH£  nU R                  S:X  a\  X�   R                  S   X�   R                  S   pþ[        R                   " Xï/5      nX�   R#                  S5      R%                  US	5      nOX�   R                  S   nX�   n[        X�   R                  5      S:X  d  U R                  S:X  a  SnOX�   R                  S	   n[        U5       GHq  nU R                  S:X  a  X-   R                  nOUn[        R&                  " U[(        S
9U R*                  S:H  -  nUR-                  5       /n[        R.                  " US-   5      nU R1                  UX-   5      nSnU R3                  UUU5      R#                  S5      nUUS'   US:w  a
  USS2U4   nOUnU R5                  U5      n[7        S[9        UU-  5      5      n[        SUU5       GHM  n[        U[;        UUU-   5      5       Vs/ s H  nUU   PM
     n nU  Hš  n!U R<                  S:X  a  UU!   S::  a  M  U R<                  S:X  a  UU!   S:¼  a  M9  U R                  S:X  a?  U!X�   R                  S   -  U!X�   R                  S   -  n#n"U R*                  S:H  UU"   U#'   Mˆ  U R*                  S:H  UU!'   Mœ     UR?                  UR-                  5       5        U R1                  UX-   5      nU R3                  UUU5      R#                  S5      n[        U[;        UUU-   5      5       H  nUUUS-   '   M     GMP     UR?                  U5        UR?                  U5        GMt     U	cD  [        R                  " 5       U
-
  S:”  a(  [A        [        U5      USS9n	U	RC                  US-   5        U	c  GM’  U	RC                  S5        GM¦     U	b  U	RE                  5         U R                  R?                  [        R                  " U5      5        U R<                  S:X  a  S	n$OSn$U RF                  R?                  U5        [        RH                  " SSS5      n%[        R.                  " [        U R                  S	   5      [        U%5      45      n&[        [        U R                  S	   5      5       He  n[        RH                  " SS[        U R                  S	   U   5      5      n'U R                  S	   U   n([        RJ                  " U%U'U(5      U&USS24'   Mg     U&R#                  S5      n)U(       a‘  / n*[        [        U R                  S	   5      5       He  nU&USS24   n+[L        RN                  RQ                  [        RH                  " SS[        U+5      5      U$U+U+S   -
  -  5      n,U*R?                  U,5        Mg     UU&U*4$ [L        RN                  RQ                  [        RH                  " SS[        U)5      5      U$U)U)S   -
  -  5      n,U%U)U,4$ s  snf )z:Will be deprecated once MaskedModel is in complete supportNrX   r   Ú__len__rB   rA   r
   é   rc   rY   r[   r1   r;   r\   r]   F)r^   r_   r`   rb   ))r   r5   rh   r   ri   rj   rJ   r   ÚSeriesr   Úhasattrr{   rI   rk   ry   ro   rn   r‚   Úreshapers   rt   rE   rv   r€   r   ÚfrG   rw   rx   rz   r   ru   r   r}   r~   rL   r   r�   r…   r†   r‡   )-r   r#   ÚXrQ   rS   rT   rU   rV   rˆ   r‰   rŠ   r‹   rŒ   r�   Úx_shapeÚy_shaper�   r�   Úoutput_sizeÚkÚ
mask_shaper’   r‘   ri   ÚmaskedÚdataÚcurr_valÚtest_attributionsr“   r”   r•   r–   r—   r˜   ÚxoindÚyoindrš   r›   rœ   r�   rž   rŸ   r    r¡   r‡   s-                                                r   ÚscoreÚSequentialPerturbation.scoreØ   s6  € ô �k¤2§:¡:×.Ñ.Ø&‰LÜ˜¤[×1Ñ1Ø&×-Ñ-ˆLà‰=ØœS ×!2Ñ!2Ó3Ð4Ð5ˆEô �aœ"Ÿ)™)¤R§\¡\Ð2×3Ñ3Ø—‘ˆAô �| A‘¨	×2Ñ2ÜŸ8š8 \ NÓ3ˆLÜ�q˜‘t˜Y×'Ñ'¨D¯N©N¸iÓ,GÜ—’˜!˜“ˆAàˆÜ—Y’Y“[ˆ
ØˆØˆ	ä”s˜1“v—ˆAØ�~‰~ Ó(Ø#/¡?×#8Ñ#8¸Ñ#;¸\¹_×=RÑ=RÐSTÑ=U˜Ü!Ÿwšw¨Ð'9Ó:�Ø&2¡o×&:Ñ&:¸1Ó&=×&EÑ&EÀlÐTVÓ&WÑ#à+™×4Ñ4°QÑ7�Ø&2¡oÐ#ä�<‘?×(Ñ(Ó)¨QÓ.°$·.±.ÀIÓ2MØ‘à*™o×3Ñ3°BÑ7�ä˜;×'�Ø—>‘> WÓ,Ø!"¡§¡‘Jà!-�Jä—w’w˜z´Ñ6¸$×:KÑ:KÈxÑ:WÑX�ØŸ™›˜�äŸš ,°Ñ"2Ó3�àŸ™ T¨1©4Ó0�Ø�ØŸ6™6 &¨$°Ó2×7Ñ7¸Ó:�à$��q‘	à !Ó#Ø(;ºA¸q¸DÑ(AÑ%à(;Ð%à#×2Ñ2Ð3DÓE�Ü ¤3 |°gÑ'=Ó#>Ó?�	Ü˜q ,°	×:�AÜ:?ÀÄ3À|ÐUVÐYbÑUbÓCcÔ:dÓ eÒ:d°Q ¨a¤Ñ:d�IÐ eã )˜à!Ÿ_™_°
Ó:Ð?PÐQUÑ?VÐZ[Õ?[Ø $§¡°:Ó =ÐBSÐTXÑBYÐ]^ÕB^à#Ÿ~™~°Ó8Ø/3°|±×7LÑ7LÈQÑ7OÑ/OÐQUÐXdÑXg×XmÑXmÐnoÑXpÑQp u Ø59×5FÑ5FÈ&Ñ5P  U¡¨EÓ 2à-1×->Ñ->À&Ñ-H  T£
ñ !*ð —L‘L §¡£Ô-à!Ÿ[™[¨¨q©tÓ4�FØ#Ÿv™v f¨d°AÓ6×;Ñ;¸AÓ>�Hä" 1¤c¨,¸¸I¹Ó&FÖG˜Ø(0˜˜q 1™u›ô Hñ' ;ð, —‘˜VÔ$Ø× Ñ  ×'ñ_ (ðb ‰|¤§	¢	£¨jÑ 8¸1Ó <Ü¤# a£&°&ÀÑF�Ø—‘˜A ™EÔ"ØÔØ—‘˜A—ñG ðJ ÑØ�J‰JŒLà×Ñ× Ñ ¤§¢¨%£Ô1à�?‰?˜jÓ(Ø‰JàˆJà�‰×Ñ˜5Ô!ä�[Š[˜˜A˜sÓ#ˆÜ—’œ3˜t×0Ñ0°Ñ4Ó5´s¸2³wÐ?Ó@ˆÜ”s˜4×,Ñ,¨RÑ0Ó1Ö2ˆAÜ—’˜Q ¤3 t×'8Ñ'8¸Ñ'<¸QÑ'?Ó#@ÓAˆBØ×"Ñ" 2Ñ& qÑ)ˆBÜŸ9š9 R¨¨RÓ0ˆF�1’a�4‹Lñ 3ð �[‰[˜‹^ˆæØˆDÜœ3˜t×0Ñ0°Ñ4Ó5Ö6�Ø˜q¢!˜t™�Ü—o‘o×)Ñ)¬"¯+ª+°a¸¼CÀ»JÓ*GÈÐW\Ð_dÐefÑ_gÑWgÑIhÓi�Ø—‘˜CÖ ñ 7ð ˜f dÐ*Ð*ä—/‘/×%Ñ%¤b§k¢k°!°Q¼¸B»Ó&@À*ÐPRÐUWÐXYÑUZÑPZÑB[Ó\ˆCØ�r˜3�;Ðùòw !fs   Ì\
c                 ó
  • [         R                  " XSUS 3S9  [         R                  " 5         U R                  S:X  a  SOSn[         R                  " U5        [         R
                  " S5        [         R                  " 5         g )NzAUC z0.4f)rT   r\   zPercent UnmaskedzPercent MaskedzModel Output)ÚplÚplotÚlegendrE   ÚxlabelÚylabelÚshow)r   r›   rŸ   r‡   r¼   s        r   rº   ÚSequentialPerturbation.plotV  sY   € Ü
�Š�  S¨ JÐ/Ò0Ü
�	Š	ŒØ'+×'8Ñ'8¸FÓ'BÑ#ÐHXˆÜ
�	Š	�&ÔÜ
�	Š	�.Ô!Ü
�Š�	r!   )rI   rL   rF   rr   r   r   rE   rK   rJ   r   rG   )F)rO   NNFF)	r(   r)   r*   r+   r   r&   r¶   rº   r,   r-   r!   r   r   r   7   s2   † ôðJ ØØ
ØØØØõ~+ô@|õ|r!   r   )rk   Úmatplotlib.pyplotÚpyplotr¹   Únumpyr5   Úpandasr   r…   Ú	tqdm.autor   Úshapr   r   Úshap.maskersr   r   r   Ú
shap.utilsr	   Ú_resultr   r   r   r-   r!   r   Ú<module>rÉ      s?   ðÛ å Û Û Û Ý ç #ß 4Ñ 4Ý "å $÷$eñ $e÷Neò er!   