
    h$,f(              
       ,   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g dZddgd
d
gdd
ggZg dZ ej                          Zej$                  j'                  d	      Zej+                  ej,                  j.                        Zej2                  e   e_        ej,                  e   e_        ej4                  j7                  de      d        Zej4                  j;                  d      d        Zej4                  j;                  d      d        Zd Z d Z!d Z"d Z#ej4                  j7                  de      d        Z$ej4                  j7                  d e% e&e	jN                  ddhz
                    d        Z(d Z)y)z*
Testing for the nearest centroid module.
    N)assert_array_equal)datasets)NearestCentroid)CSR_CONTAINERS      )r   r   r   r	   r	   r	      )r   r	   r	   csr_containerc                     | t               } | t              }t               }|j                  t         t               t        |j                  t              t               t               }|j                  |t               t        |j                  |      t               t               }|j                  |t               t        |j                  t              t               t               }|j                  t         t               t        |j                  |      t               t               }|j                  |j                         t               t        |j                  |j                               t               y )N)
XTr   fityr   predicttrue_resulttocootolil)r   X_csrT_csrclfs       Mlib/python3.12/site-packages/sklearn/neighbors/tests/test_nearest_centroid.pytest_classification_toyr      s     !E!E

CGGAqMs{{1~{3 
CGGE1s{{5);7 
CGGE1s{{1~{3 
CGGAqMs{{5);7 
CGGEKKM1s{{5;;=1;?    z9ignore:Support for distance metrics:FutureWarning:sklearnc                  8   dD ]  } t        |       j                  t        j                  t        j                        }t        j                  |j                  t        j                        t        j                  k(        }|dkD  rJ dt        |      z           y )N	euclideancosinemetricg?Failed with score = 	r   r   irisdatatargetnpmeanr   str)r!   r   scores      r   	test_irisr+   ;   ss     * @V,00DKKHDII.$++=>s{?2SZ??{@r   c                  L   dD ]  } dD ]  }t        | |      }|j                  t        j                  t        j                        }t        j                  |j                  t        j                        t        j                  k(        }|dkD  rJ dt        |      z            y )Nr   )N皙?g      ?)r!   shrink_thresholdg?r"   r#   )r!   r.   r   r*   s       r   test_iris_shrinkager/   E   s     * D 0 	D!BRSC''$))T[[1CGGCKK		2dkkABE3;C 6U CC;		DDr   c                     dd l } t               }|j                  t        j                  t        j
                         |j                  t        j                  t        j
                        }| j                  |      }| j                  |      }t        |      |j                  k(  sJ |j                  t        j                  t        j
                        }t        ||d       y )Nr   z>Failed to generate same score after pickling (classification).)pickler   r   r$   r%   r&   r*   dumpsloadstype	__class__r   )r1   objr*   sobj2score2s         r   test_pickler:   P   s     
CGGDIIt{{#IIdii-ESA<<?D:&&&ZZ		4;;/FHr   c                  @   t        j                  ddgddgddgddgddgg      } t        j                  g d      }t        d      }|j                  | |       t        j                  d	d
gddgg      }t         j                  j                  |j                  |       y )Nr   r	   r
         )r	   r	   r
   r
   r
   r-   r.   g;4,F]?gCMX?gJGp@gU@)r'   arrayr   r   testingassert_array_almost_equal
centroids_)r   r   r   expected_results       r   test_shrinkage_correctrD   c   s     	1a&1a&1a&1a&1a&9:A
!A
3
/CGGAqMhhI 688LMNOJJ((Ir   c                     t        d      } t        j                  t              }d||dk(  <   | j	                  t
        |       | j                  }| j	                  t
        t               t        || j                         y )Ng{Gz?r>   r   r   )r   r'   asarrayr   r   r   rB   r   )r   y_indcentroid_encodeds      r   "test_shrinkage_threshold_decoded_yrI   q   s[    
4
0CJJqMEE%2+GGAu~~GGAqM'8r   c                     t         j                  j                  d      } | j                  dd      }| j	                  ddd      }| j                  d      }t        d      }|j                  ||       |j                  |      }t        d      }||z   }|j                  ||       |j                  |      }t        ||       y )Nr   2   r   r-   r>   )	r'   randomRandomStaterandrandintr   r   r   r   )rngr   r   noiser   y_initX_noisey_translates           r   test_predict_translated_datarU   {   s     ))


"CRAAq"AHHRLE
3
/CGGAqM[[^F
3
/C%iGGGGQ++g&Kv{+r   c                      | t               }t        d      }|j                  t         t               |j                  }|j                  |t               t        |j                  |       t        |ddgddgg       y )N	manhattanr    r   r	   )r   r   r   r   rB   r   )r   r   r   dense_centroids       r   test_manhattan_metricrY      sa     !E

-CGGAqM^^NGGE1s~~~6~R1a&'9:r   r!   rW   r   c                     t        |       }t        j                  t        d      5  |j	                  t
        t               d d d        y # 1 sw Y   y xY w)Nr    z?Support for distance metrics other than euclidean and manhattan)match)r   pytestwarnsFutureWarningr   r   r   )r!   r   s     r   (test_deprecated_distance_metric_supportsr_      sD    
 
(C	O
  	1	  s   AAc                     t        j                  d      } d| d d df<   d| d d df<   t        j                  d      }d|d<   t        d      }t	        j
                  t              5  |j                  | |       d d d        y # 1 sw Y   y xY w)	N)
   r
   g$b@r   g_LOчr	   ra   r-   r>   )r'   emptyzerosr   r\   raises
ValueErrorr   )r   r   r   s      r   test_features_zero_varrf      sz     	AAadGAadG
"AAaD
3
/C	z	" 1  s   'BB)*__doc__numpyr'   r\   numpy.testingr   sklearnr   sklearn.neighborsr   sklearn.utils.fixesr   r   r   r   r   	load_irisr$   rL   rM   rP   permutationr&   sizepermr%   markparametrizer   filterwarningsr+   r/   r:   rD   rI   rU   rY   sortedlist_valid_metricsr_   rf    r   r   <module>rx      s     ,  - . 	"XBx"bAq6Aq6Aq6:"X1v1v xiiA
t{{''(IIdO	kk$ .9@ :@> WX@ Y@ WXD YD&J9," .9	; :	; fT/88K;UUVWr   