U
    }±Ëhu  ã                   @   sv  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
 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e e¡Zdddd	d	d	gZddgd
d
gdd
ggZe e¡Zdd	d	gZe
 ¡ Zej d	¡Ze ejj¡Zeje e_eje e_dd„ Zej  d¡dd„ ƒZ!ej  d¡dd„ ƒZ"dd„ Z#dd„ Z$dd„ Z%dd„ Z&dd„ Z'ej (de)e*ej+ddh ƒƒ¡d d!„ ƒZ,d"d#„ Z-dS )$z*
Testing for the nearest centroid module.
é    N)Úassert_array_equal)Úsparse)Údatasets)ÚNearestCentroidéþÿÿÿéÿÿÿÿé   é   é   c                  C   s¶   t ƒ } |  tt¡ t|  t¡tƒ t ƒ } |  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)r   ÚfitÚXÚyr   ÚpredictÚTÚtrue_resultÚX_csrÚT_csrZtocooZtolil)Úclf© r   úQ/tmp/pip-unpacked-wheel-ig1s1lm8/sklearn/neighbors/tests/test_nearest_centroid.pyÚtest_classification_toy   s    r   z9ignore:Support for distance metrics:FutureWarning:sklearnc                  C   sT   dD ]J} t | d tjtj¡}t | tj¡tjk¡}|dkstdt	|ƒ ƒ‚qd S )N©Ú	euclideanZcosine©ÚmetricgÍÌÌÌÌÌì?úFailed with score = ©
r   r   ÚirisÚdataÚtargetÚnpZmeanr   ÚAssertionErrorÚstr)r   r   Úscorer   r   r   Ú	test_iris9   s    r$   c                  C   sd   dD ]Z} dD ]P}t | |d}| tjtj¡}t | tj¡tjk¡}|dkstdt	|ƒ ƒ‚qqd S )Nr   )Nçš™™™™™¹?g      à?)r   Úshrink_thresholdgš™™™™™é?r   r   )r   r&   r   r#   r   r   r   Útest_iris_shrinkageC   s    r'   c                  C   st   dd l } tƒ }| tjtj¡ | tjtj¡}|  |¡}|  |¡}t	|ƒ|j
ksTt‚| 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!   r   )r(   Úobjr#   ÚsÚobj2Zscore2r   r   r   Útest_pickleN   s    

ýr0   c                  C   s|   t  ddgddgddgddgddgg¡} t  dddddg¡}tdd}| | |¡ t  dd	gd
dgg¡}t j |j|¡ d S )Nr   r   r	   é   é   r%   ©r&   g;4,F]ëè?gðCïžMXë?gJ¸Gpƒ@g‚Uõò@)r    Úarrayr   r   ZtestingZassert_array_almost_equalÚ
centroids_)r   r   r   Zexpected_resultr   r   r   Útest_shrinkage_correcta   s    (
r6   c                  C   sN   t dd} t t¡}d||dk< |  t|¡ | j}|  tt¡ t|| jƒ d S )Ng{®Gáz„?r3   r   r   )r   r    Zasarrayr   r   r   r5   r   )r   Zy_indZcentroid_encodedr   r   r   Ú"test_shrinkage_threshold_decoded_yo   s    

r7   c                  C   s†   t j d¡} |  dd¡}|  ddd¡}|  d¡}tdd}| ||¡ | |¡}tdd}|| }| ||¡ | |¡}t||ƒ d S )Nr   é2   r
   r%   r3   )	r    ÚrandomÚRandomStateZrandÚrandintr   r   r   r   )Úrngr   r   Znoiser   Zy_initZX_noiseZy_translater   r   r   Útest_predict_translated_datay   s    




r=   c                  C   sN   t dd} |  tt¡ | j}|  tt¡ t| j|ƒ t|ddgddggƒ d S )NÚ	manhattanr   r   r   )r   r   r   r   r5   r   r   )r   Zdense_centroidr   r   r   Útest_manhattan_metricŠ   s    
r?   r   r>   r   c              	   C   s4   t | d}tjtdd | tt¡ W 5 Q R X d S )Nr   z?Support for distance metrics other than euclidean and manhattan)Úmatch)r   ÚpytestZwarnsÚFutureWarningr   r   r   )r   r   r   r   r   Ú(test_deprecated_distance_metric_supports–   s    
þrC   c               	   C   sl   t  d¡} d| d d …df< d| d d …df< t  d¡}d|d< tdd}t t¡ | | |¡ W 5 Q R X d S )	N)é
   r	   g$bŒ@£‘Á¿r   g_LéOÑ‡ï¿r   rD   r%   r3   )r    ÚemptyÚzerosr   rA   ZraisesÚ
ValueErrorr   )r   r   r   r   r   r   Útest_features_zero_var£   s    


rH   ).Ú__doc__Znumpyr    rA   Znumpy.testingr   Zscipyr   ÚspZsklearnr   Zsklearn.neighborsr   r   Z
csr_matrixr   r   r   r   r   Z	load_irisr   r9   r:   r<   Zpermutationr   ÚsizeÚpermr   r   ÚmarkÚfilterwarningsr$   r'   r0   r6   r7   r=   r?   ZparametrizeÚsortedÚlistZ_valid_metricsrC   rH   r   r   r   r   Ú<module>   sB   (




	



 ÿ

