Ë
    ÷Q(h²5  ã                   óè  — d dl Z d dlmZ d dlZd dlZd dl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mZ d d	lmZ  ed «      Z e
«       Zej3                  ej4                  j6                  «      Zej:                  e   e_        ej4                  e   e_        d
„ Zd„ Zd„ Z d'd„Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z& e ejN                  d¬«      g«      d„ «       Z(ejR                  jU                  dddg«      d„ «       Z+ejR                  jU                  de«      d„ «       Z,d„ Z-ejR                  jU                  dg d¢«      ejR                  jU                  ddd g«      ejR                  jU                  d!d"d#g«      d$„ «       «       «       Z.ejR                  jU                  dg d¢«      ejR                  jU                  ddd g«      ejR                  jU                  d!d"d#g«      d%„ «       «       «       Z/d&„ Z0y)(é    N)Úsqrt)ÚmetricsÚ	neighbors)Ú	load_iris)Úroc_auc_score)Úcheck_random_state)Úassert_allcloseÚassert_array_equal)Úcheck_outlier_corruptionÚparametrize_with_checks)ÚCSR_CONTAINERSc                 ó&  — t        j                  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        j                  d¬	«      }|j	                  |«      j
                  }t        |j                  |«       t        j                  |d d «      t        j                  |dd  «      kD  sJ ‚t        j                  d
d¬«      j	                  |«      }ddgz  ddgz  z   }t        |j                  «       |«       t        |j                  |«      |«       y )Néþÿÿÿéÿÿÿÿé   é   é   é   éüÿÿÿ©Údtype©Ún_neighborsg      Ð?)Úcontaminationr   é   )ÚnpÚasarrayr   ÚLocalOutlierFactorÚfitÚnegative_outlier_factor_r
   Ú_fit_XÚminÚmaxÚ_predictÚfit_predict)Úglobal_dtypeÚXÚclfÚscoreÚexpected_predictionss        ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/neighbors/tests/test_lof.pyÚtest_lofr,      s  € ä
�
‰
Ø
ˆbˆ�B˜�8˜b "˜X¨¨1 v°°1¨v¸¸1°vÀÀ1¸vÈÈAÀwÐOØô	€Aô ×
&Ñ
&°1Ô
5€CØ�G‰G�A‹J×/Ñ/€EÜ�s—z‘z 1Ô%ô �6‰6�%˜˜�*Ó¤§¡ u¨R¨S zÓ 2Ò2Ð2Ð2ô ×
&Ñ
&°TÀqÔ
I×
MÑ
MÈaÓ
P€CØ ˜s™7 Q¨"¨¡XÑ-ÐÜ�s—|‘|“~Ð';Ô<Ü�s—‘ qÓ)Ð+?Õ@ó    c                 óº  — t        d«      }d|j                  dd«      j                  | d¬«      z  }|d d }|j                  ddd	¬
«      j                  | d¬«      }t        j
                  |dd  |f   }t	        j                  dgdz  dgdz  z   «      }t        j                  d¬«      j                  |«      }|j                  |«       }t        ||«      dkD  sJ ‚y )Nr   ç333333Ó?éx   F©Úcopyéd   r   é   )é   r   )ÚlowÚhighÚsizer   r5   r   T©Únoveltyg®Gáz®ï?)r   ÚrandnÚastypeÚuniformr   Úr_Úarrayr   r   r   Údecision_functionr   )	r&   Úrngr'   ÚX_trainÚ
