o
    ‘i„D  ã                   @   sj  d dl Zd dlZd dlmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ ej ddd	g¡ej d
eddƒ¡dd„ ƒƒZej dejdg¡dd„ ƒZej dejdg¡dd„ ƒZej dejdg¡dd„ ƒZej dejdg¡dd„ ƒZej dejdg¡dd„ ƒZej dejdg¡dd„ ƒZej dejdg¡dd„ ƒZej dejdg¡dd „ ƒZd!d"„ Zej d#dd g¡ej ddejg¡ej d$¡d%d&„ ƒƒƒZej ddejg¡ej ddd	g¡d'd(„ ƒƒZej ddejg¡ej ddd	g¡d)d*„ ƒƒZej ddejg¡d+d,„ ƒZ ej d#dd g¡ej ddejg¡d-d.„ ƒƒZ!ej d/d0ejd1fg¡d2d3„ ƒZ"dS )4é    N)Úconfig_context)Ú
KNNImputer)Únan_euclidean_distancesÚpairwise_distances)ÚKNeighborsRegressor)Úassert_allcloseÚweightsÚuniformÚdistanceÚn_neighborsé   é   c                 C   sL   d}d}t j ||¡}t j|d< t|| d}| |¡}|j||fks$J ‚d S )Né
   é   )r   r   )r   r   )ÚnpÚrandomZrandÚnanr   Úfit_transformÚshape)r   r   Zn_rowsZn_colsÚXÚimputerÚ	X_imputed© r   úl/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/sklearn/impute/tests/test_knn.pyÚtest_knn_imputer_shape   s   

r   Únaéÿÿÿÿc                 C   sô  t  t jddd| gg d¢g d¢| ddddg| d	dd	d
gg d¢g¡}tjtdd t| d |¡ W d   ƒ n1 s;w   Y  t  t jddd| gg d¢g d¢| ddddg| d	dd	d
gg d¢g¡}t  dddd| gg d¢g d¢| ddddg| d	dd	d
gg d¢g¡}t| d |¡}tjtdd | |¡ W d   ƒ n1 s w   Y  tdddd}t  t j	ddddgt j	ddt j	dgt j	ddddgt j	ddddgg¡}d}tjt|d | |¡ W d   ƒ n1 sçw   Y  t  ddgt j	dgg¡}d S )Nr   r   )r   r   r   r   é   )r   r   r   r   é   r   r   é   é   é   r   )r   r   r   r   r!   zInput X contains (infinity|NaN))Úmatch©Úmissing_valuesr	   ©r$   r   r   r   zInput X contains NaN)
r   ÚarrayÚinfÚpytestZraisesÚ
ValueErrorr   ÚfitÚ	transformr   )r   r   ZX_fitr   Úmsgr   r   r   Ú+test_knn_imputer_default_with_invalid_input   sf   úÿ
ÿúÿúÿ
ÿüÿÿþÿr-   c                 C   sº   t  dd| dddgdd| dddgdd| dd| gdd| | ddgg¡}t| dd |¡}| |¡}t  |¡ ¡ r8J ‚|jdks?J ‚t  d	d
¡ 	dd¡}| |¡}t
|d d …g d¢f |ƒ d S )Nr   ç      ð?r   r   é   r   ©r$   r   )r/   r   r   é   ©r   r   r   r/   r   )r   r&   r   r*   r+   ÚisnanÚanyr   ZarangeZreshaper   )r   r   ÚknnZX_transformZX_testr   r   r   Ú(test_knn_imputer_removes_all_na_features\   s   üÿ

r6   c              
   C   s¾   t  g d¢g d¢g d¢g d¢g¡}t  d| dddgg d¢dddd| gdd| ddgg¡}t  g d	¢g d¢g d
