
    *YHh                         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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 )Nd      r   g{Gz?皙?K      333333?A   (   2   i  i  i  i  i   if  i     i^     )launch_mcd_on_dataset)global_random_seeds    h/var/www/html/planif/env/lib/python3.12/site-packages/sklearn/covariance/tests/test_robust_covariance.pytest_mcdr      s     #q!T34FG#q"c34FG#q"c34FG $3S#7IJ $3S#7IJ #q#tT38JK "b!S#r3E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
3C	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
3C	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    yy$$T*H>>)Z0D)))4[jANh..q
J7O.PSVVWOO+779%,,T2L#(L \"IT*..t4GAAAWWinnQ/!39:NG###-i81<BCIw66!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GGAJr   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 )Nr
   
   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     yy$$%78H ++b!R(//1K88D**;DEFD 99dBHHdjjmQ%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   9v?r   r   r   Cl?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
KC
++b!
C
((J
KC
++b!
C	$  3Z ]]:S1 	KOOA	 		 	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   g      ?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, S7I
JC*H	nH	5 
  s   &BB
)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    r   r   <module>r      sx        H H <HAw 	:G.H6/@ r   