§
    qŠtj\  ã                   ó  — d dl 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  ej        ¦   «         j        Zedd…d f         Zej        \  ZZd„ Zd„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Zd„ Zej                             ddg¦  «        d„ ¦   «         ZdS )é    N)Údatasets)Ú	MinCovDetÚempirical_covarianceÚfast_mcd)Úassert_array_almost_equalc           	      ó,  — t          dddddd| ¦  «         t          dddddd	| ¦  «         t          ddd
ddd| ¦  «         t          dddddd| ¦  «         t          dddddd| ¦  «         t          dddddd| ¦  «         t          dddddd| ¦  «         d S )Néd   é   r   g{®Gáz”?çš™™™™™¹?éJ   é   ç333333Ó?éA   é(   é2   iè  iÂ  i  i¤  i   if  iô  é   i^  é   )Úlaunch_mcd_on_dataset)Úglobal_random_seeds    úm/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sklearn/covariance/tests/test_robust_covariance.pyÚtest_mcdr      sÏ   € õ ˜#˜q ! T¨3°Ð4FÑGÔGÐGå˜#˜q " c¨3°Ð4FÑGÔGÐGå˜#˜q " c¨3°Ð4FÑGÔGÐGõ ˜$  3¨¨S°#Ð7IÑJÔJÐJõ ˜$  3¨¨S°#Ð7IÑJÔJÐJõ ˜#˜q # t¨T°3Ð8JÑKÔKÐKõ ˜"˜b ! S¨#¨rÐ3EÑFÔFÐFÐFÐFó    c                  ó¸   — t          j        d¦  «        } d}t          j        t          |¬¦  «        5  t          | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S ©Nr	   z'Expected 2D array, got 1D array instead©Úmatch)ÚnpÚarangeÚpytestÚraisesÚ
ValueErrorr   )ÚXÚmsgs     r   Útest_fast_mcd_on_invalid_inputr$   )   s˜   € Ý
Œ	�#‰Œ€AØ
3€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ý�‰Œˆðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   ²AÁAÁAc                  óà   — t          j        d¦  «        } t          ¦   «         }d}t          j        t
          |¬¦  «        5  |                     | ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S r   )r   r   r   r   r    r!   Úfit)r"   Úmcdr#   s      r   Útest_mcd_class_on_invalid_inputr(   0   s¥   € Ý
Œ	�#‰Œ€AÝ
‰+Œ+€CØ
3€CÝ	Œ•z¨Ð	-Ñ	-Ô	-ð ð Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á A#Á#A'Á*A'c                 ó6  — t           j                             |¦  «        }|                     | |¦  «        }|                     | ¦  «        d |…         }	d|                     d||f¬¦  «        dz
  z  }
||	xx         |
z  cc<   t          j        | ¦  «                             t          ¦  «        }d||	<   ||         }t          |¬¦  «         
                    |¦  «        }|j        }|j        }|j        }t          j        |                     d¦  «        |z
  dz  ¦  «        }||k     sJ ‚t          j        t          |¦  «        |z
  dz  ¦  «        }||k     sJ ‚t          j        |¦  «        |k    sJ ‚t#          |                     |¦  «        |j        ¦  «         d S )Ng      $@é   ©Úsizeç      à?F©Úrandom_stater   )r   ÚrandomÚRandomStateÚrandnÚpermutationÚrandintÚonesÚastypeÚboolr   r&   Ú	location_Úcovariance_Úsupport_Úmeanr   Úsumr   ÚmahalanobisÚdist_)Ú	n_samplesÚ
