o
    ?Hh6                     @   s  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jdd	\ZZeddd f Zej\ZZd
d Zej !dddgdd Z"dd Z#dd Z$dd Z%dd Z&dd Z'ej !de j(egdd Z)dd Z*d d! Z+dS )"    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                  C   s  t  } | t tt}t|| jd t| |d t| j|ddd t| j|ddd t| j|ddd t| j|ddd t	t
 | j|d	d W d    n1 sZw   Y  | t}t|dksmJ td d df d
}t  } | | tt|| jd t| t|d t| jt|ddd tddd}t  } d}tjt|d | | W d    n1 sw   Y  t| jtjdtjd tddgddgg}tddgddgg}tt|| t dd} | t t| jttjd  d S )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result rB   h/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sklearn/covariance/tests/test_covariance.pytest_covariance"   sB   




rD   
n_matricesr      c                 C   s|   d}t ||f}t ddgddgg}| dkr2t j|t jdf | dd}t j|t jdf | dd}t|d}t|| dS )z#Check `shrunk_covariance` function.r   r         ?.r   axisN)r0   onesarrayrepeatnewaxisr   r   )rE   
n_featuresr:   
cov_target
cov_shrunkrB   rB   rC   test_shrunk_covariance_funcQ   s   
rQ   c                  C   s   t dd} | t ttttdd| jd t  } | t tttt| jd t dd} | t ttt| jd tdddf d}t dd} | | tt|| jd t dd	d
} | t | jdu smJ dS )zECheck consistency between `ShrunkCovariance` and `shrunk_covariance`.rG   	shrinkager   g        Nr   r   g333333?F)rS   store_precision)	r   r(   r)   r   r   r   r*   r2   
precision_)r:   r=   rB   rB   rC   test_shrunk_covariancea   s(   







rV   c            
      C   s0  t t jdd } tdd}||  |j}|| }tt| dd| tt| ddd| t| dd\}}t	||j
d t||j t|jdd}||  t	|j
|j
d t d d df d	}tdd}|| t|dd\}}t	||j
d t||j t	|d
  t |j
d tddd}||  t|| |d |jd u sJ t }|t  t|j|d t|jtt  t|jtt d  t|jtt dddd  t|t |d tt \}}t	||j
d t||j t|jd}|t  t	|j
|j
d t d d df d	}t }|| t|jddt|dddd  t|\}}t	||j
d t||j t	t||j
d tddd}t }d}	tjt|	d || W d    n	1 sjw   Y  t	|j
tjdtjd tdd}|t  t|t |d |jd u sJ d S )Nr   rH   Tr&      )r'   
block_sizer   rS   r'   r   r   FrT   r'   r   i'  )r)   r'   rX   rR   )ddofr   r   r    r"   r#   rT   )r)   meanr   r(   
shrinkage_scorer   r	   r   r   r*   r   r2   sum	n_samplesrU   r   r   varr   r0   r3   r,   r4   r5   r6   r7   )

X_centeredlwr^   score_lw_cov_from_mlelw_shrinkage_from_mlescovr=   r>   r?   rB   rB   rC   test_ledoit_wolf   s   













ri   c                 C   s   | j \}}t| dd}t|| }| }|jd d |d   |8  < |d  | }| d }d||  tt|j|| |d   }t	||}	|	| }
|
S )NFr&   r   r   g      ?)
r$   r   r0   tracecopyflatr`   dotTmin)r)   ra   rN   r;   mudelta_deltaX2beta_betarS   rB   rB   rC   _naive_ledoit_wolf_shrinkage   s    

rv   c                  C   s<   t d d d df } t }||  |j}t|t|  d S )Nr   )r)   r   r(   r^   r   rv   )X_smallrd   r^   rB   rB   rC   test_ledoit_wolf_small   s
   
rx   c                  C   sb   t jd} | jdd}tdd|}t|jt dd |j}tdd|}t|j| d S )Nr   )
      )sizery   )rX   rz      )	r0   randomRandomStatenormalr   r(   r   r*   eye)rngr)   rd   r:   rB   rB   rC   test_ledoit_wolf_large  s   r   ledoit_wolf_fitting_functionc                 C   sF   t d}tjtdd | | W d   dS 1 sw   Y  dS )zDCheck that we validate X and raise proper error with 0-sample array.)r   r   zFound array with 0 sampler    N)r0   r6   r,   r-   
ValueError)r   X_emptyrB   rB   rC   test_ledoit_wolf_empty_array  s   

"r   c                  C   s  t t jdd } tdd}||  |j}|| }t| dd\}}t||jd t	||j t
|jdd}||  t|j|jd t d d ddf }tdd}|| t|dd\}}t||jd t	||j t|d  t |jd td	dd
}||  t	|| |d |jd u sJ t }|t  t	|j|d t	|t |d tt \}}t||jd t	||j t
|jd}|t  t|j|jd t d d df d}t }|| t|\}}t||jd t	||j tt||jd tddd}t }d}	tjt|	d || W d    n	1 s'w   Y  t|jtjdtjd td	d}|t  t	|t |d |jd u sSJ t d d ddf }
t }||
 t|
\}}t||jd t	||j t|
d  t |jd d S )Nr   rH   Tr&   r   rY   r   r   FrZ   rR   r   r   r   r    r"   r#   r\   )r)   r]   r   r(   r^   r_   r
   r   r*   r   r   r`   ra   rU   r2   r   r0   r3   r,   r4   r5   r6   r7   r   )rc   oar^   re   oa_cov_from_mleoa_shrinkage_from_mlerh   r=   r>   r?   X_1f_oa_cov_from_mle_oa_shrinkage_from_mlerB   rB   rC   test_oas  sr   












r   c                  C   sl   t  t} dtjd  d}tjt|d | tddddf  W d   dS 1 s/w   Y  dS )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   r/   )r:   msgrB   rB   rC   .test_EmpiricalCovariance_validates_mahalanobisp  s
   "r   ),numpyr0   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$   ra   rN   rD   markparametrizerQ   rV   ri   rv   rx   r   r(   r   r   r   rB   rB   rB   rC   <module>   s0   ,
/
#]

S