§
    qŠtjE5  ã            	       ó>  — 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	 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„ Z0d„ Z1 ed ed1i dd i¤Ž¬!¦  «        ej$         %                    d"d#d$g¦  «        ej$        j2        d%„ ¦   «         ¦   «         ¦   «         Z3 ed ed1i dd&i¤Ž¬!¦  «        ej$         %                    d"d#d$g¦  «        ej$        j2        d'„ ¦   «         ¦   «         ¦   «         Z4d(„ Z5ej$         %                    d)e¦  «        d*„ ¦   «         Z6d+„ Z7ej$         %                    dee z   ¦  «        d,„ ¦   «         Z8ej$         %                    d-d.d/g¦  «        ej$         %                    dddg¦  «        d0„ ¦   «         ¦   «         Z9dS )2zD
Testing for Isolation Forest algorithm (sklearn.ensemble.iforest).
é    N)ÚMockÚpatch)Úparallel_backend)Ú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        úa/var/www/html/CA-Chatbot/venv/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_sparser9   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   )Úirisr1   ÚpytestÚwarnsÚUserWarningr	   r"   ÚwarningsÚcatch_warningsÚsimplefilterr    Úint64ÚraisesÚ
ValueErrorr#   )ÚXÚwarn_msgs     r)   Útest_iforest_errorrO   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)rC   r1   r	   r"   Úestimators_Ú	max_depthÚintr    ÚceilÚlog2Úshape)rM   ÚclfÚests      r)   Útest_recalculate_max_depthrY   b   sy   € åŒ	€AÝ
Ñ
Ô
×
Ò
 Ñ
"Ô
"€CØŒð Bð BˆØŒ}¥¥B¤G­B¬G°A´G¸A´JÑ,?Ô,?Ñ$@Ô$@Ñ AÔ AÒAÐAÐAÐAÐAðBð Br:   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š™™™™™Ù?)	rC   r1   r	   r"   Úmax_samples_rV   rD   rE   rF   )rM   rW   rN   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   r0   r1   r	   r"   Ú
set_paramsr#   r   )r$   r2   r%   r&   ÚensembleÚy1Úy2Úy3s           r)   Ú test_iforest_parallel_regressionre   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 "Ñ%Ô%Ð%Ð%Ð%r:   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   rh   éd   )r   r   g\�Âõ(\ï?)r   ÚrandnÚpermutationr    ÚvstackÚuniformr!   r	   r"   Údecision_functionr   )	r$   r2   rM   r%   Ú
X_outliersr&   Úy_testrW   Úy_preds	            r)   Útest_iforest_performanceru   �   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Ò/Ð/Ð/Ð/Ð/Ð/r:   Úcontaminationç      Ð?rB   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éþÿÿÿrg   r   r   é   é   éûÿÿÿé	   ©r   rv   é   )r	   r"   rq   r#   r    ÚminÚmaxr   )rv   r$   rM   rW   Ú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Ð0r:   c                  ó„   — t           j        } t          ¦   «                              | ¦  «        }|j        |j        k    sJ ‚d S ©N)rC   r1   r	   r"   r[   Ú_max_samples)rM   rW   s     r)   Útest_max_samples_consistencyrˆ   ´   s?   € åŒ	€AÝ
Ñ
Ô
×
Ò
 Ñ
