
    -i                        S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	  S SK
Jr  \R                  R                  SSS/5      \R                  R                  S	S
S/5      S 5       5       r\R                  R                  S\5      S 5       r\R                  R                  SSS/5      S 5       rS r\R                  R                  S\S/-   5      S 5       r\R                  R                  S\S/-   5      S 5       r\R                  R                  S\S/-   5      S 5       r\R                  R                  SS5      S 5       rS rg)    N)BisectingKMeans)v_measure_score)assert_allcloseassert_array_equal)CSR_CONTAINERSbisecting_strategybiggest_inertialargest_clusterinitz	k-means++randomc                 h   [         R                  " SS/SS/SS/SS/SS/SS/SS/SS/SS//	5      n[        SSU US9nUR                  U5        SS/SS/SS//n/ S	Qn[	        [        U5      [        UR                  R                  5       5      5        [	        [        XSR                  5      S
5        g)zfTries to perform bisect k-means for three clusters to check
if splitting data is performed correctly.
   
      r         	   )
n_clustersrandom_stater   r   )	r   r   r   r   r   r   r   r   r   g      ?N)
nparrayr   fitr   sortedcluster_centers_tolistr   labels_)r   r   Xbisect_meansexpected_centersexpected_labelss         \/var/www/html/venv/lib/python3.13/site-packages/sklearn/cluster/tests/test_bisect_k_means.pytest_three_clustersr"   
   s     	
Q"a1a&2q'Aq6B7RGb!WrSUhW	A #-	L QAQ"a11O &)F)F)M)M)O"P OO5I5IJCP    csr_containerc                     [         R                  R                  S5      nUR                  SS5      nSX"S:  '   U " U5      n[	        SSS9nUR                  U5        UR                  nUR                  U5        UR                  n[        XeSS9  g	)
znTest Bisecting K-Means with sparse data.

Checks if labels and centers are the same between dense and sparse.
r      r   皙?r   r   r   g:0yE>)atolN)r   r   RandomStaterandr   r   r   r   )r$   rngr   X_csrr   sparse_centersnormal_centerss          r!   test_sparser0   $   s     ))


"CQAA#gJ!E"aa@LU!22NQ!22N N>r#   r         c                    [         R                  R                  S5      nUR                  SS5      n[	        U SS9nUR                  U5        [        [         R                  " UR                  5      [         R                  " U 5      5        g)z:Test if resulting labels are in range [0, n_clusters - 1].r   r   r   r(   N)
r   r   r*   r+   r   r   r   uniquer   arange)r   r,   r   r   s       r!   test_n_clustersr6   =   sc     ))


"CQA"jqILQryy!5!56		*8MNr#   c                  `   [         R                  " SS/SS/SS//5      n [        SSS9R                  U 5      n[	        UR
                  S:H  5      (       d   e[	        UR                  U 5      S:H  5      (       d   e[        UR                  U R                  SS9R                  SS5      5        g	)
zTest single cluster.r   r   r   r   r   r(   )axisN)r   r   r   r   allr   predictr   r   meanreshape)r   r   s     r!   test_one_clusterr>   J   s     	1a&2q'B7+,A"aa@DDQGL |##q())))|##A&!+,,,,L11166q6>3I3I!R3PQr#   c                 
   [         R                  R                  S5      nUR                  SS5      nU b  SX"S:  '   U " U5      n[	        SSS9nUR                  U5        [        UR                  UR                  U5      5        g)zFCheck if labels from fit(X) method are same as from fit(X).predict(X).r   r   r   Nr'   r   r(   )	r   r   r*   r+   r   r   r   r   r;   )r$   r,   r   r   s       r!   test_fit_predictr@   X   sw     ))


"CQA c'
!"aa@LQ|++\-A-A!-DEr#   c                    [         R                  R                  S5      nUR                  SS5      R	                  USS9nU b  SX3S:  '   U " U5      n[        SSS	9nUR                  U5        UR                  R                  U:X  d   eg)
z9Check that centers dtype is the same as input data dtype.r   r   r   F)copyNr'   r   r(   )	r   r   r*   r+   astyper   r   r   dtype)r$   global_dtyper,   r   kms        r!   test_dtype_preservedrG   i   s     ))


"CQ|%8A c'
!	AA	6BFF1I$$444r#   c                    [         R                  R                  S5      nUR                  SS5      nU b  SX"S:  '   U " U5      n[	        SSS9R                  U5      n[	        SSS9R                  UR                  [         R                  5      5      n[        UR                  UR                  5        [        UR                  UR                  5        g)z@Check that the results are the same between float32 and float64.r   r   r   Nr'   r   r(   )r   r   r*   r+   r   r   rC   float32r   r   r   r   )r$   r,   r   km64km32s        r!    test_float32_float64_equivalencerL   y   s     ))


"CQA c'
!aa8<<Q?Daa8<<QXXbjj=QRDD))4+@+@At||T\\2r#   	algorithm)lloydelkanc                    [         R                  R                  S5      nUR                  SS5      n[	        SU S9R                  U5      nSUR                  SS5      -  nUR                  U5      n[         R                  " [         R                  " U5      [         R                  " S5      5      R                  5       (       d   eg )Nr   i  r   )r   rM   2   d   )r   r   r*   r+   r   r   r;   isinr4   r5   r:   )rM   r,   X_trainbkmX_testlabelss         r!   !test_no_crash_on_empty_bisectionsrX      s     ))


"ChhtR G
R9
=
A
A'
JC #((3##F[[ F77299V$biim488::::r#   c                  p    [         R                  R                  SS9n [        SSS9R	                  U 5        g )N)   r   )sizer	   r   )r   r   )r   r   normalr   r   )r   s    r!   test_one_featurer]      s1     			h'A'8qIMMaPr#   )numpyr   pytestsklearn.clusterr   sklearn.metricsr   sklearn.utils._testingr   r   sklearn.utils.fixesr   markparametrizer"   r0   r6   r>   r@   rG   rL   rX   r]    r#   r!   <module>rg      sp     + + F . -0ACT/UV+x!89Q : WQ0 .9? :?0 1v.	O /	OR .D6*ABF CF  .D6*AB5 C5 .D6*AB3 C3  &89; :;Qr#   