Ë
    8Ò^j\  ã                   ó$  — 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j6                  j9                  ddg«      d„ «       Zy)é    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| «       y )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    úz/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/sklearn/covariance/tests/test_robust_covariance.pyÚtest_mcdr      sŸ   € ô ˜#˜q ! T¨3°Ð4FÔGä˜#˜q " c¨3°Ð4FÔGä˜#˜q " c¨3°Ð4FÔGô ˜$  3¨¨S°#Ð7IÔJô ˜$  3¨¨S°#Ð7IÔJô ˜#˜q # t¨T°3Ð8JÔKô ˜"˜b ! S¨#¨rÐ3EÕFó    c                  ó¨   — t        j                  d«      } d}t        j                  t        |¬«      5  t        | «       d d d «       y # 1 sw Y   y xY w©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c                  óÈ   — t        j                  d«      } t        «       }d}t        j                  t
        |¬«      5  |j                  | «       d d d «       y # 1 sw Y   y xY wr   )r   r   r   r   r    r!   Úfit)r"   Úmcdr#   s      r   Útest_mcd_class_on_invalid_inputr(   0   sI   € Ü
�	‰	�#‹€AÜ
‹+€CØ
3€CÜ	�‰”z¨Ô	-ñ Ø�‰�Œ
÷÷ ñ ús   ½AÁA!c                 óö  — t         j                  j                  |«      }|j                  | |«      }|j	                  | «      d | }	d|j                  d||f¬«      dz
  z  }
||	xx   |
z  cc<   t        j                  | «      j                  t        «      }d||	<   ||   }t        |¬«      j                  |«      }|j                  }|j                  }|j                  }t        j                  |j                  d«      |z
  dz  «      }||k  sJ ‚t        j                  t        |«      |z
  dz  «      }||k  sJ ‚t        j                   |«      |k\  sJ ‚t#        |j%                  |«      |j&                  «       y )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   sa  € ô �y‰y×$Ñ$ TÓ*€HØ�>‰>˜) ZÓ0€Dà×)Ñ)¨)Ó4°[°jÐA€NØ˜h×.Ñ.¨q¸
ÀJÐ7OÐ.ÓPÐSVÑVÑW€OØˆÓ˜OÑ+ÓÜ—7‘7˜9Ó%×,Ñ,¬TÓ2€LØ#(€L�Ñ à�\Ñ"€Iä TÔ*×.Ñ.¨tÓ4€GØ×Ñ€AØ×Ñ€AØ×Ñ€Aä—W‘W˜iŸn™n¨QÓ/°!Ñ3¸Ñ9Ó:€NØ˜GÒ#Ð#Ð#Ü—‘Ô-¨iÓ8¸1Ñ<ÀÑBÓC€IØ�wÒÐÐÜ�6‰6�!‹9˜Ò#Ð#Ð#Ü˜g×1Ñ1°$Ó7¸¿¹ÕGr   c                  óœ   — t         j                  j                  d«      } | j                  d¬«      }t	        «       }|j                  |«       y )Nr   )é   r   r+   )r   r0   r1   Únormalr   r&   )Úrndr"   r'   s      r   Útest_mcd_issue1127rV   S   s:   € ô �)‰)×
Ñ
 Ó
"€CØ�
‰
˜ˆ
Ó€AÜ
‹+€CØ‡G�GˆA…Jr   c                 ó˜  — t         j                  j                  | «      }t        j                  ddd«      j	                  «       }t        j
                  t        t        j                  ||«      «      «      }t        j                  |t        j                  |j                  d   df«      f«      }t        |¬«      j                  |«       y )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‰y×$Ñ$Ð%7Ó8€Hô —+‘+˜b ! RÓ(×/Ñ/Ó1€Kä�8‰8”Dœ×*Ñ*¨;¸ÓDÓEÓF€Dô �9‰9�dœBŸH™H d§j¡j°¡m°QÐ%7Ó8Ð9Ó:€Dô" ˜8Ô$×(Ñ(¨Õ.r   c                  óP  — t        j                  g d¢«      } | j                  dd«      } t        j                  g d¢«      }|j                  dd«      }d}| |fD ]?  }t        j                  t
        |¬«      5  t        «       j                  |«       d d d «       ŒA y # 1 sw Y   ŒLxY w)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Ó
K€CØ
�+‰+�b˜!Ó
€CÜ
�(‰(ÒJÓ
K€CØ
�+‰+�b˜!Ó
€Cð	$ð ð �3ˆZò ˆÜ�]‰]œ:¨SÔ1ñ 	Ü‹K�O‰O˜AÔ÷	ð 	ñ÷	ð 	ús   Á7BÂB%	c                 ó  — 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  |j	                  |«       d d d «       y # 1 sw Y   y xY w)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ƒ   Œ   s†   € ò 	ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚð'	€Aô,  SÐ7IÔ
J€CØ*€HÜ	�‰”n¨HÔ	5ñ Ø�‰�Œ
÷÷ ñ ús   Á&BÂB
zn_samples,n_features)iÐ  rY   c                 ó´  — d}t         j                  j                  |«      }|j                  || f¬«      }t	        |j
                  d¬«      j                  «       }t        ddd|¬«      j                  |j
                  «      j                  }t        j                  |«      }t        j                  |«      t        j                  |«      z  }	|	|kD  sJ d«       ‚y	)
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€CØ�
‰
˜ YÐ/ˆ
Ó0€Aä" 1§3¡3¸Ô=×FÑFÓH€GäØ Ø!Ø Ø+ô		
÷ 
‰ˆQ�S‰S‹ß	‰ð ô �g‰g�gÓ€Gô —V‘V˜G“_¤r§v¡v¨g£Ñ6€Nà˜IÒ%ÐWÐ'WÓ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›      s£   ðó ã Û å ß HÑ HÝ <à€H×ÑÓ×Ñ€ØŠˆAˆ�w€ØŸ™Ñ €	ˆ:òGò.òòHò6ò/ò@ò ðD ‡�×ÑÐ/°*°Ó>ñXó ?ñXr   