o
    ¢Äi”  ã                   @   sª  d Z 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
mZ ddlmZ ddgddgddgd	d	gd	d
gd
d	ggZg d¢Zddgd
d
gdd
ggZg d¢Zg d¢Zg d¢Zd	dgdd	gdd	ggZe ¡ Zej d	¡Ze ejj¡Zeje e_eje e_ej  de¡dd„ ƒZ!dd„ Z"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd „ Z'ej  de¡d!d"„ ƒZ(d#d$„ Z)d%d&„ Z*d'd(„ Z+ej  d)g d*¢¡d+d,„ ƒZ,ej  d-ej-ge ¡d.d/„ ƒZ.dS )0z*
Testing for the nearest centroid module.
é    N)Údatasets)ÚNearestCentroid)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equal)ÚCSR_CONTAINERSéþÿÿÿéÿÿÿÿé   é   )r	   r	   r	   r
   r
   r
   é   )r	   r
   r
   )iàÿÿÿé@   éP   gÓæj„=gHKb†Ói):gÍ6·–ý·8Úcsr_containerc                 C   sœ  | t ƒ}| tƒ}tƒ }| t t¡ t| t¡tƒ t| 	t¡t
ƒ t| t¡tƒ tdd}| t t¡ t| t¡tƒ t| 	t¡t
ƒ t| t¡tƒ tdd}| t t¡ t| t¡tƒ t| 	t¡t
ƒ t| t¡tƒ tddgd}| t t¡ t| t¡tƒ tƒ }| |t¡ t| |¡tƒ tƒ }| |t¡ t| t¡tƒ tƒ }| t t¡ t| |¡tƒ tƒ }| | ¡ t¡ t| | ¡ ¡tƒ d S )NÚuniform©ÚpriorsZ	empiricalg      Ð?g      è?)ÚXÚTr   ÚfitÚyr   ÚpredictÚtrue_resultr   Údecision_functionÚtrue_discriminant_scoresÚpredict_probaÚ
true_probaÚtrue_result_prior1ZtocooZtolil)r   ÚX_csrZT_csrÚclf© r    úg/home/kim/smarthome/.venv/lib/python3.10/site-packages/sklearn/neighbors/tests/test_nearest_centroid.pyÚtest_classification_toy%   s@   

r"   c                  C   sT   dD ]%} t | d tjtj¡}t | tj¡tjk¡}|dks'J dt|ƒ ƒ‚qd S )N©Z	euclideanÚ	manhattan©ÚmetricgÍÌÌÌÌÌì?úFailed with score = ©	r   r   ÚirisÚdataÚtargetÚnpÚmeanr   Ústr)r&   r   Úscorer    r    r!   Ú	test_irisY   s
   ýr0   c                  C   sd   dD ]-} dD ](}t | |d}| tjtj¡}t | tj¡tjk¡}|dks.J dt|ƒ ƒ‚qqd S )Nr#   )Nçš™™™™™¹?g      à?)r&   Úshrink_thresholdgš™™™™™é?r'   r(   )r&   r2   r   r/   r    r    r!   Útest_iris_shrinkagea   s   üÿr3   c                  C   st   dd l } tƒ }| tjtj¡ | tjtj¡}|  |¡}|  |¡}t	|ƒ|j
ks*J ‚| tjtj¡}t||dƒ d S )Nr   z>Failed to generate same score after pickling (classification).)Úpickler   r   r)   r*   r+   r/   ÚdumpsÚloadsÚtypeÚ	__class__r   )r4   Úobjr/   ÚsÚobj2Zscore2r    r    r!   Útest_picklek   s   

ýr<   c                  C   sv   t  ddgddgddgddgddgg¡} t  g d¢¡}tdd}| | |¡ t  d	d
gddgg¡}t j |j|¡ d S )Nr   r
   r   é   é   )r
   r
   r   r   r   r1   ©r2   g;4,F]ëè?gðCïžMXë?gJ¸Gpƒ@g‚Uõò@)r,   Úarrayr   r   Ztestingr   Ú
