
    0Ph              
          d dl mZ d dlmZ d dlZd dlZd dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZ ee	eeeeeeed	Ze eed          e
ed	Zg d
ZddgZg dZej                            d           Ze                    dd          Ze                    dd          Z d Z!ej"        #                    dd eD                       d             Z$ej"        #                    dd eD                       d             Z%ej"        #                    de          d             Z&ej"        #                    d eee                    d             Z'ej"        #                    d eee                    d             Z(ej"        #                    de)                                          d             Z*ej"        #                    d e+efi e,                                          d             Z-dS )    )partial)chainN)adjusted_mutual_info_scoreadjusted_rand_scorecalinski_harabasz_scorecompleteness_scoredavies_bouldin_scorefowlkes_mallows_scorehomogeneity_scoremutual_info_scorenormalized_mutual_info_score
rand_scoresilhouette_scorev_measure_score)assert_allclose)	r   r   r   r   r   r   r   r   r
   	manhattan)metric)r   silhouette_manhattanr   r	   )r   r   r   r   r   r   r
   r   r   )r   r   r   r   r   r   r
   r         sizec                  n    t          t          t          z             t          t                    k    sJ d S N)sortedSYMMETRIC_METRICSNON_SYMMETRIC_METRICSSUPERVISED_METRICS     i/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/metrics/cluster/tests/test_common.py"test_symmetric_non_symmetric_unionr"   ]   sC    #&;;<<A A      r    zmetric_name, y1, y2c                 ,    g | ]}|t           t          fS r   y1y2.0names     r!   
<listcomp>r*   d   s    IIItT2rNIIIr    c                 |    t           |          } |||          t          j         |||                    k    sJ d S r   r   pytestapproxmetric_namer%   r&   r   s       r!   test_symmetryr1   c   C      ,F6"b>>V]66"b>>::::::::r    c                 ,    g | ]}|t           t          fS r   r$   r'   s     r!   r*   r*   l   s    MMMtT2rNMMMr    c                 |    t           |          } |||          t          j         |||                    k    sJ d S r   r,   r/   s       r!   test_non_symmetryr5   k   r2   r    r0   c                    g d}g d}t           |          } |g dg d          dk    sJ  |g dg d          dk    sJ  |g dg d          dk     sJ  |g dg d          dk     sJ  |||          t          j        d          k    sJ g d	}g d
}t          j         |||           |||          g          }|dk                                     rJ d S )N)r   r   r      r7   r7   )r   r   r   r7   r7   )r   r   r   r7      g        )r   r   r7   r7   r8   )r   r   r7   r7   r7   )r   r7   r7   r7   r7   g      ?)r   r   r   r   r   r   )r   r7   r8   r         r   )r   r-   r.   nparrayany)r0   upper_bound_1upper_bound_2r   lower_bound_1lower_bound_2scores          r!   test_normalized_outputrC   s   sF   &&&M&&&M,F6///???33c99996///???33c99996///???33c99996///???33c99996-//6=3E3EEEEE&&&M&&&MH	}	-	-vvm]/S/ST E 	       r    c                    t          j        g d          }t          j        g d          }| t          v rut          |          } |||          }t          | |d|z
  |                     t          | |d|z
  d|z
                       t          | ||d|z
                       d S t          |          }t           j                            dd          } |||          }t          | ||d|z
                       d S )N)r   r   r   r7   r7   r   r7   )r7   r   r7   r   r7   r7   r   r7   
   )   rE   r   )r;   r<   r   r   UNSUPERVISED_METRICSrandomrandint)r0   y_labely_predr   score_1Xs         r!   test_permute_labelsrN      s    h,,,--GX+++,,F(((#K0&))F
G!<!<===F
AK!@!@AAAG!<!<=====%k2Ibw//&F##1v:!6!677777r    c                    g d}g d}d }| t           v r_t           |          } |||          } ||          } ||          }t          ||          D ]\  \  }}	\  }
}| |||
          k    sJ d S t          |          }t          j                            dd          } |||          }| ||                    t                    |          k    sJ  ||          }|D ]\  }}	| |||          k    sJ d S )N)r   r   r   r   r7   r7   r7   r7   )r   r7   r8   r   r9   r:      rF   c              3   L  K   t          j        |           } | dfV  |                                 dfV  d |                                 D             dfV  t          j        d |                                 D             t                    dfV  | dz
  d	fV  | dz   d
fV  d S )Nzarray of intszlist of intsc                 2    g | ]}t          |          d z   S z-astrr(   xs     r!   r*   zDtest_format_invariance.<locals>.generate_formats.<locals>.<listcomp>   s"    111s1vv}111r    zlist of strsc                 2    g | ]}t          |          d z   S rS   rT   rV   s     r!   r*   zDtest_format_invariance.<locals>.generate_formats.<locals>.<listcomp>   s"    888c!fftm888r    )dtypezarray of strsr7   zincluding negative intszstrictly positive ints)r;   r<   tolistobject)ys    r!   generate_formatsz0test_format_invariance.<locals>.generate_formats   s      HQKK    hhjj.((((11ahhjj111>AAAAH88QXXZZ888GGG
 	
 	
 	
 !e.....!e-------r    rE   )   rE   r   )r   ziprG   r;   rH   rI   astypefloat)r0   y_truerK   r]   r   rL   
y_true_gen
y_pred_gen
y_true_fmtfmt_name
y_pred_fmt_rM   s                r!   test_format_invarianceri      so    &%%F%%%F
. 
. 
. (((#K0&((%%f--
%%f--
7::z7R7R 	= 	=3"ZOZffZ<<<<<<<	= 	= &k2Ibw//&F##&&%&999999%%f--
$. 	4 	4 JffQ
3333333	4 	4r    r   c                 2    dD ]\  }} | |g|g           d S )N))r   r   )r   r7   )r7   r   )r7   r7   r   )r   ijs      r!   test_single_samplerm      s:     1  1sQC r    zmetric_name, metric_funcc                    | t           v rTddgt          j        t          j        gfddgt          j        t          j        gfddgt          j        t          j        gfg}nnt          j                            dd          }|t          j        t          j        gf|t          j        t          j        gf|t          j        t          j        gfg}t          j        t          d          5  |D ]} ||  	 d d d            d S # 1 swxY w Y   d S )Nr   r7   rE   )r8   rE   r   zcontains (NaN|infinity))match)	r   r;   infnanrH   rI   r-   raises
ValueError)r0   metric_funcinvalidsrM   argss        r!   test_inf_nan_inputrw      sH    (((Vbfbf%&Vbfbf%&Vbfbf%&
 Ibw//()A/?+@1rvrvFVBWX	z)C	D	D	D   	 	DK	                 s   'D  DD).	functoolsr   	itertoolsr   numpyr;   r-   sklearn.metrics.clusterr   r   r   r   r	   r
   r   r   r   r   r   r   sklearn.utils._testingr   r   rG   r   r   NORMALIZED_METRICSrH   RandomStaterngrI   r%   r&   r"   markparametrizer1   r5   rC   rN   ri   valuesrm   dictitemsrw   r   r    r!   <module>r      s                                               3 2 2 2 2 2 #=.,**$@&2
 
  )#G$4[III60	       -.BC 	 	 	  	iA[[[[[[   II7HIII ; ; ;
 MM7LMMM ; ; ;
 (:;;! ! <;!$ .@BV(W(WXX8 8 YX8$ .@BV(W(WXX4 4 YX4B #5#<#<#>#>??  @? %7 P P;O P P V V X X     r    