
    {KgJ7                        d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZmZmZmZ ddlmZ  ej0                  d	      \  ZZeddd f   Zej8                  \  ZZd
 Zej@                  jC                  dddg      d        Z"d Z#d Z$d Z%d Z&d Z'ej@                  jC                  d e       jP                  eg      d        Z)d Z*d Z+y)    N)datasets)	OASEmpiricalCovariance
LedoitWolfShrunkCovarianceempirical_covarianceledoit_wolfledoit_wolf_shrinkageoasshrunk_covariance)_ledoit_wolf)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equal   )_oasT)
return_X_yc                  r   t               } | j                  t               t        t              }t	        || j
                  d       t        | j                  |      d       t        | j                  |d      d       t        | j                  |d      d       t        | j                  |d      d       t        | j                  |d      d       t        j                  t              5  | j                  |d	       d d d        | j                  t              }t        j                  |      dkD  sJ t        d d df   j                  d
      }t               } | j                  |       t	        t        |      | j
                  d       t        | j                  t        |            d       t        | j                  t        |      d      d       t        j                  d      j                  dd      }t               } d}t        j                   t"        |      5  | j                  |       d d d        t	        | j
                  t        j$                  dt        j&                               t        j(                  ddgddgg      }t        j(                  ddgddgg      }t	        t        |      |       t        d      } | j                  t               t+        | j,                  t        j$                  t        j.                  d                y # 1 sw Y    xY w# 1 sw Y   xY w)N   r   spectral)norm	frobeniusF)scaling)squaredfoo      r   BOnly one sample available. You may want to reshape your data arraymatchr    r    shapedtypeg      ?g      пTassume_centered)r   fitXr   r   covariance_r   
error_normpytestraisesNotImplementedErrormahalanobisnpaminreshapearangewarnsUserWarningzerosfloat64asarrayr   	location_r&   )covemp_cov
mahal_distX_1d	X_1samplewarn_msg	X_integerresults           l/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/covariance/tests/test_covariance.pytest_covariancerE   %   sY    
CGGAJ"1%Ggs:w/3wZ@!Dw[A1Ew>Bw>B	*	+wU+ 
, #J77:""" QT7??7#D

CGGDM248#//1M';D'ABAF';D'A
SUVW 		!$$Q*I

CSH	k	2	 
3 coorxxfBJJ/WX 

QFQF+,IZZ$67F29=vF d
3CGGAJs}}bhhqwwqz&:;A 
,	+& 
3	2s   .L &L- L*-L6
n_matricesr      c                 R   d}t        j                  ||f      }t        j                  ddgddgg      }| dkD  rVt        j                  |t         j                  df   | d      }t        j                  |t         j                  df   | d      }t        |d      }t        ||       y)z#Check `shrunk_covariance` function.r   r         ?.r   axisN)r2   onesarrayrepeatnewaxisr   r   )rF   
n_featuresr<   
cov_target
cov_shrunks        rD   test_shrunk_covariance_funcrS   T   s     J
'':z*
+CAs8c1X./JA~iiBJJO,jqAYYz"**c/:JQO
"3,JJ
+    c                     t        d      } | j                  t               t        t	        t        t              d      | j                  d       t               } | j                  t               t        t	        t        t                    | j                  d       t        d      } | j                  t               t        t        t              | j                  d       t        dddf   j                  d      }t        d      } | j                  |       t        t        |      | j                  d       t        dd	
      } | j                  t               | j                  J y)zECheck consistency between `ShrunkCovariance` and `shrunk_covariance`.rI   	shrinkager   g        Nr   r   g333333?F)rW   store_precision)	r   r*   r+   r   r   r   r,   r4   
precision_)r<   r?   s     rD   test_shrunk_covariancerZ   d   s   
 S
)CGGAJ.q1SA3??TU
 