¢g d¢g¡}tdddd}t| ddd}t| |¡|ƒ t| |¡| |¡ƒ d S )N)r   r   r   r   r.   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r   r.   r   r   )r   ç      @r   r   r.   )r   r   r   r   ç      ø?)r   r   r7   r   r   r   r   r	   r%   ©r   r&   r   r   r   )r   ZX_zeroZX_nanr   Zimputer_zeroZimputer_nanr   r   r   Ú*test_knn_imputer_zero_nan_imputes_the_sameq   s6   üÿ	üÿ	üÿ	ÿr:   c                 C   sè  t  g d¢ddd| gddd| g| dddgd| ddgg d	¢g d
¢g¡}t  g d¢g d¢g d¢g d¢g d¢g d	¢g d
¢g¡}t| d}t| |¡|ƒ t  ddd| gddd| gddd| gddd| gddd| gddd| gg d¢g d¢g¡}d}t  ddd|gddd|gddd|gddd|gddd|gddd|gg d¢g d¢g¡}t| d}t| |¡|ƒ t  ddg| dgddgddgddgddgddgg¡}t  ddgddgd| gg¡}d}t  ddgddgd|gg¡}t| d}t| |¡ |¡|ƒ d S )N©r   r   r   r   r   r   r   r/   r   r   r!   )r   r   r   r   )é   é   é   é   )r   r   r   r   )r   r   r   r   )r/   r/   r   r   )r   r   r   r!   r#   r   r   )é   r@   r@   r@   )é   rA   rA   rA   g      5@é	   é   r<   g333333@)r   r&   r   r   r   r*   r+   )r   r   r   r   ZX_impute_valueÚX1ZX_2_1Ú
X1_imputedr   r   r   Útest_knn_imputer_verify™   sj   



ùÿùÿ






øÿ





øÿ
4
rF   c              
   C   sˆ   t  ddg| dgddgd| gddg| dgdd	gg¡}t  ddgddgddgddgddgddgdd	gg¡}td
| d}t| |¡|ƒ d S )Nr   r   r/   r   r   r!   r   é   r    r   ©r   r$   r9   )r   r   r   r   r   r   r   Ú test_knn_imputer_one_n_neighborsã   s   44rI   c              
   C   s¼   t  ddg| dgddgd| gddg| dgdd	gg¡}t  ddgd
dgddgddgddgd
dgdd	gg¡}|jd d }t|| d}t| |¡|ƒ |jd }t|| d}t| |¡|ƒ d S )Nr   r   r/   r   r   r!   r   rG   r    g      @g      @r   rH   )r   r&   r   r   r   r   )r   r   r   r   r   Zimputer_plus1r   r   r   Ú*test_knn_imputer_all_samples_are_neighborsî   s   4,ÿ
rJ   c              
   C   sÐ   t  ddg| dgddgddgddgdd	gd
dgg¡}t  ddgddgddgddgddgdd	gd
dgg¡}td| d}t| |¡|ƒ dd„ }t|| d}t| |¡|ƒ dd„ }t|| d}t| |¡|ƒ d S )Nr   r   r/   r   r   r   r!   rB   r   rC   r   r	   ©r   r$   c                 S   s   d S ©Nr   ©Údistr   r   r   Ú	no_weight  s   z2test_knn_imputer_weight_uniform.<locals>.no_weightc                 S   s
   t  | ¡S rL   )r   Z	ones_likerM   r   r   r   Úuniform_weight  s   