n_featuresÚ
n_outliersÚtol_locÚtol_covÚtol_supportÚseedÚrand_genÚdataÚoutliers_indexÚoutliers_offsetÚinliers_maskÚ	pure_dataÚmcd_fitÚTÚSÚHÚerror_locationÚ	error_covs                      r   r   r   8   s›  € õ Œy×$Ò$ TÑ*Ô*€HØ�>Š>˜) ZÑ0Ô0€Dà×)Ò)¨)Ñ4Ô4°[°j°[ÔA€NØ˜h×.Ò.¨q¸
ÀJÐ7OÐ.ÑPÔPÐSVÑVÑW€OØˆÐÐÔ˜OÑ+ÐÐÑÝ”7˜9Ñ%Ô%×,Ò,­TÑ2Ô2€LØ#(€L�Ñ à�\Ô"€Iå TÐ*Ñ*Ô*×.Ò.¨tÑ4Ô4€GØÔ€AØÔ€AØÔ€Aå”W˜iŸnšn¨QÑ/Ô/°!Ñ3¸Ñ9Ñ:Ô:€NØ˜GÒ#Ð#Ð#Ð#Ý”Õ-¨iÑ8Ô8¸1Ñ<ÀÑBÑCÔC€IØ�wÒÐÐÐÝŒ6�!‰9Œ9˜Ò#Ð#Ð#Ð#Ý˜g×1Ò1°$Ñ7Ô7¸¼ÑGÔGÐGÐGÐGr   c                  ó¶   — t           j                             d¦  «        } |                      d¬¦  «        }t	          ¦   «         }|                     |¦  «         d S )Nr   )é   r   r+   )r   r0   r1   Únormalr   r&   )Úrndr"   r'   s      r   Útest_mcd_issue1127rV   S   sH   € õ Œ)×
Ò
 Ñ
"Ô
"€CØ�
Š
˜ˆ
ÑÔ€AÝ
‰+Œ+€CØ‡G‚GˆA�J„J€J€J€Jr   c                 ó¬  — t           j                             | ¦  «        }t          j        ddd¦  «                             ¦   «         }t          j        t          t          j        ||¦  «        ¦  «        ¦  «        }t          j	        |t          j
        |j        d         df¦  «        f¦  «        }t          |¬¦  «                             |¦  «         d S )Néûÿÿÿr
   é
   r   r   r.   )r   r0   r1   ÚlinspaceÚtolistÚarrayÚlistÚ	itertoolsÚproductÚhstackÚzerosÚshaper   r&   )r   rF   Údata_valuesrG   s       r   Útest_mcd_issue3367rd   \   s±   € õ Œy×$Ò$Ð%7Ñ8Ô8€Hõ ”+˜b ! RÑ(Ô(×/Ò/Ñ1Ô1€KåŒ8•D�Ô*¨;¸ÑDÔDÑEÔEÑFÔF€Dõ Œ9�d�BœH d¤j°¤m°QÐ%7Ñ8Ô8Ð9Ñ:Ô:€Dõ" ˜8Ð$Ñ$Ô$×(Ò(¨Ñ.Ô.Ð.Ð.Ð.r   c                  óp  — t          j        g d¢¦  «        } |                      dd¦  «        } t          j        g d¢¦  «        }|                     dd¦  «        }d}| |fD ]V}t          j        t
          |¬¦  «        5  t          ¦   «                              |¦  «         d d d ¦  «         n# 1 swxY w Y   ŒWd S )N)
r-   r   r   r   ç9´Èv¾Ÿî?r   r   r   ç�•C‹lÛ?r   éÿÿÿÿr   )
r-   r   r   r   rf   r   r   r   rg   r   zYThe covariance matrix of the support data is equal to 0, try to increase support_fractionr   )r   r\   Úreshaper   r    r!   r   r&   )ÚX_1ÚX_2r#   r"   s       r   Ú#test_mcd_support_covariance_is_zerorl   |   s   € õ Œ(ÐJÐJÐJÑ
KÔ
K€CØ
�+Š+�b˜!Ñ
Ô
€CÝ
Œ(ÐJÐJÐJÑ
KÔ
K€CØ
�+Š+�b˜!Ñ
Ô
€Cð	$ð ð �3ˆZð ð ˆÝŒ]�:¨SÐ1Ñ1Ô1ð 	ð 	Ý‰KŒK�OŠO˜AÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	øðð s   Á<"B*Â*B.	Â1B.	c                 ó4  — g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g}t          d| ¬¦  «        }d}t          j        t          |¬¦  «        5  |                     |¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )N)çffffff@ç      @çffffffö?çš™™™™™É?)çš™™™™™@ç      @rp   rq   )gÍÌÌÌÌÌ@gš™™™™™	@gÍÌÌÌÌÌô?rq   )çffffff@çÍÌÌÌÌÌ@ç      ø?rq   )ç      @çÍÌÌÌÌÌ@rp   rq   )rt   ç333333@rp   r   )rw   ry   rv   rq   )gš™™™™™@g333333@rp   rq   )rr   ru   rv   r   )çš™™™™™@gš™™™™™@rv   rq   )ç333333@ry   çš™™™™™ù?rq   )r{   rs   rp   r   )g333333@rs   gš™™™™™ñ?r   )rn   ro   rp   r   )gÍÌÌÌÌÌ@gffffff@ç333333û?r   )rz   ry   r}   rq   )rt   rx   ç      ð?rq   )rw   rs   r|   rq   )gÍÌÌÌÌÌ@ro   rv   rq   r-   )Úsupport_fractionr/   zDeterminant has increasedr   )r   r   ÚwarnsÚRuntimeWarningr&   )r   r"   r'   Úwarn_msgs       r   Útest_mcd_increasing_det_warningrƒ   Œ   sX  € ð 	ÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐØÐÐð'	€Aõ,  SÐ7IÐ
JÑ
JÔ
J€CØ*€HÝ	Œ•n¨HÐ	5Ñ	5Ô	5ð ð Ø�Š�‰
Œ
ˆ
ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s   Á*BÂBÂBzn_samples,n_features)iÐ  rY   c                 óÂ  — d}t           j                             |¦  «        }|                     || f¬¦  «        }t	          |j        d¬¦  «                             ¦   «         }t          ddd|¬¦  «                             |j        ¦  «        j	        }t          j
        |¦  «        }t          j        |¦  «        t          j        |¦  «        z  }	|	|k    s