CGGAJ.q12COOQ
 S
)CGGAJ215sJ QT7??7#D
S
)CGGDM248#//1M S%
@CGGAJ>>!!!rT   c                  

   t         t         j                  d      z
  } t        d      }|j                  |        |j                  }|j                  |       }t        t        | d      |       t        t        | dd      |       t        | d      \  }}t        ||j                  d       t        ||j                         t        |j                  d      }|j                  |        t        |j                  |j                  d       t         d d df   j                  d	      }t        d      }|j                  |       t        |d      \  }}t        ||j                  d       t        ||j                         t        |d
z  j                         t        z  |j                  d       t        dd      }|j                  |        t        |j                  |       |d       |j                  J t               }|j                  t                t        |j                  |d       t        |j                  t        t                      t        |j                  t        t               d          t        |j                  t!        t         dd      d          t        |j                  t               |d       t        t               \  }}t        ||j                  d       t        ||j                         t        |j                        }|j                  t                t        |j                  |j                  d       t         d d df   j                  d	      }t               }|j                  |       t#        |j%                  d      t!        |dd      d          t        |      \  }}t        ||j                  d       t        ||j                         t        t'        |      |j                  d       t)        j*                  d      j                  dd      }t               }d}	t-        j.                  t0        |	      5  |j                  |       d d d        t        |j                  t)        j2                  dt(        j4                               t        d      }|j                  t                t        |j                  t               |d       |j                  J y # 1 sw Y   xY w)Nr   rJ   Tr(      )r)   
block_sizer   rW   r)   r   r   FrX   r)   r   i'  )r+   r)   r]   rV   )ddofr    r!   r"   r$   r%   rX   )r+   meanr   r*   
shrinkage_scorer   r
   r	   r   r,   r   r4   sum	n_samplesrY   r   r   varr   r2   r5   r.   r6   r7   r8   r9   )

X_centeredlwrc   score_lw_cov_from_mlelw_shrinkage_from_mlescovr?   r@   rA   s
             rD   test_ledoit_wolfrn      s    QVVV^#J	D	)BFF:JXXj!Fj$? j$1M
 .9D.*O* or~~qA-r}}=bmmTJDHHZd..B QT7??7#D	D	)BFF4L-8t-T*O*or~~qA-r}}=tQwmmo	92>>1M 
E4	@BFF:,fa8==    
BFF1Iz15'<Q'?@{1~a'89
|a5QRST VQ/-8^*O*or~~qA-r}}=bmm4DHHQKd..B QT7??7#D	BFF4LatUuEaH .9->*O*or~~qA-r}}=248"..!L 		!$$Q*I	BSH	k	2
y 
3 bnnbhhV2::.VW 
E	*BFF1IVQ/==    
3	2s   S99Tc                    | j                   \  }}t        | d      }t        j                  |      |z  }|j	                         }|j
                  d d |dz   xx   |z  cc<   |dz  j                         |z  }| dz  }d||z  z  t        j                  t        j                  |j                  |      |z  |dz  z
        z  }t        ||      }	|	|z  }
|
S )NFr(   r   r   g      ?)
r&   r   r2   tracecopyflatre   dotTmin)r+   rf   rP   r=   mudelta_deltaX2beta_betarW   s              rD   _naive_ledoit_wolf_shrinkager|      s     GGIz"1e<G	'	Z	'B\\^F
KK!:>!"b("QYOO
*E	
AB	!	#
&&b!I-
:
;	< 
 ueDuIrT   c                      t         d d d df   } t               }|j                  |        |j                  }t	        |t        |              y )Nr   )r+   r   r*   rc   r   r|   )X_smallri   rc   s      rD   test_ledoit_wolf_smallr      s>    2A2hG	BFF7OJ
$@$IJrT   c                  j   t         j                  j                  d      } | j                  d      }t	        d      j                  |      }t        |j                  t        j                  d      d       |j                  }t	        d      j                  |      }t        |j                  |       y )Nr   )
      )sizer   )r]   r      )	r2   randomRandomStatenormalr   r*   r   r,   eye)rngr+   ri   r<   s       rD   test_ledoit_wolf_larger     s    
))


"C