X_outliersÚX_testÚy_testr(   Úy_preds	            r+   Útest_lof_performancerG   4   së   € ä
˜QÓ
€CØˆc�i‰i˜˜QÓ×&Ñ& |¸%Ð&Ó@Ñ@€AØ��ˆg€Gð —‘ ¨!°'�Ó:×AÑAØ˜5ð Bó €Jô �U‰U�1�S�T�7˜JÐ&Ñ'€FÜ�X‰X�q�c˜B‘h !  r¡Ñ)Ó*€Fô ×
&Ñ
&¨tÔ
4×
8Ñ
8¸Ó
A€Cð ×#Ñ# FÓ+Ð+€Fô ˜ Ó(¨4Ò/Ð/Ñ/r-   c                 óê  — t        j                  ddgddgddgg| ¬«      }t        j                  ddd¬«      j	                  |«      }t        j                  dd¬«      j	                  |«      }dt        d«      z  d	t        d«      z   z  }d	t        d«      z   d	d
t        d«      z  z  d	ddt        d«      z  z   z  z   z  }t        |j                   |||g«       t        |j                   |||g«       t        |j                  ddgg«       |g«       t        |j                  ddgg«       |g«       t        |j                  d	d	gg«       |g«       t        |j                  d	d	gg«       |g«       y )Nr   r   r   çš™™™™™¹?T©r   r   r:   ©r   r:   ç       @g      ð?g      @)	r   r   r   r   r   r   r	   r    Úscore_samples)r&   rB   Úclf1Úclf2Ús_0Ús_1s         r+   Útest_lof_valuesrR   K   si  € ä�j‰j˜1˜a˜& 1 a &¨1¨a¨&Ð1¸ÔF€GÜ×'Ñ'Ø S°$ôç	�cˆ'ƒlð 	ô ×'Ñ'°A¸tÔD×HÑHÈÓQ€DØ
”�S“	‰/˜S¤4¨£9™_Ñ
-€CØ”�a“‰=˜S C¬$¨s«)¡OÑ4°s¸cÀCÌ$ÈqË'ÁMÑ>QÑ7RÑRÑ
S€Cä�T×2Ñ2Ð2°S¸#¸s°OÔDÜ�T×2Ñ2Ð2°S¸#¸s°OÔDä�T×'Ñ'¨#¨s¨¨Ó5Ð5¸°uÔ=Ü�T×'Ñ'¨#¨s¨¨Ó5Ð5¸°uÔ=ä�T×'Ñ'¨#¨s¨¨Ó5Ð5¸°uÔ=Ü�T×'Ñ'¨#¨s¨¨Ó5Ð5¸°uÕ=r-   c                 ó€  — t         j                  j                  |«      }|j                  d«      j	                  | d¬«      }|j                  d«      j	                  | d¬«      }t        j                  |d¬«      }t        j                  ||d¬«      }t        j                  dd¬	«      }|j                  |«       |j                  «       }|j                  |«      }	t        j                  dd
dd¬«      }
|
j                  |«       |
j                  «       }|
j                  |«      }t        ||«       t        |	|«       y)z!Tests LOF with a distance matrix.)é
   r4   Fr1   )r   r4   Ú	euclidean)Úmetricr   TrK   ÚbruteÚprecomputed)r   Ú	algorithmrV   r:   N)r   ÚrandomÚRandomStateÚrandom_sampler<   r   Úpairwise_distancesr   r   r   r$   Úpredictr	   )r&   Úrandom_staterA   r'   ÚYÚDXXÚDYXÚlof_XÚpred_X_XÚpred_X_YÚlof_DÚpred_D_XÚpred_D_Ys                r+   Útest_lof_precomputedri   _   s  € ô �)‰)×
Ñ
 Ó