J d¦   «         ‚d	S )
zøCheck that MinCovDet does not underestimate the empirical
    variance on Gaussian data.

    A large sample size and n_features makes the test robust.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/23162
    g…ëQ¸…ï?r+   T)Úassume_centeredr~   F)r   Ústore_precisionr…   r/   z.MinCovDet underestimates the Gaussian varianceN)r   r0   Údefault_rngrT   r   rM   Údiagonalr   r&   r9   Údiagr<   )
r?   r@   r   Ú	thresholdÚrngÚxÚvar_empÚcov_mcdÚvar_mcdÚmean_var_ratios
             r   Útest_mincovdet_bias_on_normalr‘   ®   sÙ   € ð €IÝ
Œ)×
Ò
Ð 2Ñ
3Ô
3€CØ�
Š
˜ YÐ/ˆ
Ñ0Ô0€Aå" 1¤3¸Ð=Ñ=Ô=×FÒFÑHÔH€GåØ Ø!Ø Ø+ð		
ñ 	
ô 	
÷ 
ŠˆQŒS‰ŒÜ	ð õ Œg�gÑÔ€Gõ ”V˜G‘_”_¥r¤v¨g¡¤Ñ6€Nà˜IÒ%Ð%Ð%Ð'WÑ%Ô%Ð%Ð%Ð%r   )r^   Únumpyr   r   Úsklearnr   Úsklearn.covariancer   r   r   Úsklearn.utils._testingr   Ú	load_irisrG   r"   ÚX_1drb   r?   r@   r   r$   r(   r   rV   rd   rl   rƒ   ÚmarkÚparametrizer‘   © r   r   ú<module>r›      sZ  ðð Ð Ð Ð à Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ <Ð <Ð <Ð <Ð <Ð <à€HÔÑÔÔ€ØˆˆˆˆAˆ„w€ØœÑ €	ˆ:ðGð Gð Gð.ð ð ðð ð ðHð Hð Hð6ð ð ð/ð /ð /ð@ð ð ð ð ð ðD „×ÒÐ/°*°Ñ>Ô>ðXð Xñ ?Ô>ðXð Xð Xr   