§
    §éUgÄ0  ã            	       óX  — d Z ddlZddlmZmZ ddlZddl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 ddlmZmZ dd	lmZ dd
lmZmZmZmZ ddlmZmZ  e
¦   «         Z e	¦   «         Z d„ Z!ej"         #                    deez   ¦  «        d„ ¦   «         Z$d„ Z%d„ Z&d„ Z'd„ Z(d„ Z)ej"         #                    dddg¦  «        d„ ¦   «         Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/ ed ed,i ddi¤Ž¬ ¦  «        ej"         #                    d!d"d#g¦  «        d$„ ¦   «         ¦   «         Z0 ed ed,i dd%i¤Ž¬ ¦  «        ej"         #                    d!d"d#g¦  «        d&„ ¦   «         ¦   «         Z1d'„ Z2ej"         #                    d(e¦  «        d)„ ¦   «         Z3d*„ Z4ej"         #                    deez   ¦  «        d+„ ¦   «         Z5dS )-zD
Testing for Isolation Forest algorithm (sklearn.ensemble.iforest).
é    N)ÚMockÚpatch)Úload_diabetesÚ	load_irisÚmake_classification)ÚIsolationForest)Ú_average_path_length)Úroc_auc_score)ÚParameterGridÚtrain_test_split)Úcheck_random_state)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)ÚCSC_CONTAINERSÚCSR_CONTAINERSc                 ó`  — t          j        ddgddgg¦  «        }t          j        ddgddgg¦  «        }t          dgg d¢ddgdœ¦  «        }t          ¦   «         5  |D ]6}t	          dd	| i|¤Ž                     |¦  «                             |¦  «         Œ7	 d
d
d
¦  «         d
S # 1 swxY w Y   d
S )z6Check Isolation Forest for various parameter settings.r   é   é   é   )ç      à?ç      ð?r   TF)Ún_estimatorsÚmax_samplesÚ	bootstrapÚrandom_stateN© )ÚnpÚarrayr   r   r   ÚfitÚpredict)Úglobal_random_seedÚX_trainÚX_testÚgridÚparamss        úb/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/sklearn/ensemble/tests/test_iforest.pyÚtest_iforestr)   "   s   € åŒh˜˜A˜  A Ð'Ñ(Ô(€GÝŒX˜˜1�v  1˜vÐ&Ñ'Ô'€FåØ˜¨]¨]¨]È$ÐPUÈÐWÐWñô €Dõ 
Ñ	Ô	ð ð Øð 	ð 	ˆFÝÐFÐFÐ);ÐF¸vÐFÐF×JÒJØñô çŠg�f‰oŒoˆoˆoð	ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á:B#Â#B'Â*B'Úsparse_containerc                 óÎ  — t          | ¦  «        }t          t          j        dd…         |¬¦  «        \  }}t	          ddgddgdœ¦  «        } ||¦  «        } ||¦  «        }|D ]€}t          dd	| d
œ|¤Ž                     |¦  «        }	|	                     |¦  «        }
t          dd	| d
œ|¤Ž                     |¦  «        }|                     |¦  «        }t          |
|¦  «         Œ�dS )z=Check IForest for various parameter settings on sparse input.Né2   ©r   r   r   TF)r   r   é
   )r   r   r   )	r   r   ÚdiabetesÚdatar   r   r!   r"   r   )r#   r*   Úrngr$   r%   r&   ÚX_train_sparseÚX_test_sparser'   Úsparse_classifierÚsparse_resultsÚdense_classifierÚdense_resultss                r(   Útest_iforest_sparser8   2   s4  € õ Ð/Ñ
0Ô
0€CÝ&¥x¤}°S°b°SÔ'9ÈÐLÑLÔL�O€GˆVÝ¨#¨s¨À4ÈÀ-ÐPÐPÑQÔQ€Dà%Ð% gÑ.Ô.€NØ$Ð$ VÑ,Ô,€Màð :ð :ˆå+ð 
ØÐ*<ð
ð 
Ø@Fð
ð 
ç
Š#ˆnÑ
Ô
ð 	ð +×2Ò2°=ÑAÔAˆõ +ð 
ØÐ*<ð
ð 
Ø@Fð
ð 
ç
Š#ˆg‰,Œ,ð 	ð )×0Ò0°Ñ8Ô8ˆå˜>¨=Ñ9Ô9Ð9Ð9ð:ð :ó    c                  óv  — t           j        } d}t          j        t          |¬¦  «        5  t          d¬¦  «                             | ¦  «         ddd¦  «         n# 1 swxY w Y   t          j        ¦   «         5  t          j	        dt          ¦  «         t          d¬¦  «                             | ¦  «         ddd¦  «         n# 1 swxY w Y   t          j        ¦   «         5  t          j	        dt          ¦  «         t          t          j        d¦  «        ¬¦  «                             | ¦  «         ddd¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5  t          ¦   «                              | ¦  «                             | dd…d	d…f         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
z7Test that it gives proper exception on deficient input.ú3max_samples will be set to n_samples for estimation©Úmatchéè  ©r   NÚerrorÚautor   r   )Úirisr0   ÚpytestÚwarnsÚUserWarningr   r!   ÚwarningsÚcatch_warningsÚsimplefilterr   Úint64ÚraisesÚ
ValueErrorr"   )ÚXÚwarn_msgs     r(   Útest_iforest_errorrN   L   s~  € åŒ	€Að
 E€HÝ	Œ•k¨Ð	2Ñ	2Ô	2ð 1ð 1Ý DÐ)Ñ)Ô)×-Ò-¨aÑ0Ô0Ð0ð1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1å	Ô	 Ñ	"Ô	"ð 3ð 3ÝÔ˜g¥{Ñ3Ô3Ð3Ý FÐ+Ñ+Ô+×/Ò/°Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3õ 
Ô	 Ñ	"Ô	"ð 8ð 8ÝÔ˜g¥{Ñ3Ô3Ð3Ý¥B¤H¨Q¡K¤KÐ0Ñ0Ô0×4Ò4°QÑ7Ô7Ð7ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8õ
 
Œ•zÑ	"Ô	"ð 3ð 3ÝÑÔ×Ò˜aÑ Ô ×(Ò(¨¨1¨1¨1¨a¨b¨b¨5¬Ñ2Ô2Ð2ð3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3sI   ª$AÁAÁ!AÁ8>CÃCÃ	CÃ AD<Ä<E ÅE Å AF.Æ.F2Æ5F2c            
      ó  — t           j        } t          ¦   «                              | ¦  «        }|j        D ]K}|j        t          t          j        t          j	        | j
        d         ¦  «        ¦  «        ¦  «        k    sJ ‚ŒLdS )zDCheck max_depth recalculation when max_samples is reset to n_samplesr   N)rB   r0   r   r!   Úestimators_Ú	max_depthÚintr   ÚceilÚlog2Úshape)rL   ÚclfÚests      r(   Útest_recalculate_max_depthrX   b   sy   € åŒ	€AÝ
Ñ
Ô
×
Ò
 Ñ
"Ô
"€CØŒð Bð BˆØŒ}¥¥B¤G­B¬G°A´G¸A´JÑ,?Ô,?Ñ$@Ô$@Ñ AÔ AÒAÐAÐAÐAÐAðBð Br9   c                  óð  — t           j        } t          ¦   «                              | ¦  «        }|j        | j        d         k    sJ ‚t          d¬¦  «        }d}t          j        t          |¬¦  «        5  |                     | ¦  «         d d d ¦  «         n# 1 swxY w Y   |j        | j        d         k    sJ ‚t          d¬¦  «                             | ¦  «        }|j        d| j        d         z  k    sJ ‚d S )Nr   iô  r?   r;   r<   gš™™™™™Ù?)	rB   r0   r   r!   Úmax_samples_rU   rC   rD   rE   )rL   rV   rM   s      r(   Útest_max_samples_attributer[   j   s'  € ÝŒ	€AÝ
Ñ
Ô
×
Ò
 Ñ
"Ô
"€CØÔ˜qœw qœzÒ)Ð)Ð)Ð)å
 cÐ
*Ñ
*Ô
*€CØD€HÝ	Œ•k¨Ð	2Ñ	2Ô	2ð ð Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð àÔ˜qœw qœzÒ)Ð)Ð)Ð)å
 cÐ
*Ñ
*Ô
*×
.Ò
.¨qÑ
1Ô
1€CØÔ˜s Q¤W¨Q¤ZÑ/Ò/Ð/Ð/Ð/Ð/Ð/s   Á3BÂBÂBc                 ó  — t          | ¦  «        }t          t          j        |¬¦  «        \  }}t	          d| ¬¦  «                             |¦  «        }|                     d¬¦  «         |                     |¦  «        }|                     d¬¦  «         |                     |¦  «        }t          ||¦  «         t	          d| ¬¦  «                             |¦  «        }|                     |¦  «        }t          ||¦  «         dS )zCheck parallel regression.r-   r   )Ún_jobsr   r   )r]   r   N)	r   r   r/   r0   r   r!   Ú
set_paramsr"   r   )r#   r1   r$   r%   ÚensembleÚy1Úy2Úy3s           r(   Ú test_iforest_parallel_regressionrc   y   s÷   € å
Ð/Ñ
0Ô
0€Cå&¥x¤}À3ÐGÑGÔG�O€GˆVå aÐ6HÐIÑIÔI×MÒMÈgÑVÔV€Hà×Ò˜qÐÑ!Ô!Ð!Ø	×	Ò	˜&Ñ	!Ô	!€BØ×Ò˜qÐÑ!Ô!Ð!Ø	×	Ò	˜&Ñ	!Ô	!€BÝ˜b "Ñ%Ô%Ð%å aÐ6HÐIÑIÔI×MÒMÈgÑVÔV€Hà	×	Ò	˜&Ñ	!Ô	!€BÝ˜b "Ñ%Ô%Ð%Ð%Ð%r9   c                 ó  — t          | ¦  «        }d|                     dd¦  «        z  }|                     t          j        |dz   |dz
  f¦  «        ¦  «        }|dd…         }|                     ddd¬	¦  «        }t          j        |dd…         |f¦  «        }t          j        d
gdz  dgdz  z   ¦  «        }t          d|¬¦  «                             |¦  «        }| 	                    |¦  «         }t          ||¦  «        dk    sJ ‚dS )z#Test Isolation Forest performs wellg333333Ó?iX  r   Nr>   éÿÿÿÿr   )éÈ   r   )ÚlowÚhighÚsizer   rf   éd   )r   r   g\�Âõ(\ï?)r   ÚrandnÚpermutationr   ÚvstackÚuniformr    r   r!   Údecision_functionr
   )	r#   r1   rL   r$   Ú
X_outliersr%   Úy_testrV   Úy_preds	            r(   Útest_iforest_performancers   �   s  € õ Ð/Ñ
0Ô
0€CØˆc�iŠi˜˜QÑÔÑ€AØ�Š�œ	 1 q¡5¨!¨a©% .Ñ1Ô1Ñ2Ô2€AØ���Œh€Gð —’ ¨!°(�Ñ;Ô;€JÝŒY˜˜$˜%˜%œ *Ð-Ñ.Ô.€FÝŒX�q�c˜C‘i 1 #¨¡)Ñ+Ñ,Ô,€Fõ  c¸Ð
<Ñ
<Ô
<×
@Ò
@ÀÑ
IÔ
I€Cð ×#Ò# FÑ+Ô+Ð+€Fõ ˜ Ñ(Ô(¨4Ò/Ð/Ð/Ð/Ð/Ð/r9   Úcontaminationç      Ð?rA   c           	      óŠ  — ddgddgddgddgddgddgddgddgg}t          || ¬	¦  «        }|                     |¦  «         |                     |¦  «         }|                     |¦  «        }t	          j        |dd …         ¦  «        t	          j        |d d…         ¦  «        k    sJ ‚t          |d
dgz  ddgz  z   ¦  «         d S )Néþÿÿÿre   r   r   é   é   éûÿÿÿé	   ©r   rt   é   )r   r!   ro   r"   r   ÚminÚmaxr   )rt   r#   rL   rV   Údecision_funcÚpreds         r(   Útest_iforest_worksr‚   ¥   sá   € ð ˆbˆ�B˜�8˜b "˜X¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÈÈAÀwÐO€Aõ Ð'9ÈÐ
WÑ
WÔ
W€CØ‡G‚GˆA�J„J€JØ×*Ò*¨1Ñ-Ô-Ð-€MØ�;Š;�q‰>Œ>€DåŒ6�-   Ô$Ñ%Ô%­¬¨}¸S¸b¸SÔ/AÑ(BÔ(BÒBÐBÐBÐBÝ�t˜Q ! ™W q¨B¨4¡xÑ/Ñ0Ô0Ð0Ð0Ð0r9   c                  ó„   — t           j        } t          ¦   «                              | ¦  «        }|j        |j        k    sJ ‚d S ©N)rB   r0   r   r!   rZ   Ú_max_samples)rL   rV   s     r(   Útest_max_samples_consistencyr†   ´   s?   € åŒ	€AÝ
Ñ
Ô
×
Ò
 Ñ
"Ô
"€CØÔ˜sÔ/Ò/Ð/Ð/Ð/Ð/Ð/r9   c                  ó  — t          d¦  «        } t          t          j        d d…         t          j        d d…         | ¬¦  «        \  }}}}t          d¬¦  «        }|                     ||¦  «         |                     |¦  «         d S )Nr   r,   r-   gš™™™™™é?)Úmax_features)r   r   r/   r0   Útargetr   r!   r"   )r1   r$   r%   Úy_trainrq   rV   s         r(   Ú test_iforest_subsampled_featuresr‹   »   s‡   € å
˜QÑ
Ô
€CÝ'7ÝŒ�c�r�cÔ�HœO¨C¨R¨CÔ0¸sð(ñ (ô (Ñ$€GˆV�W˜fõ  sÐ
+Ñ
+Ô
+€CØ‡G‚GˆG�WÑÔÐØ‡K‚K�ÑÔÐÐÐr9   c                  óÈ  — dt          j        d¦  «        t           j        z   z  dz
  } dt          j        d¦  «        t           j        z   z  dz
  }t          t	          dg¦  «        dg¦  «         t          t	          dg¦  «        dg¦  «         t          t	          d	g¦  «        d
g¦  «         t          t	          dg¦  «        | g¦  «         t          t	          dg¦  «        |g¦  «         t          t	          t          j        g d¢¦  «        ¦  «        dd
| |g¦  «         t	          t          j        d¦  «        ¦  «        }t          |t          j        |¦  «        ¦  «         d S )Nç       @g      @gš™™™™™ù?g     0�@g}ÿ­¿Ì÷ÿ?r   g        r   r   r   é   éç  )r   r   rŽ   r�   )	r   ÚlogÚeuler_gammar   r	   r    Úaranger   Úsort)Ú
result_oneÚ
result_twoÚavg_path_lengths      r(   Ú test_iforest_average_path_lengthr—   Æ   s@  € ð �œ˜s™œ¥b¤nÑ4Ñ5¸ÑG€JØ�œ˜u™œ­¬Ñ6Ñ7Ð:MÑM€JÝÕ(¨!¨Ñ-Ô-°¨uÑ5Ô5Ð5ÝÕ(¨!¨Ñ-Ô-°¨uÑ5Ô5Ð5ÝÕ(¨!¨Ñ-Ô-°¨uÑ5Ô5Ð5ÝÕ(¨!¨Ñ-Ô-°
¨|Ñ<Ô<Ð<ÝÕ(¨#¨Ñ/Ô/°*°Ñ>Ô>Ð>ÝÝ�RœX n n nÑ5Ô5Ñ6Ô6Ø	ˆc�:˜zÐ*ñô ð õ
 +­2¬9°Q©<¬<Ñ8Ô8€OÝ�­¬°Ñ(@Ô(@ÑAÔAÐAÐAÐAr9   c                  ó,  — ddgddgddgg} t          d¬¦  «                             | ¦  «        }t          ¦   «                              | ¦  «        }t          |                     ddgg¦  «        |                     ddgg¦  «        |j        z   ¦  «         t          |                     ddgg¦  «        |                     ddgg¦  «        |j        z   ¦  «         t          |                     ddgg¦  «        |                     ddgg¦  «        ¦  «         d S )Nr   r   çš™™™™™¹?)rt   r�   )r   r!   r   Úscore_samplesro   Úoffset_)r$   Úclf1Úclf2s      r(   Útest_score_samplesrž   Ú   s,  € Ø�1ˆv˜˜1�v  1˜vÐ&€GÝ¨Ð-Ñ-Ô-×1Ò1°'Ñ:Ô:€DÝÑÔ× Ò  Ñ)Ô)€DÝØ×Ò˜S #˜J˜<Ñ(Ô(Ø×Ò  c 
˜|Ñ,Ô,¨t¬|Ñ;ñô ð õ Ø×Ò˜S #˜J˜<Ñ(Ô(Ø×Ò  c 
˜|Ñ,Ô,¨t¬|Ñ;ñô ð õ Ø×Ò˜S #˜J˜<Ñ(Ô(¨$×*<Ò*<¸sÀC¸j¸\Ñ*JÔ*Jñô ð ð ð r9   c                  óf  — t          d¦  «        } |                      dd¦  «        }t          dd| d¬¦  «        }|                     |¦  «         |j        d         }|                     d¬¦  «         |                     |¦  «         t          |j        ¦  «        dk    sJ ‚|j        d         |u sJ ‚dS )	z/Test iterative addition of iTrees to an iForestr   é   r   r.   T)r   r   r   Ú
warm_start)r   N)r   rk   r   r!   rP   r^   Úlen)r1   rL   rV   Útree_1s       r(   Útest_iforest_warm_startr¤   ë   s¼   € õ ˜QÑ
Ô
€CØ�	Š	�"�aÑÔ€Aõ Ø R°cÀdðñ ô €Cð ‡G‚GˆA�J„J€JàŒ_˜QÔ€Fà‡N‚N €NÑ#Ô#Ð#Ø‡G‚GˆA�J„J€JåˆsŒÑÔ 2Ò%Ð%Ð%Ð%ØŒ?˜1Ô Ð'Ð'Ð'Ð'Ð'Ð'r9   z*sklearn.ensemble._iforest.get_chunk_n_rowsÚreturn_valuer   )Úside_effectzcontamination, n_predict_calls)ru   r   )rA   r   c                 ó@   — t          ||¦  «         | j        |k    sJ ‚d S r„   ©r‚   Ú
call_count©Úmocked_get_chunkrt   Ún_predict_callsr#   s       r(   Útest_iforest_chunks_works1r­     ó/   € õ �}Ð&8Ñ9Ô9Ð9ØÔ&¨/Ò9Ð9Ð9Ð9Ð9Ð9r9   r.   c                 ó@   — t          ||¦  «         | j        |k    sJ ‚d S r„   r¨   rª   s       r(   Útest_iforest_chunks_works2r°     r®   r9   c                  óª  — t          j        d¦  «        } t          ¦   «         }|                     | ¦  «         t           j                             d¦  «        }t          |                     | ¦  «        dk    ¦  «        sJ ‚t          |                     |                     dd¦  «        ¦  «        dk    ¦  «        sJ ‚t          |                     | dz   ¦  «        dk    ¦  «        sJ ‚t          |                     | dz
  ¦  «        dk    ¦  «        sJ ‚t          j	        |                     dd¦  «        dd¦  «        } t          ¦   «         }|                     | ¦  «         t          |                     | ¦  «        dk    ¦  «        sJ ‚t          |                     |                     dd¦  «        ¦  «        dk    ¦  «        sJ ‚t          |                     t          j        d¦  «        ¦  «        dk    ¦  «        sJ ‚|                     dd¦  «        } t          ¦   «         }|                     | ¦  «         t          |                     | ¦  «        dk    ¦  «        sJ ‚t          |                     |                     dd¦  «        ¦  «        dk    ¦  «        sJ ‚t          |                     t          j        d¦  «        ¦  «        dk    ¦  «        sJ ‚dS )z=Test whether iforest predicts inliers when using uniform data)rj   r.   r   r   rj   r.   N)
r   Úonesr   r!   ÚrandomÚRandomStateÚallr"   rk   Úrepeat)rL   Úiforestr1   s      r(   Útest_iforest_with_uniform_datar¸     sl  € õ 	Œ�	ÑÔ€AÝÑÔ€GØ‡K‚K��N„N€Nå
Œ)×
Ò
 Ñ
"Ô
"€Cåˆw�Š˜qÑ!Ô! QÒ&Ñ'Ô'Ð'Ð'Ð'Ýˆw�Š˜sŸyšy¨¨bÑ1Ô1Ñ2Ô2°aÒ7Ñ8Ô8Ð8Ð8Ð8Ýˆw�Š˜q 1™uÑ%Ô%¨Ò*Ñ+Ô+Ð+Ð+Ð+Ýˆw�Š˜q 1™uÑ%Ô%¨Ò*Ñ+Ô+Ð+Ð+Ð+õ 	Œ	�#—)’)˜A˜rÑ"Ô" C¨Ñ+Ô+€AÝÑÔ€GØ‡K‚K��N„N€Nåˆw�Š˜qÑ!Ô! QÒ&Ñ'Ô'Ð'Ð'Ð'Ýˆw�Š˜sŸyšy¨¨bÑ1Ô1Ñ2Ô2°aÒ7Ñ8Ô8Ð8Ð8Ð8Ýˆw�Š�rœw yÑ1Ô1Ñ2Ô2°aÒ7Ñ8Ô8Ð8Ð8Ð8ð 	�	Š	�!�RÑÔ€AÝÑÔ€GØ‡K‚K��N„N€Nåˆw�Š˜qÑ!Ô! QÒ&Ñ'Ô'Ð'Ð'Ð'Ýˆw�Š˜sŸyšy¨¨bÑ1Ô1Ñ2Ô2°aÒ7Ñ8Ô8Ð8Ð8Ð8Ýˆw�Š�rœw yÑ1Ô1Ñ2Ô2°aÒ7Ñ8Ô8Ð8Ð8Ð8Ð8Ð8r9   Úcsc_containerc                 ó�   — t          ddd¬¦  «        \  }} | |¦  «        }t          ddd¬¦  «                             |¦  «         d	S )
zdCheck that Isolation Forest does not segfault with n_jobs=2

    Non-regression test for #23252
    iL rj   r   ©Ú	n_samplesÚ
n_featuresr   r.   é   r   )r   r   r]   N)r   r   r!   )r¹   rL   Ú_s      r(   Ú*test_iforest_with_n_jobs_does_not_segfaultrÀ   =  sT   € õ ¨¸CÈaÐPÑPÔP�D€A€qØˆ�aÑÔ€AÝ °¸QÐ?Ñ?Ô?×CÒCÀAÑFÔFÐFÐFÐFr9   c                  óš  — t          j        d¦  «        } t          j                             d¦  «        }|                      |                     d¦  «        dg¬¦  «        }t          dd¬¦  «        }t          j	        ¦   «         5  t          j
        dt          ¦  «         |                     |¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )
z¾Check that feature names are preserved when contamination is not "auto".

    Feature names are required for consistency checks during scoring.

    Non-regression test for Issue #25844
    Úpandasr   ry   Úa)r0   Úcolumnsgš™™™™™©?r|   r@   N)rC   Úimportorskipr   r³   r´   Ú	DataFramerk   r   rF   rG   rH   rE   r!   )Úpdr1   rL   Úmodels       r(   Ú#test_iforest_preserve_feature_namesrÉ   H  sñ   € õ 
Ô	˜XÑ	&Ô	&€BÝ
Œ)×
Ò
 Ñ
"Ô
"€Cà
�Š˜#Ÿ)š) A™,œ,°°ˆÑ6Ô6€AÝ¨¸$Ð?Ñ?Ô?€Eå	Ô	 Ñ	"Ô	"ð ð ÝÔ˜g¥{Ñ3Ô3Ð3Ø�	Š	�!‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Â0C Ã CÃCc                 ób  — t          ddd¬¦  «        \  }} | |¦  «        }|                     ¦   «          d}t          d|d¬¦  «                             |¦  «        }|                     |¦  «        }|dk                          ¦   «         |j        d         z  t          j        |¦  «        k    sJ ‚dS )	zÀCheck that `IsolationForest` accepts sparse matrix input and float value for
    contamination.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27626
    r,   ry   r   r»   r™   rŽ   )r   rt   r   N)	r   Úsort_indicesr   r!   ro   ÚsumrU   rC   Úapprox)r*   rL   r¿   rt   r·   Ú
X_decisions         r(   Ú-test_iforest_sparse_input_float_contaminationrÏ   Z  s»   € õ ¨¸ÈÐJÑJÔJ�D€A€qØÐ˜ÑÔ€AØ‡N‚NÑÔÐØ€MÝØ mÀ!ðñ ô ç	‚cˆ!�f„fð ð ×*Ò*¨1Ñ-Ô-€JØ˜ŠN×ÒÑ!Ô! A¤G¨A¤JÑ.µ&´-ÀÑ2NÔ2NÒNÐNÐNÐNÐNÐNr9   r   )6Ú__doc__rF   Úunittest.mockr   r   Únumpyr   rC   Úsklearn.datasetsr   r   r   Úsklearn.ensembler   Úsklearn.ensemble._iforestr	   Úsklearn.metricsr
   Úsklearn.model_selectionr   r   Úsklearn.utilsr   Úsklearn.utils._testingr   r   r   r   Úsklearn.utils.fixesr   r   rB   r/   r)   ÚmarkÚparametrizer8   rN   rX   r[   rc   rs   r‚   r†   r‹   r—   rž   r¤   r­   r°   r¸   rÀ   rÉ   rÏ   r   r9   r(   ú<module>rÝ      s¹  ððð ð €€€Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à Ð Ð Ð Ø €€€à JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JÐ JØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø :Ð :Ð :Ð :Ð :Ð :Ø )Ð )Ð )Ð )Ð )Ð )Ø CÐ CÐ CÐ CÐ CÐ CÐ CÐ CØ ,Ð ,Ð ,Ð ,Ð ,Ð ,ðð ð ð ð ð ð ð ð ð ð ð ð ?Ð >Ð >Ð >Ð >Ð >Ð >Ð >ð €y�{„{€Øˆ=‰?Œ?€ðð ð ð  „×ÒÐ+¨^¸nÑ-LÑMÔMð:ð :ñ NÔMð:ð23ð 3ð 3ð,Bð Bð Bð0ð 0ð 0ð&ð &ð &ð(0ð 0ð 0ð0 „×Ò˜¨4°¨.Ñ9Ô9ð1ð 1ñ :Ô9ð1ð0ð 0ð 0ðð ð ðBð Bð Bð(ð ð ð"(ð (ð (ð. €Ø0Ø�Ð+Ð+˜¨Ð*Ð+Ð+ðñ ô ð „×ÒÐ9¸IÀ{Ð;SÑTÔTð:ð :ñ UÔTñ	ô ð
:ð €Ø0Ø�Ð,Ð,˜¨Ð+Ð,Ð,ðñ ô ð „×ÒÐ9¸IÀ{Ð;SÑTÔTð:ð :ñ UÔTñ	ô ð
:ð9ð 9ð 9ðD „×Ò˜¨.Ñ9Ô9ðGð Gñ :Ô9ðGðð ð ð$ „×ÒÐ+¨^¸nÑ-LÑMÔMðOð Oñ NÔMðOð Oð Or9   