centroids_)r   r   r   Zexpected_resultr    r    r!   Útest_shrinkage_correct~   s   (
rB   c                  C   sN   t dd} t t¡}d||dk< |  t|¡ | j}|  tt¡ t|| jƒ d S )Ng{®Gáz„?r?   r   r	   )r   r,   Úasarrayr   r   r   rA   r   )r   Zy_indZcentroid_encodedr    r    r!   Ú"test_shrinkage_threshold_decoded_yŒ   s   

rD   c                  C   s†   t j d¡} |  dd¡}|  ddd¡}|  d¡}tdd}| ||¡ | |¡}tdd}|| }| ||¡ | |¡}t||ƒ d S )Nr   é2   r   r1   r?   )	r,   ÚrandomÚRandomStateZrandÚrandintr   r   r   r   )Úrngr   r   Únoiser   Zy_initZX_noiseZy_translater    r    r!   Útest_predict_translated_data–   s   




rK   c                 C   sV   | t ƒ}tdd}| t t¡ |j}| |t¡ t|j|ƒ t|ddgddggƒ d S )Nr$   r%   r	   r
   )r   r   r   r   rA   r   )r   r   r   Zdense_centroidr    r    r!   Útest_manhattan_metric§   s   
rL   c                  C   s‚   t  d¡} d| d d …df< d| d d …df< t  d¡}d|d< tdd}t t¡ | | |¡ W d   ƒ d S 1 s:w   Y  d S )	N)é
   r   g$bŒ@£‘Á¿r   g_LéOÑ‡ï¿r
   rM   r1   r?   )r,   ÚemptyZzerosr   ÚpytestÚraisesÚ
ValueErrorr   )r   r   r   r    r    r!   Útest_features_zero_var´   s   


"ÿrR   c                  C   sN   t ddgd} tjtdd |  tt¡ W d  ƒ dS 1 s w   Y  dS )zGCheck that we raise an error when the user-defined priors are negative.r   é   r   zpriors must be non-negative©ÚmatchN)r   rO   rP   rQ   r   r   r   )r   r    r    r!   Útest_negative_priors_errorÂ   s   "ÿrV   c                  C   sp   ddg} t | d}tjtdd | tt¡ W d  ƒ n1 s!w   Y  t|jt	 
| ¡t	 
| ¡ ¡  ƒ dS )zfCheck that we raise a warning and normalize the user-defined priors when they
    don't sum to 1.
    r   rS   r   zAThe priors do not sum to 1. Normalizing such that it sums to one.rT   N)r   rO   ZwarnsÚUserWarningr   r   r   r   Zclass_prior_r,   rC   Úsum)r   r   r    r    r!   Útest_warn_non_normalized_priorsÉ   s   
þü$rY   Úresponse_method)r   r   Zpredict_log_probac                 C   sP   t dd tt¡}t t¡ t|| ƒtƒ W d  ƒ dS 1 s!w   Y  dS )z{Check that we raise an AttributeError with Manhattan metric when trying
    to call a non-thresholded response method.
    r$   r%   N)	r   r   r   r   rO   rP   ÚAttributeErrorÚgetattrr   )rZ   r   r    r    r!   Ú(test_method_not_available_with_manhattanØ   s   "ÿr]   Úarray_constructorc                 C   sx   t  ttƒdf¡}|dd…df  d9  < | |ƒ}tƒ }tjtdd | |t¡ W d  ƒ dS 1 s5w   Y  dS )zHCheck that we raise an error when the variance for all features is zero.r   Nr
   zAll features have zero variancerT   )	r,   ZonesÚlenr   r   rO   rP   rQ   r   )r^   r   r   r    r    r!   Útest_error_zero_variancesä   s   "ÿr`   )/Ú__doc__Únumpyr,   rO   Zsklearnr   Zsklearn.neighborsr   Zsklearn.utils._testingr   r   r   Zsklearn.utils.fixesr   r   r   r   r   r   r   r   Z	load_irisr)   rF   rG   rI   Zpermutationr+   ÚsizeÚpermr*   ÚmarkZparametrizer"   r0   r3   r<   rB   rD   rK   rL   rR   rV   rY   r]   r@   r`   r    r    r    r!   Ú<module>   sL    (
3


ÿ
	