o
    tBh)                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ d dl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)assert_array_almost_equal)datasets)empirical_covariance	MinCovDet)fast_mcdc                   C   sp   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 )Nd      r   g{Gz?皙?P      F   (   2   i  i  i  i  i   if  i     gMbP?i^  )launch_mcd_on_dataset r   r   /var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/covariance/tests/test_robust_covariance.pytest_mcd   s   r   c                  C   sJ   t d} d}tjt|d t|  W d    d S 1 sw   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   sR   t d} t }d}tjt|d ||  W d    d S 1 s"w   Y  d S r   )r   r   r   r   r   r   fit)r   mcdr   r   r   r   test_mcd_class_on_invalid_input2   s   
"r!   c                 C   s  t jd}|| |}|| 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 snJ t ||kswJ t|||j d S )Nr   g      $@   size      ?Frandom_state)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rand_gendataoutliers_indexoutliers_offsetinliers_mask	pure_datamcd_fitTSHerror_location	error_covr   r   r   r   :   s$   r   c                  C   s,   t jd} | jdd}t }|| d S )Nr   )   r   r#   )r   r(   r)   normalr   r   )rndr   r    r   r   r   test_mcd_issue1127V   s   rL   c                  C   sf   t jd} t ddd }t tt||}t 	|t 
|jd dff}t| d| d S )Nr   r   
   r   r&   )r   r(   r)   linspacetolistarraylist	itertoolsproducthstackzerosshaper   r   )r=   data_valuesr>   r   r   r   test_mcd_issue3367_   s
   rY   c               	   C   s   t g d} | dd} t g d}|dd}d}| |fD ]}tjt|d t | W d    n1 s:w   Y  q d S )N)
r%   r	   r	   r	   9v?r	   r	   r	   Cl?r	   r   )
r%   333333?r]   r]   rZ   r]   r]   r]   r[   r]   zYThe covariance matrix of the support data is equal to 0, try to increase support_fractionr   )r   rQ   reshaper   r   r   r   r   )X_1X_2r   r   r   r   r   #test_mcd_support_covariance_is_zero   s   ra   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    d S 1 sZw   Y  d S )N)ffffff@      @ffffff?皙?)皙@      @rd   re   )g@g	@g?re   )ffffff@@      ?re   )      @@rd   re   )rh   333333@rd   r]   )rk   rm   rj   re   )g@g333333@rd   re   )rf   ri   rj   r	   )皙@g@rj   re   )333333@rm   皙?re   )ro   rg   rd   r	   )g333333@rg   g?r	   )rb   rc   rd   r]   )g@gffffff@333333?r]   )rn   rm   rq   re   )rh   rl   g      ?re   )rk   rg   rp   re   )g@rc   rj   re   r   r&   zDeterminant has increasedr   )r   r   warnsRuntimeWarningr   )r   r    warn_msgr   r   r   test_mcd_increasing_det_warning   s2   
"ru   )rS   numpyr   r   sklearn.utils._testingr   sklearnr   sklearn.covariancer   r   r   	load_irisr>   r   X_1drW   r7   r8   r   r   r!   r   rL   rY   ra   ru   r   r   r   r   <module>   s$   

	 