U
    -e4                     @   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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 5 Q R X | t}t|dkst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 5 Q R X 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AssertionErrorreshapearangewarnsUserWarningzerosfloat64Zasarrayr   Z	location_r   )covemp_covZ
mahal_distX_1d	X_1samplewarn_msgZ	X_integerresult r5   i/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sklearn/covariance/tests/test_covariance.pytest_covariance%   s>    




r7   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 kst	d S )
Ng      ?	shrinkager   g        r   r   g333333?F)r9   store_precision)
r   r    r!   r   r   r   r"   r)   
precision_r(   )r/   r1   r5   r5   r6   test_shrunk_covarianceT   s0    

  

  




r<   c            
   	   C   s  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 ksRt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 5 Q R X t	|j
tjdtjd tdd}|t  t|t |d |jd kstd S )Nr   ZaxisTr      )r   
block_sizer   r9   r   r   r   Fr:   r   r   i'  )r!   r   r?   r8   )Zddofr   r   r   r   r   r:   )r!   meanr   r    
shrinkage_scorer   r	   r   r   r"   r   r)   sum	n_samplesr;   r(   r   r   varr   r'   r*   r#   r+   r,   r-   r.   )

X_centeredlwrD   score_Zlw_cov_from_mleZlw_shrinkage_from_mlescovr1   r2   r3   r5   r5   r6   test_ledoit_wolfu   s    



  





 




rM   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flatrF   dotTmin)r!   rG   
n_featuresr0   muZdelta_deltaZX2Zbeta_betar9   r5   r5   r6   _naive_ledoit_wolf_shrinkage   s     

rW   c                  C   s<   t d d d df } t }||  |j}t|t|  d S )Nr   )r!   r   r    rD   r   rW   )ZX_smallrJ   rD   r5   r5   r6   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   )r?   rZ      )	r'   randomZRandomStatenormalr   r    r   r"   eye)rngr!   rJ   r/   r5   r5   r6   test_ledoit_wolf_large   s    ra   ledoit_wolf_fitting_functionc              	   C   s0   t d}tjtdd | | W 5 Q R X 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)rb   ZX_emptyr5   r5   r6   test_ledoit_wolf_empty_array  s    
rd   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 ks*t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 5 Q R X t|jtjdtjd td	d}|t  t	|t |d |jd kstt d d ddf }
t }||
 t|
\}}t||jd t	||j t|
d  t |jd d S )Nr   r=   Tr   r   r@   r   r   FrA   r8   r   r   r   r   r   r   rB   )r!   rC   r   r    rD   rE   r
   r   r"   r   r   rF   rG   r;   r(   r)   r   r'   r*   r#   r+   r,   r-   r.   r   )rI   ZoarD   rK   Zoa_cov_from_mleZoa_shrinkage_from_mlerL   r1   r2   r3   ZX_1fZ_oa_cov_from_mleZ_oa_shrinkage_from_mler5   r5   r6   test_oas  sp    












re   c               	   C   sV   t  t} dtjd  d}tjt|d  | tddddf  W 5 Q R X 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$   rc   r&   )r/   msgr5   r5   r6   .test_EmpiricalCovariance_validates_mahalanobisa  s    rg   )+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!   _r1   r   rG   rS   r7   r<   rM   rW   rX   ra   markZparametrizer    rd   re   rg   r5   r5   r5   r6   <module>   s,   ,
/!]
 

S