o
    i6                     @   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)Z
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   Zspectral)ZnormZ	frobeniusF)Zscaling)ZsquaredZfoo      r   BOnly one sample available. You may want to reshape your data arraymatchr   r   shapeZdtypeg      ?g      пTassume_centered)r   fitXr   r   covariance_r   Z
error_normpytestraisesNotImplementedErrormahalanobisnpZaminreshapearangewarnsUserWarningzerosfloat64Zasarrayr   Z	location_r   )covemp_covZ
mahal_distX_1d	X_1samplewarn_msgZ	X_integerresult r4   w/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/covariance/tests/test_covariance.pytest_covariance"   sB   




r6   
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   ZaxisN)r'   ZonesarrayrepeatZnewaxisr   r   )r7   
n_featuresr.   Z
cov_targetZ
cov_shrunkr4   r4   r5   test_shrunk_covariance_funcQ   s   
r>   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`.r9   	shrinkager   g        Nr   r   g333333?F)r@   store_precision)	r   r    r!   r   r   r   r"   r(   
precision_)r.   r0   r4   r4   r5   test_shrunk_covariancea   s(   







rC   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   r:   Tr      )r   
block_sizer   r@   r   r   r   FrA   r   r   i'  )r!   r   rE   r?   )Zddofr   r   r   r   r   rA   )r!   meanr   r    
shrinkage_scorer   r	   r   r   r"   r   r(   sum	n_samplesrB   r   r   varr   r'   r)   r#   r*   r+   r,   r-   )

X_centeredlwrJ   score_Zlw_cov_from_mleZlw_shrinkage_from_mlescovr0   r1   r2   r4   r4   r5   test_ledoit_wolf   s   













rS   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   r'   tracecopyZflatrL   dotTmin)r!   rM   r=   r/   muZdelta_deltaZX2Zbeta_betar@   r4   r4   r5   _naive_ledoit_wolf_shrinkage   s    

r\   c                  C   s<   t d d d df } t }||  |j}t|t|  d S )Nr   )r!   r   r    rJ   r   r\   )ZX_smallrP   rJ   r4   r4   r5   test_ledoit_wolf_small   s
   
r]   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   )
      )sizer^   )rE   r_      )	r'   randomZRandomStatenormalr   r    r   r"   eye)rngr!   rP   r.   r4   r4   r5   test_ledoit_wolf_large  s   rf   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)r'   r,   r#   r$   
ValueError)rg   ZX_emptyr4   r4   r5   test_ledoit_wolf_empty_array  s   

"ri   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   r:   Tr   r   rF   r   r   FrG   r?   r   r   r   r   r   r   rH   )r!   rI   r   r    rJ   rK   r
   r   r"   r   r   rL   rM   rB   r(   r   r'   r)   r#   r*   r+   r,   r-   r   )rO   ZoarJ   rQ   Zoa_cov_from_mleZoa_shrinkage_from_mlerR   r0   r1   r2   ZX_1fZ_oa_cov_from_mleZ_oa_shrinkage_from_mler4   r4   r5   test_oas  sr   












rj   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$   rh   r&   )r.   msgr4   r4   r5   .test_EmpiricalCovariance_validates_mahalanobisp  s
   "rl   ),numpyr'   r#   Zsklearnr   Zsklearn.covariancer   r   r   r   r   r   r	   r
   r   Z%sklearn.covariance._shrunk_covariancer   Zsklearn.utils._testingr   r   r   r   Z_shrunk_covariancer   Zload_diabetesr!   _r0   r   rM   r=   r6   markZparametrizer>   rC   rS   r\   r]   rf   r    ri   rj   rl   r4   r4   r4   r5   <module>   s0   ,
/
#]

S