!A	r	"	&	&q	)Br
A6
..C 
r	"	&	&q	)B,rT   ledoit_wolf_fitting_functionc                     t        j                  d      }t        j                  t        d      5   | |       ddd       y# 1 sw Y   yxY w)zDCheck that we validate X and raise proper error with 0-sample array.)r   r   zFound array with 0 sampler"   N)r2   r8   r.   r/   
ValueError)r   X_emptys     rD   test_ledoit_wolf_empty_arrayr     s6    
 hhvG	z)D	E$W- 
F	E	Es   	AAc                  	   t         t         j                  d      z
  } t        d      }|j                  |        |j                  }|j                  |       }t        | d      \  }}t        ||j                  d       t        ||j                         t        |j                  d      }|j                  |        t        |j                  |j                  d       t         d d ddf   }t        d      }|j                  |       t        |d      \  }}t        ||j                  d       t        ||j                         t        |dz  j                         t        z  |j                  d       t        d	d
      }|j                  |        t        |j                  |       |d       |j                  J t               }|j                  t                t        |j                  |d       t        |j                  t               |d       t        t               \  }}t        ||j                  d       t        ||j                         t        |j                        }|j                  t                t        |j                  |j                  d       t         d d df   j                  d      }t               }|j                  |       t        |      \  }}t        ||j                  d       t        ||j                         t        t        |      |j                  d       t!        j"                  d      j                  dd      }t               }d}	t%        j&                  t(        |	      5  |j                  |       d d d        t        |j                  t!        j*                  dt         j,                               t        d	      }|j                  t                t        |j                  t               |d       |j                  J t         d d ddf   }
t               }|j                  |
       t/        |
      \  }}t        ||j                  d       t        ||j                         t        |
dz  j                         t        z  |j                  d       y # 1 sw Y   'xY w)Nr   rJ   Tr(   r   r^   r   r   Fr_   rV   r   r    r!   r"   r$   r%   ra   )r+   rb   r   r*   rc   rd   r   r   r,   r   r   re   rf   rY   r4   r   r2   r5   r.   r6   r7   r8   r9   r   )rh   oarc   rj   oa_cov_from_mleoa_shrinkage_from_mlerm   r?   r@   rA   X_1f_oa_cov_from_mle_oa_shrinkage_from_mles                rD   test_oasr      s    QVVV^#J	T	"BFF:JXXj!F-0T-R*O*or~~qA-r}}=bmmTJDHHZd..B Q!V9D	T	"BFF4L-0t-L*O*or~~qA-r}}=tQwmmo	92>>1M 
UD	9BFF:,fa8==    
BFF1Iz15VQ/-0V*O*or~~qA-r}}=bmm4DHHQKd..B QT7??7#D	BFF4L-0Y*O*or~~qA-r}}=248"..!L 		!$$Q*I	BSH	k	2
y 
3 bnnbhhV2::.VW 
U	#BFF1IVQ/==    Q!V9D	BFF4L/3Dz,,.B.>tQwmmo	92>>1M' 
3	2s   =R44R>c                     t               j                  t              } dt        j                  d    d}t	        j
                  t        |      5  | j                  t        ddddf          ddd       y# 1 sw Y   yxY w)z@Checks that EmpiricalCovariance validates data with mahalanobis.z'X has 2 features, but \w+ is expecting r   z features as inputr"   Nr   )r   r*   r+   r&   r.   r/   r   r1   )r<   msgs     rD   .test_EmpiricalCovariance_validates_mahalanobisr   s  s^    


#
#A
&C4QWWQZL@R
SC	z	-!RaR%! 
.	-	-s   A88B),numpyr2   r.   sklearnr   sklearn.covariancer   r   r   r   r   r	   r
   r   r   %sklearn.covariance._shrunk_covariancer   sklearn.utils._testingr   r   r   r   _shrunk_covariancer   load_diabetesr+   _r?   r&   rf   rP   rE   markparametrizerS   rZ   rn   r|   r   r   r*   r   r   r    rT   rD   <module>r      s      
 
 
 ?  &x.1Aw 	:,<^ 1v., /, "FZ!z2K- "Z\%5%57L$M..PNf"rT   