-€CØ×Ñ˜'Ó"×)Ñ)¨,¸UÐ)ÓC€AØ×Ñ˜&Ó!×(Ñ(¨¸EÐ(ÓB€AÜ
×
$Ñ
$ Q¨{Ô
;€CÜ
×
$Ñ
$ Q¨°+Ô
>€Cä×(Ñ(°QÀÔE€EØ	‡I�Iˆa„LØ�~‰~Ó€HØ�}‰}˜QÓ€Hô ×(Ñ(Ø °Èô€Eð 
‡I�Iˆc„NØ�~‰~Ó€HØ�}‰}˜SÓ!€Hä�H˜hÔ'Ü�H˜hÕ'r-   c                  óÊ  — t         j                  } t        j                  d¬«      j	                  | «      }|j
                  | j                  d   dz
  k(  sJ ‚t        j                  d¬«      }d}t        j                  t        t        j                  |«      ¬«      5  |j	                  | «       d d d «       |j
                  | j                  d   dz
  k(  sJ ‚y # 1 sw Y   Œ+xY w)Néô  r   r   r   z*n_neighbors will be set to (n_samples - 1)©Úmatch)ÚirisÚdatar   r   r   Ún_neighbors_ÚshapeÚpytestÚwarnsÚUserWarningÚreÚescape)r'   r(   Úmsgs      r+   Útest_n_neighbors_attributerx   y   s±   € Ü�	‰	€AÜ
×
&Ñ
&°3Ô
7×
;Ñ
;¸AÓ
>€CØ×Ñ˜qŸw™w q™z¨A™~Ò-Ð-Ð-ä
×
&Ñ
&°3Ô
7€CØ
6€CÜ	�‰”k¬¯©°3«Ô	8ñ Ø�‰�Œ
÷à×Ñ˜qŸw™w q™z¨A™~Ò-Ð-Ñ-÷ð ús   ÂCÃC"c                 ó  — t        j                  ddgddgddgg| ¬«      }t        j                  ddgg| ¬«      }t        j                  ddd¬«      j	                  |«      }t        j                  dd¬«      j	                  |«      }|j                  |«      }|j                  |«      }|j                  |«      }|j                  |«      }t        |||j                  z   «       t        |||j                  z   «       t        ||«       y )	Nr   r   r   rL   rI   TrJ   rK   )	r   r   r   r   r   rM   r@   r	   Úoffset_)	r&   rB   rD   rN   rO   Úclf1_scoresÚclf1_decisionsÚclf2_scoresÚclf2_decisionss	            r+   Útest_score_samplesr   …   sù   € Ü�j‰j˜1˜a˜& 1 a &¨1¨a¨&Ð1¸ÔF€GÜ�Z‰Z˜#˜s˜˜¨LÔ9€FÜ×'Ñ'Ø S°$ôç	�cˆ'ƒlð 	ô ×'Ñ'°A¸tÔD×HÑHÈÓQ€Dà×$Ñ$ VÓ,€KØ×+Ñ+¨FÓ3€Nà×$Ñ$ VÓ,€KØ×+Ñ+¨FÓ3€NäØØ˜Ÿ™Ñ%ôô ØØ˜Ÿ™Ñ%ôô �K Õ-r-   c                  óò  — t         j                  } t        j                  «       }|j	                  | «       dD ]’  }d|› d�}dj                  |«      }t        j                  t        |¬«      5 }t        ||«       d d d «       t        j                  j                  t        «      sJ ‚|t        |j                  j                  «      v rŒ’J ‚ t        j                  d¬«      }d}d	}t        j                  t        |¬«      5 }t        |d
«       d d d «       t        j                  j                  t        «      sJ ‚|t        |j                  j                  «      v sJ ‚y # 1 sw Y   ŒèxY w# 1 sw Y   Œ_xY w)N)r^   r@   rM   z''LocalOutlierFactor' has no attribute 'ú'z&{} is not available when novelty=Falserl   Tr9   z3'LocalOutlierFactor' has no attribute 'fit_predict'z.fit_predict is not available when novelty=Truer%   )rn   ro   r   r   r   Úformatrr   ÚraisesÚAttributeErrorÚgetattrÚ
isinstanceÚvalueÚ	__cause__Ústr)r'   r(   ÚmethodÚ	outer_msgÚ	inner_msgÚ	exec_infos         r+   Útest_novelty_errorsrŽ   ž   s?  € Ü�	‰	€Aô ×
&Ñ
&Ó
(€CØ‡G�GˆA„JàCò ;ˆØ=¸f¸XÀQÐGˆ	Ø<×CÑCÀFÓKˆ	Ü�]‰]œ>°Ô;ð 	!¸yÜ�C˜Ô ÷	!ô ˜)Ÿ/™/×3Ñ3´^ÔDÐDÐDØœC 	§¡× 9Ñ 9Ó:Ò:Ð:Ð:ð;ô ×
&Ñ
&¨tÔ
4€CàE€IØ@€IÜ	�‰”~¨YÔ	7ð $¸9Ü��]Ô#÷$ô �i—o‘o×/Ñ/´Ô@Ð@Ð@Øœ˜IŸO™O×5Ñ5Ó6Ñ6Ð6Ñ6÷	!ð 	!ú÷$ð $ús   Á-E!ÄE-Å!E*	Å-E6c                 ó"  — t         j                  j                  | «      }t        j                  «       }|j                  |«       |j                  }t        j                  d¬«      }|j                  |«       |j                  }t        ||«       y )NTr9   )rn   ro   r<   r   r   r   r    r	   )r&   r'   Úclf_1Úscores_1Úclf_2Úscores_2s         r+   Útest_novelty_training_scoresr”   º   sp   € ô 	�	‰	×Ñ˜Ó&€Aô ×(Ñ(Ó*€EØ	‡I�Iˆa„LØ×-Ñ-€Hô ×(Ñ(°Ô6€EØ	‡I�Iˆa„LØ×-Ñ-€Hä�H˜hÕ'r-   c                  ó–  — ddgddgddgg} t        j                  d¬«      }|j                  | «       t        |d«      sJ ‚t        |d«      sJ ‚t        |d«      sJ ‚t        |d«      rJ ‚t        j                  d	¬«      }|j                  | «       t        |d«      sJ ‚t        |d«      rJ ‚t        |d«      rJ ‚t        |d«      rJ ‚y )
Nr   r   Tr9   r^   r@   rM   r%   F)r   r   r   Úhasattr)r'   r(   s     r+   Útest_hasattr_predictionr—   Ì   sÙ   € à
ˆQˆ�!�Q�˜!˜Q˜Ð €Aô ×
&Ñ
&¨tÔ
4€CØ‡G�GˆA„JÜ�3˜	Ô"Ð"Ð"Ü�3Ð+Ô,Ð,Ð,Ü�3˜Ô(Ð(Ð(Ü�s˜MÔ*Ð*Ð*ô ×
&Ñ
&¨uÔ
5€CØ‡G�GˆA„JÜ�3˜Ô&Ð&Ð&Ü�s˜IÔ&Ð&Ð&Ü�sÐ/Ô0Ð0Ð0Ü�s˜OÔ,Ð,Ð,Ð,r-   Tr9   c                 ó   —  || «       y )N© )Ú	estimatorÚchecks     r+   Útest_novelty_true_common_testsrœ   á   s   € ñ 
ˆ)Õr-   Úexpected_outliersé   é5   c                 ó  — t         j                  }|j                  d   }t        | «      |z  }t	        j
                  |¬«      }|j                  |«      }t        j                  |dk7  «      }|| k7  r|j                  }t        || |«       y y )Nr   )r   r   )rn   ro   rq   Úfloatr   r   r%   r   Úsumr    r   )r�   r'   Ú	n_samplesr   r(   rF   Únum_outliersÚy_decs           r+   Útest_predicted_outlier_numberr¦   è   s€   € ô 	�	‰	€AØ—‘˜‘
