o
    \i                     @   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|  t dddddd|  d S )Nd      r   g{Gz?皙?K      333333?A   (   2   i  i  i  i  i   if  i     i^     )launch_mcd_on_dataset)global_random_seed r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/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_input0   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 snJ t ||kswJ 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_covr   r   r   r   8   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_issue1127S   s   rP   c                 C   sf   t j| }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   rA   data_valuesrB   r   r   r   test_mcd_issue3367\   s
   r]   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(   r   r   r   r^   r   r   r   r_   r   zYThe covariance matrix of the support data is equal to 0, try to increase support_fractionr   )r   rU   reshaper   r   r   r   r"   )X_1X_2r    r   r   r   r   #test_mcd_support_covariance_is_zero|   s   rd   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 s[w   Y  d S )N)ffffff@      @ffffff?皙?)皙@      @rg   rh   )g@g	@g?rh   )ffffff@@      ?rh   )      @@rg   rh   )rk   333333@rg   r   )rn   rp   rm   rh   )g@g333333@rg   rh   )ri   rl   rm   r	   )皙@g@rm   rh   )333333@rp   皙?rh   )rr   rj   rg   r	   )g333333@rj   g?r	   )re   rf   rg   r   )g@gffffff@333333?r   )rq   rp   rt   rh   )rk   ro   g      ?rh   )rn   rj   rs   rh   )g@rf   rm   rh   r(   )support_fractionr*   zDeterminant has increasedr   )r   r   warnsRuntimeWarningr"   )r   r   r#   warn_msgr   r   r   test_mcd_increasing_det_warning   s2   "ry   )rW   numpyr   r   sklearnr   sklearn.covariancer   r   r   sklearn.utils._testingr   	load_irisrB   r   X_1dr[   r:   r;   r   r!   r$   r   rP   r]   rd   ry   r   r   r   r   <module>   s"   

	 