U
    ^»{jù4  ã                   @   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sÆt‚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   úg/var/www/html/bwave/python/venv/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sÚt	‚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�s’t‚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