a
    ¶Àh|  ã                   @   s¬   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Zedd…d f Zej\ZZdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS )é    N)Údatasets)Ú	MinCovDetÚempirical_covarianceÚfast_mcd)Úassert_array_almost_equalc                 C   s|   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”?çš™™™™™¹?éK   é   ç333333Ó?éA   é(   é2   iè  iÂ  i  i¤  i   if  iô  é   i^  )Úlaunch_mcd_on_dataset)Úglobal_random_seed© r   úk/var/www/html/assistant/venv/lib/python3.9/site-packages/sklearn/covariance/tests/test_robust_covariance.pyÚtest_mcd   s    r   c                  C   sH   t  d¡} d}tjt|d t| ƒ W d   ƒ n1 s:0    Y  d S ©Nr   z'Expected 2D array, got 1D array instead©Úmatch)ÚnpÚarangeÚpytestÚraisesÚ
ValueErrorr   )ÚXÚmsgr   r   r   Útest_fast_mcd_on_invalid_input&   s    
r    c                  C   sP   t  d¡} tƒ }d}tjt|d | | ¡ W d   ƒ n1 sB0    Y  d S r   )r   r   r   r   r   r   Úfit)r   Úmcdr   r   r   r   Útest_mcd_class_on_invalid_input-   s
    
r#   c                 C   s  t j |¡}| | |¡}| | ¡d |… }	d|jd||fdd  }
||	  |
7  < t  | ¡ t¡}d||	< || }t	|d 
|¡}|j}|j}|j}t  | d¡| d ¡}||k sºJ ‚t  t|ƒ| d ¡}||k sÜJ ‚t  |¡|ksîJ ‚t| |¡|jƒ d S )Ng      $@é   ©Úsizeç      à?F©Úrandom_stater   )r   ÚrandomÚRandomStateZrandnZpermutationÚrandintZonesZastypeÚboolr   r!   Z	location_Zcovariance_Zsupport_Úmeanr   Úsumr   ZmahalanobisZdist_)Ú	n_samplesÚ
n_featuresZ
n_outliersZtol_locZtol_covZtol_supportÚseedÚrand_genÚdataZoutliers_indexZoutliers_offsetZinliers_maskZ	pure_dataZmcd_fitÚTÚSÚHZerror_locationZ	error_covr   r   r   r   5   s$    r   c                  C   s,   t j d¡} | jdd}tƒ }| |¡ d S )Nr   )é   r   r%   )r   r*   r+   Únormalr   r!   )Zrndr   r"   r   r   r   Útest_mcd_issue1127P   s    r:   c                 C   sf   t j | ¡}t  ddd¡ ¡ }t  tt ||¡ƒ¡}t  	|t  
|jd df¡f¡}t|d |¡ d S )Néûÿÿÿr   é
   r   r   r(   )r   r*   r+   ZlinspaceÚtolistÚarrayÚlistÚ	itertoolsÚproductZhstackZzerosÚshaper   r!   )r   r3   Zdata_valuesr4   r   r   r   Útest_mcd_issue3367Y   s
    rC   c               	   C   s„   t  g d¢¡} |  dd¡} t  g d¢¡}| dd¡}d}| |fD ]>}tjt|d tƒ  |¡ W d   ƒ q@1 st0    Y  q@d S )N)
r'   r	   r	   r	   ç9´Èv¾Ÿî?r	   r	   r	   ç•C‹lÛ?r	   éÿÿÿÿr   )
r'   r   r   r   rD   r   r   r   rE   r   zYThe covariance matrix of the support data is equal to 0, try to increase support_fractionr   )r   r>   Zreshaper   r   r   r   r!   )ZX_1ZX_2r   r   r   r   r   Ú#test_mcd_support_covariance_is_zeroy   s    ÿrG   c                 C   sÂ   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}d}tjt|d | |¡ W d   ƒ n1 s´0    Y  d S )N)çffffff@ç      @çffffffö?çš™™™™™É?)çš™™™™™@ç      @rJ   rK   )gÍÌÌÌÌÌ@gš™™™™™	@gÍÌÌÌÌÌô?rK   )çffffff@çÍÌÌÌÌÌ@ç      ø?rK   )ç      @çÍÌÌÌÌÌ@rJ   rK   )rN   ç333333@rJ   r   )rQ   rS   rP   rK   )gš™™™™™@g333333@rJ   rK   )rL   rO   rP   r	   )çš™™™™™@gš™™™™™@rP   rK   )ç333333@rS   çš™™™™™ù?rK   )rU   rM   rJ   r	   )g333333@rM   gš™™™™™ñ?r	   )rH   rI   rJ   r   )gÍÌÌÌÌÌ@gffffff@ç333333û?r   )rT   rS   rW   rK   )rN   rR   g      ð?rK   )rQ   rM   rV   rK   )gÍÌÌÌÌÌ@rI   rP   rK   r'   )Zsupport_fractionr)   zDeterminant has increasedr   )r   r   ZwarnsÚRuntimeWarningr!   )r   r   r"   Zwarn_msgr   r   r   Útest_mcd_increasing_det_warning‰   s0    írY   )r@   Únumpyr   r   Zsklearnr   Zsklearn.covariancer   r   r   Zsklearn.utils._testingr   Z	load_irisr4   r   ZX_1drB   r0   r1   r   r    r#   r   r:   rC   rG   rY   r   r   r   r   Ú<module>   s    

	 