
    Pi-%              
       @   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 d dl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 e0efi e1                                          d              Z2ej'        (                    d! eee                    d"             Z3d# Z4e
e4gee4giZ5e5fd$Z6ej'        (                    d% e            e&          ej'        (                    d' e6                      d(                         Z7d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)check_array_api_metric)_get_namespace_device_dtype_ids)yield_namespace_device_dtype_combinations)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     }/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/metrics/cluster/tests/test_common.py"test_symmetric_non_symmetric_unionr%   b   sC    #&;;<<A A      r#   zmetric_name, y1, y2c                 ,    g | ]}|t           t          fS r"   y1y2.0names     r$   
<listcomp>r-   i   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_symmetryr4   h   C      ,F6"b>>V]66"b>>::::::::r#   c                 ,    g | ]}|t           t          fS r"   r'   r*   s     r$   r-   r-   q   s    MMMtT2rNMMMr#   c                 |    t           |          } |||          t          j         |||                    k    sJ d S r   r/   r2   s       r$   test_non_symmetryr8   p   r5   r#   r3   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      r:   r:   )r   r   r   r:   r:   )r   r   r   r:      g        )r   r   r:   r:   r;   )r   r   r:   r:   r:   )r   r:   r:   r:   r:   g      ?)r   r   r   r   r   r   )r   r:   r;   r         r   )r!   r0   r1   nparrayany)r3   upper_bound_1upper_bound_2r   lower_bound_1lower_bound_2scores          r$   test_normalized_outputrF   x   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   r:   r:   r   r:   r:   r   r:   r   r:   r:   r   r:   
      rI   r   )r>   r?   r!   r   UNSUPERVISED_METRICSrandomrandint)r3   y_labely_predr   score_1Xs         r$   test_permute_labelsrS      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   r:   r:   r:   r:   )r   r:   r;   r   r<   r=      rK   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 rX   rY   r[   s     r$   r-   zDtest_format_invariance.<locals>.generate_formats.<locals>.<listcomp>   s"    888c!fftm888r#   )dtypezarray of strsr:   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#   rI   )   rI   r   )r!   ziprL   r>   rM   rN   astypefloat)r3   y_truerP   rb   r   rQ   
y_true_gen
y_pred_gen
y_true_fmtfmt_name
y_pred_fmt_rR   s                r$   test_format_invariancern      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   r:   )r:   r   )r:   r:   r"   )r   ijs      r$   test_single_samplerr      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   r:   rI   )r;   rI   r   zcontains (NaN|infinity))match)	r!   r>   infnanrM   rN   r0   raises
ValueError)r3   metric_funcinvalidsrR   argss        r$   test_inf_nan_inputr|      sH    (((Vbfbf%&Vbfbf%&Vbfbf%&
 Ibw//()A/?+@1rvrvFVBWX	z)C	D	D	D   	 	DK	                 s   'D  DDr,   c                    t           j                            d          }|                    dd          }|                    ddd          }|                    ddd          }| t          v rt          |          } |||          }nt
          |          } |||          }t          |t                    sJ t          |t           j        t           j	        f          rJ dS )zEnsure that the returned values of all metrics are consistent.

    It can only be a float. It should not be a numpy float64 or float32.
    r   rI   )   rI   r   r   )r~   N)
r>   rM   RandomStaterN   r!   rL   
isinstancerf   float64float32)r,   rngrR   labels_truelabels_predr   rE   s          r$   test_returned_value_consistencyr      s     )


"
"CBX&&A++a+//K++a+//K!!!#D){K00%d+q+&&eU#####%"*bj!9:::::::r#   c                     t          j        g d          }t           j                            dd          }t	          | |||||           d S )NrH   rI   rJ   r   )a_npb_np)r>   r?   rM   rN   r   )r   array_namespacedevice
dtype_namerP   rR   s         r$   #check_array_api_unsupervised_metricr      se    X+++,,F
	"7++A     r#   c              #   T   K   |                                  D ]\  }}|D ]}||fV  	d S r   )items)metric_checkersr   checkerscheckers       r$   !yield_metric_checker_combinationsr   
  sW      +1133 " " 	" 	"G'/!!!!	"" "r#   z#array_namespace, device, dtype_name)idszmetric, check_funcc                 "     || |||           d S r   r"   )r   r   r   r   
check_funcs        r$   test_array_api_compliancer     s      Jv
;;;;;r#   )8	functoolsr   	itertoolsr   numpyr>   r0   sklearn.metrics.clusterr   r   r   r   r	   r
   r   r   r   r   r   r   !sklearn.metrics.tests.test_commonr   sklearn.utils._array_apir   r   sklearn.utils._testingr   r!   rL   r   r    NORMALIZED_METRICSrM   r   r   rN   r(   r)   r%   markparametrizer4   r8   rF   rS   rn   valuesrr   dictr   r|   r   r   array_api_metric_checkersr   r   r"   r#   r$   <module>r      s                                               E D D D D D        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    '9;O!P!PQQ; ; RQ;,   + +	  7P " " " " )--//'   
 -/P/P/R/RSS< < TS < < <r#   