
    {Kg                         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|        y )Nd      r   g{Gz?皙?K      333333?A   (   2   i  i  i  i  i   if  i     i^  )launch_mcd_on_dataset)global_random_seeds    s/home/alanp/www/video.onchill/myenv/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    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#   )   s5    
		#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   s@    
		#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   r/   r0   normalr   r%   )rndr!   r&   s      r   test_mcd_issue1127rU   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   r/   r0   linspacetolistarraylist	itertoolsproducthstackzerosshaper   r%   )r   rE   data_valuesrF   s       r   test_mcd_issue3367rc   \   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   re   r   r   r   rf   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_zerork   |   s     ((J
KC
++b!
C
((J
KC
++b!
C	$  3Z]]:S1KOOA 21 11s   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?皙?)皙@      @ro   rp   )g@g	@g?rp   )ffffff@@      ?rp   )      @@ro   rp   )rs   333333@ro   r   )rv   rx   ru   rp   )g@g333333@ro   rp   )rq   rt   ru   r   )皙@g@ru   rp   )333333@rx   皙?rp   )rz   rr   ro   r   )g333333@rr   g?r   )rm   rn   ro   r   )g@gffffff@333333?r   )ry   rx   r|   rp   )rs   rw   g      ?rp   )rv   rr   r{   rp   )g@rn   ru   rp   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
 
6	5	5s   &BB
)r]   numpyr   r   sklearnr   sklearn.covariancer   r   r   sklearn.utils._testingr   	load_irisrF   r!   X_1dra   r>   r?   r   r#   r'   r   rU   rc   rk   r    r   r   <module>r      sx        H H <HAw 	:L(H6/@ r   