
    0Ph|                         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dS )    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|            d S )Nd      r   g{Gz?皙?K      333333?A   (   2   i  i  i  i  i   if  i     i^  )launch_mcd_on_dataset)global_random_seeds    o/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/covariance/tests/test_robust_covariance.pytest_mcdr      s     #q!T34FGGG#q"c34FGGG#q"c34FGGG $3S#7IJJJ $3S#7IJJJ #q#tT38JKKKKK    c                      t          j        d          } d}t          j        t          |          5  t          |            d d d            d S # 1 swxY w Y   d S 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Ac                      t          j        d          } t                      }d}t          j        t
          |          5  |                    |            d d d            d S # 1 swxY w Y   d S r   )r   r   r   r   r   r    fit)r!   mcdr"   s      r   test_mcd_class_on_invalid_inputr'   -   s    
	#A
++C
3C	z	-	-	-  


                 s    A##A'*A'c                 6   t           j                            |          }|                    | |          }|                    |           d |         }	d|                    d||f          dz
  z  }
||	xx         |
z  cc<   t          j        |                               t                    }d||	<   ||         }t          |          
                    |          }|j        }|j        }|j        }t          j        |                    d          |z
  dz            }||k     sJ t          j        t          |          |z
  dz            }||k     sJ t          j        |          |k    sJ 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_covs                      r   r   r   5   s    y$$T**H>>)Z00D)))44[j[ANh..q
J7O.PPSVVWOO+79%%,,T22L#(L \"IT***..t44GAAAWinnQ//!39::NG####-i881<BCCIw6!99####g11$77GGGGGr   c                      t           j                            d          } |                     d          }t	                      }|                    |           d S )Nr   )   r   r*   )r   r/   r0   normalr   r%   )rndr!   r&   s      r   test_mcd_issue1127rU   P   sH     )


"
"C


A
++CGGAJJJJJr   c                    t           j                            |           }t          j        ddd                                          }t          j        t          t          j        ||                              }t          j	        |t          j
        |j        d         df          f          }t          |                              |           d S )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   Y   s     y$$%788H +b!R((//11K8D*;DDEEFFD 9dBHdjmQ%7889::D" 8$$$((.....r   c                  p   t          j        g d          } |                     dd          } t          j        g d          }|                    dd          }d}| |fD ]V}t          j        t
          |          5  t                                          |           d d d            n# 1 swxY w Y   Wd S )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   y   s     (JJJ
K
KC
++b!

C
(JJJ
K
KC
++b!

C	$  3Z  ]:S111 	 	KKOOA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 s   <"B**B.	1B.	c                 4   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  |                    |           d d d            d S # 1 swxY w Y   d S )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      sX    	'	A, S7I
J
J
JC*H	nH	5	5	5  


                 s   *B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      s#                  H H H H H H H H H H < < < < < <HAw 	:L L L(    H H H6  / / /@       r   