z7test_knn_imputer_weight_uniform.<locals>.uniform_weightr9   )r   r   ZX_imputed_uniformr   rO   rP   r   r   r   Útest_knn_imputer_weight_uniform   s   4,ÿrQ   c           $      C   sÂ  t  ddg| dgddgddgddgdd	gd
dgg¡}tddd}g d¢}| ||dd …f ||df ¡ | |dd…dd …f ¡d }g d¢}t|dd…d d …f || d}d|d d …|f  ¡  }t j||df |d}t  ddg|dgddgddgddgdd	gd
dgg¡}	t  ddg|dgddgddgddgdd	gd
dgg¡}
td| d}t	| 
|¡|	ƒ t	| 
|¡|
ƒ t  | ddgg d¢g d¢g d¢g¡}t  d¡}t  d¡}t jddgd| d| gd}t  |ddgg d¢g d¢g d¢g¡}tdd| d}t	| 
|¡|ƒ t  g d¢d| d| gddd| gg d¢g d¢g d¢g d¢g¡}t|| d}|dg d¢f }|dg d ¢f }d| }d| }|dg d ¢f }d| }t j |g d¢df ¡ ¡ }t j |g d ¢df ¡ ¡ }t jj||d}t jj||d}t jj||d}t  g d¢d|d|gddd|gg d¢g d¢g d¢g d¢g¡}td| d}t	| 
|¡|ƒ t  ddd| gddd| gdd| dgg d!¢g d"¢g d#¢g d$¢| dddgg¡}t|d%d&| d'}d(|ddd)…f  }d(|ddd)…f  }d(|d*  }d(|ddd…f  }t j|dd)…d)f |d}t j|dd)…d)f |d} t j|d+ |d}!t j|dd…df |d}"t  ddd|gddd| gdd|!dgg d!¢g d"¢g d#¢g d$¢|"dddgg¡}t| dd,}#t	|# 
|¡|ƒ d S )-Nr   r   r/   r   r   r   r!   rB   r   rC   r   Z	euclideanr
   )Úmetricr   )r   r   r   r/   r   r   r   )r   r   r   r/   r   r#   ©r   rK   )r   r   r   )r   r   r   )r/   r   r   g      @g     €3@)r   r   r$   r;   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r/   r   r   ©r   r   r   r   ©r/   r/   r/   r/   ©r   r   r   r   ©r   r   r   r   Únan_euclideanF©rR   Úsquaredr$   r.   r   )r   r2   )r2   r   )r$   r   )r   r&   r   r*   Zpredictr   ZravelÚaverager   r   r   ÚsqrtÚmaZmasked_invalidÚcopyr   )$r   r   ÚnnZ
X_rows_idxZknn_imputed_valueZX_neighbors_idxrN   r   Zmanual_imputed_valueZX_imputed_distance1ZX_imputed_distance2r   Zdist_0_1Zdist_0_2Zimputed_valuer   Zr1c1_nbor_distsZr1c3_nbor_distsZr1c1_nbor_wtZr1c3_nbor_wtZr2c3_nbor_distsZr2c3_nbor_wtZcol1_donor_valuesZcol3_donor_valuesZr1c1_impZr1c3_impZr2c3_impZr0c3_wZr1c3_wZr2c2_wZr7c0_wÚr0c3Úr1c3Úr2c2Úr7c0Zimputer_comp_wtr   r   r   Ú test_knn_imputer_weight_distance  sÔ   4 ,ÿ,ÿüÿ


üÿ	

ùÿ

ùÿ



øÿÿ



øÿrd   c               	   C   s   t jdfdd„} t  dddt jgg d¢g d¢t jdd	d
gg¡}d}d}t  ddd|gg d¢g d¢|dd	d
gg¡}td| d}t| |¡|ƒ d S )NFc                 S   sD   t jj| t  | ¡d} t jj|t  |¡d}t  t  | | ¡¡}|S )N)Úmask)r   r]   r&   r3   ZnansumÚabs)ÚxÚyr$   rZ   rN   r   r   r   Úcustom_callable²  s   z9test_knn_imputer_callable_metric.<locals>.custom_callabler/   r   )r   rB   r   rB   )r/   r   r   rB   rB   rC   g      $@g      "@g      @r   )r   rR   )r   r   r&   r   r   r   )ri   r   ZX_0_3ZX_3_0r   r   r   r   r   Ú test_knn_imputer_callable_metric°  s   ."ÿrj   Úworking_memoryzignore:adhere to working_memoryc           
      C   sL  t  d| d| gddd| gdd| dgg d¢g d¢g d¢g d¢| dddgg¡}t  |dd	…df ¡}t  |dd