€IÜÐ+Ó,¨yÑ8€Mä
×
&Ñ
&°]Ô
C€CØ�_‰_˜QÓ€Fä—6‘6˜& A™+Ó&€LØÐ(Ò(Ø×,Ñ,ˆÜ  Ð/@À%ÕHð )r-   Úcsr_containerc                 ó2  —  | t         j                  «      }t        j                  d¬«      }|j	                  |«       |j                  |«       |j                  |«       |j                  |«       t        j                  d¬«      }|j                  |«       y )NTr9   F)	rn   ro   r   r   r   r^   rM   r@   r%   )r§   r'   Úlofs      r+   Útest_sparserª   ù   sp   € ñ
 	”d—i‘iÓ €Aä
×
&Ñ
&¨tÔ
4€CØ‡G�GˆA„JØ‡K�K�„NØ×Ñ�aÔØ×Ñ˜!Ôä
×
&Ñ
&¨uÔ
5€CØ‡O�O�AÕr-   c                  óJ  — t        j                  d«      } d}t        j                  t        |¬«      5  t        j                  d¬«      j                  | dd «      }ddd«       t        j                  d¬«      j                  | dd «      }|j                  dk(  sJ ‚d}t        j                  t        |¬«      5  |j                  dd¬«       ddd«       |j                  dd¬«      \  }}|j                  d	k(  sJ ‚|j                  d	k(  sJ ‚d
}t        j                  t        |¬«      5  |j                  | d¬«       ddd«       |j                  | d¬«      \  }}|j                  dk(  sJ ‚|j                  dk(  sJ ‚y# 1 sw Y   �Œ&xY w# 1 sw Y   ŒÀxY w# 1 sw Y   Œ[xY w)zªCheck that we raise a proper error message when n_neighbors == n_samples.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/17207
    )é   r¬   z[Expected n_neighbors < n_samples_fit, but n_neighbors = 1, n_samples_fit = 1, n_samples = 1rl   r   r   Nr   z[Expected n_neighbors < n_samples_fit, but n_neighbors = 2, n_samples_fit = 2, n_samples = 2)r   r   z\Expected n_neighbors <= n_samples_fit, but n_neighbors = 3, n_samples_fit = 2, n_samples = 7r   )r¬   r   )r   Úonesrr   rƒ   Ú
