ó
    †ñ:iZ!  ã                   óL  • 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
  S S jr " S S5      rS r " S S	\5      rS
 rS r " S S5      rS!S jrS r " S S5      r " S S\5      r " S S\5      r " S S\5      rS!S jr " S S5      r " S S\5      r " S S\5      rS rg)"é    N)ÚKMeans)ÚSimpleImputerc           
      ó„  • [        U R                  S   5       Vs/ s H  n[        U5      PM     nn[        U [        R
                  5      (       a  U R                  nU R                  n [        [        R                  SS9nUR                  U 5      n [        USSS9R                  U 5      nU(       aÑ  [        U5       HÂ  n[        U R                  S   5       H£  n[        R                  R!                  U 5      (       a%  U SS2U4   R#                  5       R%                  5       OU SS2U4   n[        R&                  " [        R(                  " X†R*                  X74   -
  5      5      n	X	U4   UR*                  X74'   M¥     MÄ     [-        UR*                  USS[        R.                  " UR0                  5      -  5      $ s  snf )	a
  Summarize a dataset with k mean samples weighted by the number of data points they
each represent.

Parameters
----------
X : numpy.array or pandas.DataFrame or any scipy.sparse matrix
    Matrix of data samples to summarize (# samples x # features)

k : int
    Number of means to use for approximation.

round_values : bool
    For all i, round the ith dimension of each mean sample to match the nearest value
    from X[:,i]. This ensures discrete features always get a valid value.

Returns
-------
DenseData object.

é   Úmean)Úmissing_valuesÚstrategyr   é
   )Ú
n_clustersÚrandom_stateÚn_initNg      ð?)ÚrangeÚshapeÚstrÚ
isinstanceÚpdÚ	DataFrameÚcolumnsÚvaluesr   ÚnpÚnanÚfit_transformr   ÚfitÚscipyÚsparseÚissparseÚtoarrayÚflattenÚargminÚabsÚcluster_centers_Ú	DenseDataÚbincountÚlabels_)
ÚXÚkÚround_valuesÚiÚgroup_namesÚimpÚkmeansÚjÚxjÚinds
             ÚU/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/shap/utils/_legacy.pyr+   r+   
   sj  € ô* $)¨¯©°©Ô#4Ó5Ò#4˜a”3�q–6Ñ#4€KÐ5Ü�!”R—\‘\×"Ñ"Ø—i‘iˆØ�H‰Hˆô ¤r§v¡v¸Ñ
?€CØ×Ñ˜!Ó€Aô ˜q¨q¸Ñ<×@Ñ@ÀÓC€FæÜ�q–ˆAÜ˜1Ÿ7™7 1™:Ö&�ä38·<±<×3HÑ3HÈ×3KÑ3K�A’a˜�d‘G—O‘OÓ%×-Ñ-Ô/ÐQRÒSTÐVWÐSWÑQXð ô —i’i¤§¢ r×,CÑ,CÀAÀDÑ,IÑ'IÓ JÓK�Ø01°q°&±	�×'Ñ'¨¨Ó-ó 'ñ ô �V×,Ñ,¨k¸4ÀÄrÇ{Â{ÐSY×SaÑSaÓGbÑAbÓcÐcùò) 6s   ›F=c                   ó   • \ rS rSrS rSrg)ÚInstanceé6   c                 ó   • Xl         X l        g ©N)ÚxÚgroup_display_values)Úselfr5   r6   s      r/   Ú__init__ÚInstance.__init__7   s   € ØŒØ$8Õ!ó    )r6   r5   N©Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r8   Ú__static_attributes__© r:   r/   r1   r1   6   s   † õ9r:   r1   c                 óH   • [        U [        5      (       a  U $ [        U S 5      $ r4   )r   r1   ©Úvals    r/   Úconvert_to_instancerE   <   s!   € Ü�#”x× Ñ Øˆ
ä˜˜TÓ"Ð"r:   c                   ó    • \ rS rSrS rS rSrg)ÚInstanceWithIndexéC   c                 óT   • [         R                  XU5        X0l        X@l        X l        g r4   )r1   r8   Úindex_valueÚ
index_nameÚcolumn_name)r7   r5   rL   rJ   rK   r6   s         r/   r8   ÚInstanceWithIndex.__init__D   s$   € Ü×Ñ˜$Ð#7Ô8Ø&ÔØ$ŒØ&Õr:   c                 ó  • [         R                  " U R                  U R                  /S9n[         R                  " U R                  U R
                  S9n[         R                  " X/SS9nUR                  U R                  5      nU$ ©N)r   r   )Úaxis)r   r   rJ   rK   r5   rL   ÚconcatÚ	set_index)r7   ÚindexÚdataÚdfs       r/   Úconvert_to_dfÚInstanceWithIndex.convert_to_dfJ   sb   € Ü—’˜T×-Ñ-¸¿¹Ð7HÑIˆÜ�|Š|˜DŸF™F¨D×,<Ñ,<Ñ=ˆÜ�YŠY˜�}¨1Ñ-ˆØ�\‰\˜$Ÿ/™/Ó*ˆØˆ	r:   )rL   rK   rJ   N©r<   r=   r>   r?   r8   rV   r@   rA   r:   r/   rG   rG   C   s   † ò'õr:   rG   c                 ó   • [        XX#S 5      $ r4   )rG   )rD   rL   rJ   rK   s       r/   Úconvert_to_instance_with_indexrZ   R   s   € Ü˜S¨{ÈÓMÐMr:   c                 óz  • [        U [        5      (       d  [        S5      e[        U[        5      (       a�  U R                  cE  UR
                   Vs/ s H(  n[        U5      S:X  a  U R                  SUS   4   OSPM*     snU l        [        U R                  5      [        UR
                  5      :X  d   eg g s  snf )Nz"instance must be of type Instance!r   r   Ú )r   r1   Ú	TypeErrorr"   r6   ÚgroupsÚlenr5   )ÚinstancerT   Úgroups      r/   Úmatch_instance_to_datarb   V   s¥   € Ü�h¤×)Ñ)ÜÐ<Ó=Ð=ä�$œ	×"Ñ"Ø×(Ñ(Ñ0àPT×P[ÒP[ó-ÚP[Àu¬3¨u«:¸«?�—
‘
˜1˜e A™h˜;Ò'ÀÒBÑP[ñ-ˆHÔ)ô �8×0Ñ0Ó1´S¸¿¹Ó5EÓEÐEÑEð #ùò-s   Á/B8c                   ó   • \ rS rSrS rSrg)ÚModeléb   c                 ó   • Xl         X l        g r4   ©ÚfÚ	out_names)r7   rh   ri   s      r/   r8   ÚModel.__init__c   s   € ØŒØ"�r:   rg   Nr;   rA   r:   r/   rd   rd   b   s   † õ#r:   rd   c                 ó  • [        U [        5      (       a  U nO[        U S5      nU(       d`  [        UR                  SS5      nU(       aB  [	        US5      (       a1  [
        R                  " U5      nSUR                  R                  l        U$ )ac  Convert a model to a Model object.

Parameters
----------
val : function or Model object
    The model function or a Model object.

keep_index : bool
    If True then the index values will be passed to the model function as the first argument.
    When this is False the feature names will be removed from the model object to avoid unnecessary warnings.

NÚ__self__Úfeature_names_in_)	r   rd   Úgetattrrh   ÚhasattrÚcopyÚdeepcopyrl   rm   )rD   Ú
keep_indexÚoutÚf_selfs       r/   Úconvert_to_modelru   h   sl   € ô �#”u×ÑØ‰ä�C˜Óˆö Ü˜Ÿ™ 
¨DÓ1ˆÞ”g˜fÐ&9×:Ñ:ä—-’- Ó$ˆCØ/3ˆC�E‰E�N‰NÔ,à€Jr:   c                 óü  • [        U [        5      (       d  [        S5      e [        U[        5      (       a   U R	                  UR                  5       5      nOU R	                  UR                  5      n U R                  c]  [        UR                  5      S:X  a
  S/U l	        U$ [        UR                  S   5       Vs/ s H  nS[        U5      -   PM     snU l	        U$ ! [         a    [        S5        e f = fs  snf )Nzmodel must be of type Model!zDProvided model function fails when applied to the provided data set.r   zoutput valuer   zoutput value )r   rd   r]   ÚDenseDataWithIndexrh   rV   rT   Ú	ExceptionÚprintri   r_   r   r   r   )ÚmodelrT   Úout_valr(   s       r/   Úmatch_model_to_datar|   †   sà   € Ü�eœU×#Ñ#ÜÐ6Ó7Ð7ðÜ�dÔ.×/Ñ/Ø—g‘g˜d×0Ñ0Ó2Ó3‰Gà—g‘g˜dŸi™iÓ(‰Gð
 ‡�ÑÜˆw�}‰}Ó Ó"Ø-Ð.ˆEŒOð €Nô BGÀwÇ}Á}ÐUVÑGWÔAXÓYÒAX¸A˜´°Q³Ô7ÑAXÑYˆEŒOà€Nøô ó ÜÐTÔUØðüò Zs   ¢4C ÁC Â=C9ÃC6c                   ó   • \ rS rSrS rSrg)ÚDataéœ   c                 ó   • g r4   rA   ©r7   s    r/   r8   ÚData.__init__�   ó   € Ør:   rA   Nr;   rA   r:   r/   r~   r~   œ   ó   † õr:   r~   c                   ó   • \ rS rSrS rSrg)Ú
SparseDataé¡   c                 ó  • UR                   S   n[        R                  " U5      U l        U =R                  [        R                  " U R                  5      -  sl        SU l        S U l        S U l        UR                   S   U l        Xl	        g )Nr   Fr   )
r   r   ÚonesÚweightsÚsumÚ
transposedr^   r)   Úgroups_sizerT   )r7   rT   ÚargsÚnum_sampless       r/   r8   ÚSparseData.__init__¢   se   € Ø—j‘j ‘mˆÜ—w’w˜{Ó+ˆŒØ�ŠœŸš˜tŸ|™|Ó,Ñ,�ØˆŒØˆŒØˆÔØŸ:™: a™=ˆÔØ�	r:   ©rT   r)   r^   r�   rŒ   rŠ   Nr;   rA   r:   r/   r†   r†   ¡   s   † õr:   r†   c                   ó   • \ rS rSrS rSrg)r"   é­   c                 óî  • [        U5      S:”  a  US   b  US   O9[        [        U5      5       Vs/ s H  n[        R                  " U/5      PM     snU l        [        S U R                   5       5      nUR                  S   nSnXQR                  S   :w  a  SnUR                  S   nU(       + =(       a    XQR                  S   :H  =(       d    U=(       a    XQR                  S   :H  nU(       d  [        S5      e[        U5      S:”  a  US   O[        R                  " U5      U l	        U =R                  [        R
                  " U R                  5      -  sl	        [        U R                  5      n	U(       + =(       a    X‘R                  S   :H  =(       d    U=(       a    X‘R                  S   :H  nU(       d  [        S5      eXpl
        X l        Xl        [        U R                  5      U l        g s  snf )Nr   c              3   ó8   #   • U  H  n[        U5      v •  M     g 7fr4   )r_   )Ú.0Úgs     r/   Ú	<genexpr>Ú%DenseData.__init__.<locals>.<genexpr>³   s   é € Ð,¢˜1”�A—�¢ùs   ‚Fr   Tz"# of names must match data matrix!z$# of weights must match data matrix!)r_   r   r   Úarrayr^   r‹   r   Ú
ValueErrorr‰   rŠ   rŒ   r)   rT   r�   )
r7   rT   r)   rŽ   r(   r,   r�   ÚtÚvalidÚwls
             r/   r8   ÚDenseData.__init__®   s}  € ä˜4“y 1“}¨¨a©Ñ)<ˆD�ŠGÔZ_Ô`cÐdoÓ`pÔZqÓBrÒZqÐUVÄ2Ç8Â8ÈQÈCÆ=ÑZqÑBrð 	Œô Ñ, §¢Ó,Ó,ˆØ—j‘j ‘mˆØˆØ—
‘
˜1‘ÓØˆAØŸ*™* Q™-ˆKà”×-˜1§
¡
¨1¡Ñ-×L°1×3K¸¿j¹jÈ¹mÑ9KˆÞÜÐAÓBÐBä"% d£)¨a£-�t˜A’w´R·W²W¸[Ó5IˆŒØ�ŠœŸš˜tŸ|™|Ó,Ñ,�Ü�—‘ÓˆØ”×.˜2§¡¨A¡Ñ.×N°A×4M¸"Ç
Á
È1ÁÑ:MˆÞÜÐCÓDÐDàŒØ&ÔØŒ	Ü˜tŸ{™{Ó+ˆÕùò1 Css   ±!G2r‘   Nr;   rA   r:   r/   r"   r"   ­   s   † õ,r:   r"   c                   ó    • \ rS rSrS rS rSrg)rw   éË   c                 óL   • [         R                  " XU/UQ76   X0l        X@l        g r4   )r"   r8   rJ   rK   )r7   rT   r)   rS   rK   rŽ   s         r/   r8   ÚDenseDataWithIndex.__init__Ì   s"   € Ü×Ò˜4 {Ð:°TÓ:Ø ÔØ$�r:   c                 ó  • [         R                  " U R                  U R                  S9n[         R                  " U R                  U R
                  /S9n[         R                  " X!/SS9nUR                  U R
                  5      nU$ rO   )r   r   rT   r)   rJ   rK   rQ   rR   )r7   rT   rS   rU   s       r/   rV   Ú DenseDataWithIndex.convert_to_dfÑ   sb   € Ü�|Š|˜DŸI™I¨t×/?Ñ/?Ñ@ˆÜ—’˜T×-Ñ-¸¿¹Ð7HÑIˆÜ�YŠY˜�}¨1Ñ-ˆØ�\‰\˜$Ÿ/™/Ó*ˆØˆ	r:   )rK   rJ   NrX   rA   r:   r/   rw   rw   Ë   s   † ò%õ
r:   rw   c           	      óð  • [        U [        5      (       a  U $ [        U [        R                  5      (       a<  [	        U [        U R                  S   5       Vs/ s H  n[        U5      PM     sn5      $ [        U [        R                  5      (       aC  [	        U R                  R                  S[        U 5      45      [        U R                  5      5      $ [        U [        R                  5      (       aƒ  U(       aS  [!        U R                  [        U R"                  5      U R                  R                  U R                  R$                  5      $ [	        U R                  [        U R"                  5      5      $ [&        R(                  R+                  U 5      (       a?  [&        R(                  R-                  U 5      (       d  U R/                  5       n [1        U 5      $ S[3        U 5       3n[5        U5      es  snf )Nr   z$Unknown type passed as data object: )r   r~   r   Úndarrayr"   r   r   r   r   ÚSeriesr   Úreshaper_   ÚlistrS   r   rw   r   Únamer   r   r   Úisspmatrix_csrÚtocsrr†   Útyper]   )rD   rr   r(   Úemsgs       r/   Úconvert_to_datar°   Ù   sS  € Ü�#”t×ÑØˆ
Ü�#”r—z‘z×"Ñ"Ü˜¬u°S·Y±Y¸q±\Ô/BÓCÒ/B¨!œs 1žvÑ/BÑCÓDÐDÜ�#”r—y‘y×!Ñ!Ü˜Ÿ™×+Ñ+¨Q´°C³¨MÓ:¼DÀÇÁ»OÓLÐLÜ�#”r—|‘|×$Ñ$ÞÜ% c§j¡j´$°s·{±{Ó2CÀSÇYÁY×EUÑEUÐWZ×W`ÑW`×WeÑWeÓfÐfä˜SŸZ™Z¬¨c¯k©kÓ):Ó;Ð;Ü‡|�|×Ñ˜S×!Ñ!Ü�|‰|×*Ñ*¨3×/Ñ/Ø—)‘)“+ˆCÜ˜#‹Ðà1´$°s³)°Ð=€DÜ
�D‹/Ðùò Ds   ÁG3
c                   ó   • \ rS rSrS rSrg)ÚLinkéî   c                 ó   • g r4   rA   r�   s    r/   r8   ÚLink.__init__ï   rƒ   r:   rA   Nr;   rA   r:   r/   r²   r²   î   r„   r:   r²   c                   ó:   • \ rS rSrS r\S 5       r\S 5       rSrg)ÚIdentityLinkéó   c                 ó   • g)NÚidentityrA   r�   s    r/   Ú__str__ÚIdentityLink.__str__ô   s   € Ør:   c                 ó   • U $ r4   rA   ©r5   s    r/   rh   ÚIdentityLink.f÷   ó   € àˆr:   c                 ó   • U $ r4   rA   r¾   s    r/   ÚfinvÚIdentityLink.finvû   rÀ   r:   rA   N©	r<   r=   r>   r?   r»   Ústaticmethodrh   rÂ   r@   rA   r:   r/   r·   r·   ó   s/   † òð ñó ðð ñó ór:   r·   c                   ó>   • \ rS rSrS r\SS j5       r\S 5       rSrg)Ú	LogitLinké   c                 ó   • g)NÚlogitrA   r�   s    r/   r»   ÚLogitLink.__str__  s   € Ør:   c                 ón   • [         R                  " XSU-
  5      n[         R                  " USU-
  -  5      $ ©Nr   )r   ÚclipÚlog)r5   ÚepsilonÚ	x_clippeds      r/   rh   ÚLogitLink.f  s.   € ä—G’G˜A¨¨G©Ó4ˆ	Ü�vŠv�i 1 y¡=Ñ1Ó2Ð2r:   c                 ó<   • SS[         R                  " U * 5      -   -  $ rÍ   )r   Úexpr¾   s    r/   rÂ   ÚLogitLink.finv	  s   € à�AœŸš ˜r›
‘NÑ#Ð#r:   rA   N)gVçž¯Ò<rÄ   rA   r:   r/   rÇ   rÇ      s/   † òð ó3ó ð3ð ñ$ó ó$r:   rÇ   c                 ó†   • [        U [        5      (       a  U $ U S:X  a
  [        5       $ U S:X  a
  [        5       $ [	        S5      e)Nrº   rÊ   z1Passed link object must be a subclass of iml.Link)r   r²   r·   rÇ   r]   rC   s    r/   Úconvert_to_linkr×     s?   € Ü�#”t×ÑØˆ
Ø
ˆjÓÜ‹~ÐØ
ˆgƒ~Ü‹{ÐÜ
ÐGÓ
HÐHr:   )T)F)rp   Únumpyr   Úpandasr   Úscipy.sparser   Úsklearn.clusterr   Úsklearn.imputer   r+   r1   rE   rG   rZ   rb   rd   ru   r|   r~   r†   r"   rw   r°   r²   r·   rÇ   r×   rA   r:   r/   Ú<module>rÝ      s´   ðÛ ã Û Û Ý "Ý (ô)d÷X9ñ 9ò#ô˜ô òNò	F÷#ñ #ôò<÷,ñ ô
	�ô 	ô,�ô ,ô<˜ô ô÷*ñ ô

�4ô 
ô$�ô $óIr:   