"Ô
"€CØÔ˜sÔ/Ò/Ð/Ð/Ð/Ð/Ð/r:   c                  ó  — t          d¦  «        } t          t          j        d d…         t          j        d d…         | ¬¦  «        \  }}}}t          d¬¦  «        }|                     ||¦  «         |                     |¦  «         d S )Nr   r-   r.   gš™™™™™é?)Úmax_features)r   r   r0   r1   Útargetr	   r"   r#   )r2   r%   r&   Úy_trainrs   rW   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�ÑÔÐÐÐr:   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ÐAr:   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   çš™™™™™¹?)rv   r�   )r	   r"   r   Úscore_samplesrq   Ú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ñô ð ð ð r:   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   rm   r	   r"   rQ   r`   Úlen)r2   rM   rW   Ú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Ô Ð'Ð'Ð'Ð'Ð'Ð'r:   z*sklearn.ensemble._iforest.get_chunk_n_rowsÚreturn_valuer   )Úside_effectzcontamination, n_predict_calls)rw   r   )rB   r   c                 ó@   — t          ||¦  «         | j        |k    sJ ‚d S r†   ©r„   Ú
call_count©Úmocked_get_chunkrv   Ún_predict_callsr$   s       r)   Útest_iforest_chunks_works1r¯     ó/   € õ �}Ð&8Ñ9Ô9Ð9ØÔ&¨/Ò9Ð9Ð9Ð9Ð9Ð9r:   r/   c                 ó@   — t          ||¦  «         | j        |k    sJ ‚d S r†   rª   r¬   s       r)   Útest_iforest_chunks_works2r²     r°   r:   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)rl   r/   r   r   rl   r/   N)
r    Úonesr	   r"   ÚrandomÚRandomStateÚallr#   rm   Úrepeat)rM   Úiforestr2   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Ð8r:   Ú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 rl   r   ©Ú	n_samplesÚ
n_featuresr   r/   é   r   )r   r   r^   N)r   r	   r"   )r»   rM   Ú_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ÐFr:   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   r{   Úa)r1   Úcolumnsgš™™™™™©?r~   rA   N)rD   Úimportorskipr    rµ   r¶   Ú	DataFramerm   r	   rG   rH   rI   rF   r"   )Úpdr2   rM   Úmodels       r)   Ú#test_iforest_preserve_feature_namesrË   J  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-   r{   r   r½   r›   r�   )r   rv   r   N)	r   Úsort_indicesr	   r"   rq   ÚsumrV   rD   Úapprox)r+   rM   rÁ   rv   r¹   Ú
X_decisions         r)   Ú-test_iforest_sparse_input_float_contaminationrÑ   \  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ÐNr:   r^   r   r   c           	      óv  — 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          | |d	¬
¦  «        }|                     |¦  «         |                     |¦  «         }|                     |¦  «        }t	          j        |dd	…         ¦  «        t	          j        |d	d…         ¦  «        k    sJ ‚t          |ddgz  ddgz  z   ¦  «         t          | |d¬
¦  «        }|                     |¦  «         t          d|¬¦  «        5  |                     |¦  «        }d	d	d	¦  «         n# 1 swxY w Y   t          ||¦  «         d	S )z5Check that `IsolationForest.predict` is parallelized.ry   rg   r   r   rz   r{   r|   r}   N)r   rv   r^   r   Ú	threadingr_   )	r	   r"   rq   r#   r    r€   r�   r   r   )	r$   rv   r^   rM   rW   r‚   rƒ   Úclf_parallelÚpred_parallels	            r)   Útest_iforest_predict_parallelrÖ   p  s«  € ð
 ˆbˆ�B˜�8˜b "˜X¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÈÈAÀwÐO€Aõ Ø'°}ÈTðñ ô €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å"Ø'°}ÈRðñ ô €Lð ×Ò�QÑÔÐÝ	˜+¨fÐ	5Ñ	5Ô	5ð 0ð 0Ø$×,Ò,¨QÑ/Ô/ˆð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0õ �t˜]Ñ+Ô+Ð+Ð+Ð+s   Ã<DÄD"Ä%D"r   ):Ú__doc__rG   Úunittest.mockr   r   Únumpyr    rD   Újoblibr   Ú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   rC   r0   r*   ÚmarkÚparametrizer9   rO   rY   r\   re   ru   r„   rˆ   r�   r™   r    r¦   Úthread_unsafer¯   r²   rº   rÂ   rË   rÑ   rÖ   r   r:   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ð& „×Ò˜ A q 6Ñ*Ô*Ø„×Ò˜¨4°¨.Ñ9Ô9ð,ð ,ñ :Ô9ñ +Ô*ð,ð ,ð ,r:   