ValueErrorr   r   r   Ún_samples_fit_Ú
kneighborsrq   )r'   rw   r©   Ú	distancesÚindicess        r+   Ú$test_lof_error_n_neighbors_too_larger³   
  s˜  € ô 	�‰�‹€Að	+ð ô 
�‰”z¨Ô	-ñ EÜ×*Ñ*°qÔ9×=Ñ=¸aÀÀ¸eÓDˆ÷Eô ×
&Ñ
&°1Ô
5×
9Ñ
9¸!¸B¸Q¸%Ó
@€CØ×Ñ Ò"Ð"Ð"ð	+ð ô 
�‰”z¨Ô	-ñ ,Ø�‰�t¨ˆÔ+÷,ð Ÿ™¨¸!˜Ó<Ñ€IˆwØ�?‰?˜fÒ$Ð$Ð$Ø�=‰=˜FÒ"Ð"Ð"ð	+ð ô 
�‰”z¨Ô	-ñ )Ø�‰�q aˆÔ(÷)ð 	�‰�q aˆÓ(ñØØà�?‰?˜fÒ$Ð$Ð$Ø�=‰=˜FÒ"Ð"Ñ"÷;Eñ Eú÷,ð ,ú÷)ð )ús#   ³)F Â:FÄ+FÆ F
ÆFÆF"rY   )ÚautoÚ	ball_treeÚkd_treerW   r:   Fr   g      à?r´   c                 ó>  — t         j                  j                  | d¬«      }t        j                  d|||¬«      }|j                  |«       |j                  j                  | k(  sJ ‚dD ]2  }t        ||«      sŒ t        ||«      |«      }|j                  | k(  rŒ2J ‚ y)zECheck that the fitted attributes are stored using the data type of X.Fr1   r   )r   rY   r   r:   )rM   r@   N)
rn   ro   r<   r   r   r   r    r   r–   r…   )r&   rY   r   r:   r'   ÚisorŠ   rF   s           r+   Ú!test_lof_input_dtype_preservationr¹   6  sœ   € ô
 	�	‰	×Ñ˜¨EÐÓ2€Aä
×
&Ñ
&Ø ¸-ÐQXô€Cð ‡G�GˆA„Jà×'Ñ'×-Ñ-°Ò=Ð=Ð=à8ò 0ˆÜ�3˜ÕØ)”W˜S &Ó)¨!Ó,ˆFØ—<‘< <Ó/Ð/Ð/ñ0r-   c                 ó°  — t         j                  dd }t         j                  dd }t        j                  ||gd¬«      j	                  t        j
                  «      }t        j                  | ||¬«      }|j	                  t        j
                  d¬«      }|j                  |«       t        j                  | ||¬«      }|j	                  t        j                  d¬«      }	|j                  |	«       t        |j                  |j                  «       d	D ]A  }