…d
f ¡}t  |dd
…d
f ¡}t  |g d¢df ¡}t  |dd
…df ¡}t  d|d|gddd|gdd|dgg d¢g d¢g d¢g d¢|dddgg¡}t|d t| d}	t|	 |¡|ƒ W d   ƒ d S 1 sŸw   Y  d S )Nr   r   r   rT   rU   rV   rW   r!   r   r   r2   ©rk   r#   )r   r&   Úmeanr   r   r   r   )
r   rk   r   Zr0c1r`   ra   rb   rc   r   Zimputer_compr   r   r   Ú$test_knn_imputer_with_simple_exampleÄ  s>   



øÿ



øÿ
"þrn   c                 C   sŠ   t  | dg| dgd| gg¡}t  ddgddgddgg¡}t| d|d}t| |¡|ƒ t  d| gg¡}t  ddgg¡}t| |¡|ƒ d S )NrC   r   r   r   r%   r/   ©r   r&   r   r   r   r+   )r   r   rD   rE   r5   ÚX2Z
X2_imputedr   r   r   Ú+test_knn_imputer_not_enough_valid_distancesï  s   rq   c           
      C   sê   t  ddg| dgg¡}t  d| gg¡}t  ddgg¡}td| |d}| |¡ t| |¡|ƒ t  | ddgd| dgdd| gg¡}t  | d| gd| | g| | dgg¡}t  g d¢g d¢g d¢g¡}td| |d}	|	 |¡ t|	 |¡|ƒ d S )	Nr   r   r   )r   r$   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r&   r   r*   r   r+   )
r   r   ZX1_trainZX1_testZX1_test_expectedZknn1ZX2_trainZX2_testZX2_test_expectedZknn2r   r   r   Útest_knn_imputer_nan_distanceþ  s   
""
rr   c                 C   s€   t  | dg| dgg¡}t| dd}t  dgdgg¡}t| |¡|ƒ t  ddgd| gg¡}t  dgdgg¡}t| |¡|ƒ d S )Nr   r   r0   r   r8   ro   )r   rD   r5   ZX1_expectedrp   ZX2_expectedr   r   r   Ú'test_knn_imputer_drops_all_nan_features  s   rs   c              	   C   s€  t  d| gd| g| dgddgddg| dgg¡}t|dd| d	}t j|dd…d
f d
|ddd…f  d}t j|dd…d
f d
|d
dd…f  d}t j|dd…df d
|ddd…f  d}t j|dd…df d
|ddd…f  d}t  d|gd|g|dgddgddg|dgg¡}t|d' t| ddd}	t|	 |¡|ƒ t| ddd}
t|
 |¡|ƒ W d   ƒ d S 1 s¹w   Y  d S )Nr   r   r/   r   r   r   rX   FrY   r   r   rS   rl   r
   r%   )r   r&   r   r[   r   r   r   r   )r   rk   r   rN   ZX_01ZX_11ZX_20ZX_50Z
X_expectedZknn_3Zknn_4r   r   r   Ú7test_knn_imputer_distance_weighted_not_enough_neighbors  s   .ÿ****."ûrt   zna, allow_nan)r   FTc                 C   s"   t | d}| ¡ jj|ksJ ‚d S )Nr#   )r   Z__sklearn_tags__Z
input_tagsÚ	allow_nan)r   ru   r5   r   r   r   Útest_knn_tags7  s   
rv   )#Únumpyr   r(   Zsklearnr   Zsklearn.imputer   Zsklearn.metrics.pairwiser   r   Zsklearn.neighborsr   Zsklearn.utils._testingr   ÚmarkZparametrizeÚranger   r   r-   r6   r:   rF   rI   rJ   rQ   rd   rj   Úfilterwarningsrn   rq   rr   rs   rt   rv   r   r   r   r   Ú<module>   sZ    
A

'
I




 
&