t        ||
«      sŒ t        ||
«      |«      } t        ||
«      |	«      }t        ||d
¬«       ŒC y)z?Check the equivalence of the results with 32 and 64 bits input.Né2   éûÿÿÿr   )Úaxis)rY   r:   r   Tr1   )rM   r@   r^   r%   g-Cëâ6*?)Úatol)rn   ro   r   Úconcatenater<   Úfloat32r   r   r   Úfloat64r	   r    r–   r…   )rY   r:   r   ÚinliersÚoutliersr'   Úlof_32ÚX_32Úlof_64ÚX_64rŠ   Ú	y_pred_32Ú	y_pred_64s                r+   Útest_lof_dtype_equivalencerÊ   J  s  € ô �i‰i˜˜ˆn€GÜ�y‰y˜˜ˆ~€Hô 	�‰˜ Ð*°Ô3×:Ñ:¼2¿:¹:ÓF€Aä×)Ñ)Ø W¸Mô€Fð �8‰8”B—J‘J Tˆ8Ó*€DØ
‡J�JˆtÔä×)Ñ)Ø W¸Mô€Fð �8‰8”B—J‘J Tˆ8Ó*€DØ
‡J�JˆtÔä�F×3Ñ3°V×5TÑ5TÔUàRò ?ˆÜ�6˜6Õ"Ø/œ ¨Ó/°Ó5ˆIØ/œ ¨Ó/°Ó5ˆIÜ˜I y°vÖ>ñ	?r-   c            
      óæ  — t         j                  j                  d«      } | j                  t        j                  dgdz  t        j
                  ddd¬«      | j                  d«      dz  g«      «      }|j                  d	d
«      }d}t        j                  dd¬«      }t        j                  t        t        j                  |«      ¬«      5  |j                  |«       ddd«       y# 1 sw Y   yxY w)zÝ
    Check that LocalOutlierFactor raises a warning when duplicate values
    in the training data cause inaccurate results.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27839
    r   rI   iè  r/   i¸  )Únumrk   r3   r   r   znDuplicate values are leading to incorrect results. Increase the number of neighbors for more accurate results.r   )r   r   rl   N)r   rZ   Údefault_rngÚpermutationÚhstackÚlinspaceÚreshaper   r   rr   rs   rt   ru   rv   r%   )rA   Úxr'   Ú	error_msgr©   s        r+   Útest_lof_duplicate_samplesrÔ   k  sË   € ô �)‰)×
Ñ
 Ó
"€Cà�‰Ü
�	‰	à�˜‘Ü—‘˜C ¨$Ô/Ø—
‘
˜3“ #Ñ%ðó	
ó	€Að 	
�	‰	�"�aÓ€Að	Fð ô
 ×
&Ñ
&°1ÀCÔ
H€Cô 
�‰”k¬¯©°9Ó)=Ô	>ñ Ø�‰˜Ô÷÷ ñ ús   ÃC'Ã'C0)é*   )1ru   Úmathr   Únumpyr   rr   Úsklearnr   r   Úsklearn.datasetsr   Úsklearn.metricsr   Úsklearn.utilsr   Úsklearn.utils._testingr	   r
   Úsklearn.utils.estimator_checksr   r   Úsklearn.utils.fixesr   rA   rn   rÎ   Útargetr8   Úpermro   r,   rG   rR   ri   rx   r   rŽ   r”   r—   r   rœ   ÚmarkÚparametrizer¦   rª   r³   r¹   rÊ   rÔ   r™   r-   r+   ú<module>rã      sí  ðó 
Ý ã Û ç &Ý &Ý )Ý ,ß F÷õ /ñ ˜Ó€Ùƒ{€Ø
‡��t—{‘{×'Ñ'Ó(€Ø�I‰I�d‰O€„	Ø�k‰k˜$Ñ€„òAò,0ò.>ó((ò4	.ò.ò27ò8(ò$-ñ* Ð6˜)×6Ñ6¸tÔDÐEÓFñó Gðð ‡�×ÑÐ,¨r°2¨hÓ7ñIó 8ðIð  ‡�×Ñ˜¨.Ó9ñó :ðò )#ðX ‡�×Ñ˜Ò&OÓPØ‡�×Ñ˜ T¨5 MÓ2Ø‡�×Ñ˜¨3°¨-Ó8ñ0ó 9ó 3ó Qð0ð" ‡�×Ñ˜Ò&OÓPØ‡�×Ñ˜ T¨5 MÓ2Ø‡�×Ñ˜¨3°¨-Ó8ñ?ó 9ó 3ó Qð?ó<r-   