o
    \i:                     @   s&  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZmZmZ d dlmZ d dlmZmZmZ d dlmZ dd	 Zed Zd
ZdZdZeeefZeeefZedZ edZ!eeeg\Z"Z#edk ej$Z%edk ej$Z&ee%e&g\Z'Z(eeefZ)e*e)e)j+Z,di fdi fde-ddfdi fde-eefdfde-e,fdfdi fdi fdi fde-deefdfg
Z.ej/j0de.d d! d"ej/0d#eefe e!fe"e#fgej/0d$ed%d& Z1ej/0d'eej/0d(e%e&fe'e(fgej/0d$ed)d* Z2ej/j0de.d+d! d"ej/0d,ee e"gej/0d$ed-d. Z3ej/j0de.d/d! d"d0d1 Z4ej/0d'eej/0d2e%e'gej/0d$ed3d4 Z5ej/0d5d6d7gej/j0de.d8d! d"ej/0d,ee gd9d: Z6ej/0d'eej/0d2e%e'gd;d< Z7ej/0d#eefe e!fe"e#fgej/0d$ed=d> Z8d?d@ Z9dAdB Z:dCdD Z;ej/0dEe<g dFe=dGfe<dHdIej>ge=dJfgdKdL eD e<g dMe=dNfe<g e=dOfdPdQ Z?dRdS Z@ej/0dTe.ej/0dUejAej$fdVdW ZBdXdY ZCdZd[ ZDdS )\    N)cdist)DistanceMetric)BOOL_METRICSDEPRECATED_METRICSDistanceMetric32DistanceMetric64)check_random_state)assert_allclosecreate_memmap_backed_dataignore_warnings)CSR_CONTAINERSc                 C   s   t | | | d|  S )Ng      ?)npsum)x1x2p r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/metrics/tests/test_dist_metrics.py	dist_func   s   r            float32g333333?gffffff?	euclidean	cityblock	minkowski)      ?         ?      r   	chebyshev
seuclideanVmahalanobisVIhammingcanberra
braycurtis)r   r   r   r    r   wmetric_param_gridc                 C      | d S Nr   r   paramsr   r   r   <lambda>A       r3   )idszX, Ycsr_containerc                 C   s:  | \}}|  }||||}}tj|  D ]}	tt||	}
i }|dkr1|jtjkr1ddi}t	|||fi |
}t
j||jfi |
}|||}|jjsRJ t||fi | |||}|jjsgJ t||fi | |||}|jjs|J t||fi | |||}|jjsJ t||fi | qd S Nr&   rtolư>keys	itertoolsproductvaluesdictzipdtyper   r   r   r   
get_metricpairwiseflagsc_contiguousr	   )r.   XYr6   metric
param_gridr;   X_csrY_csrvalskwargs	rtol_dictD_scipy_cdistdm	D_sklearnr   r   r   
test_cdist@   s.   rR   rH   zX_bool, Y_boolc           	      C   s
  | t v r ttd t||| }W d    n1 sw   Y  nt||| }t| }|||}t|| ||||}}|||}|jj	sKJ t|| |||}|jj	s\J t|| |||}|jj	smJ t|| |||}|jj	s~J t|| d S N)category)
r   r   DeprecationWarningr   r   rB   rC   r	   rD   rE   )	rH   X_boolY_boolr6   rO   rP   rQ   
X_bool_csr
Y_bool_csrr   r   r   test_cdist_bool_metrick   s,   




rZ   c                 C   r/   r0   r   r1   r   r   r   r3      r4   rF   c                 C   s  | \}}|  }||}tj|  D ]k}tt||}i }	|dkr,|jtjkr,ddi}	t	|||fi |}
t
j||jfi |}||}|jjsLJ t||
fi |	 ||}|jjs`J t||
fi |	 |||}|jjsuJ t||
fi |	 qd S r7   r:   )r.   rF   r6   rH   rI   r;   rJ   rL   rM   rN   D_scipy_pdistrP   rQ   D_sklearn_csrr   r   r   
test_pdist   s(   

r]   c                 C   r/   r0   r   r1   r   r   r   r3      r4   c                 C   s   | \}}|  }d}tj|  D ]S}tt||}tj|tj	fi |}tj|tj
fi |}|t}	|t}
|	jtj	ksBJ |
jtj
ksJJ t|	|
|d |tt}	|tt}
t|	|
|d qd S )Ngh㈵>r8   )r;   r<   r=   r>   r?   r@   r   rB   r   float64r   rC   X64X32rA   r	   Y64Y32)r.   rH   rI   r;   r8   rL   rM   dm64dm32D64D32r   r   r   'test_distance_metrics_dtype_consistency   s    

rh   rV   c                 C   s   | t v r ttd t||| }W d    n1 sw   Y  nt||| }t| }||}t|| ||}||}t|| d S rS   )r   r   rU   r   r   rB   rC   r	   )rH   rV   r6   r[   rP   rQ   rX   r   r   r   test_pdist_bool_metrics   s   



ri   writable_kwargsTFc                 C   r/   r0   r   r1   r   r   r   r3      r4   c                 C   s   |\}}|  }tj|  D ]J}tdd |D r0t|}|D ]}t|tj	r/|j
| d q!tt||}tj||jfi |}	|	|}
tt|	}||}t|
| qd S )Nc                 s   s    | ]	}t |tjV  qd S N)
isinstancer   ndarray).0valr   r   r   	<genexpr>   s    ztest_pickle.<locals>.<genexpr>write)r;   r<   r=   r>   anycopydeepcopyrl   r   rm   setflagsr?   r@   r   rB   rA   rC   pickleloadsdumpsr	   )rj   r.   rF   rH   rI   r;   rL   ro   rM   rP   D1dm2D2r   r   r   test_pickle   s    


r}   c                 C   s<   t | }||}tt|}||}t|| d S rk   )r   rB   rC   rw   rx   ry   r	   )rH   rV   rP   rz   r{   r|   r   r   r   test_pickle_bool_metrics  s
   


r~   c                 C   sN  t | d d d df } t |d d d df }|| ||}}dd }t |jd |jd f}t| D ]\}}t|D ]\}	}
|||
|||	f< q@q8td| j}|| |}t	|
|t d| d dd t	|| |||}|jjs~J t	|| |||}|jjsJ t	|| || |}|jjsJ t	|| d S )	Nr   c                 S   sh   dt t t d| d |d   d t | d t |d  t d| d |d   d    S )Nr   r   r   r   )r   arcsinsqrtsincos)r   r   r   r   r   haversine_slow  s   8z-test_haversine_metric.<locals>.haversine_slowr   	haversiner   r9   r^   )r   asarrayzerosshape	enumerater   rB   rA   rC   r	   dist_to_rdistr   rD   rE   )rF   rG   r6   rJ   rK   r   D_referenceixijyjr   rQ   r   r   r   test_haversine_metric  s0   


r   c            	      C   s   t jd} td}tjdtdd}tt|}tt|}|| }|| }|| }|| }t	|| t	|| d S )N)
   r    r   pyfuncr   )funcr   )
r   randomr   rB   r   rw   rx   ry   rC   r	   )	rF   r   r   euclidean_pkl
pyfunc_pklrz   r|   D1_pklD2_pklr   r   r   test_pyfunc_metric?  s   





r   c                  C   sR   dd } t d}|dd}tjd| d}td}t||||d	  d S )
Nc                 S   s$   | j d dks	J t| | d S )Nr   r    r   )r   r   r   )xyr   r   r   custom_metricW  s   z+test_input_data_size.<locals>.custom_metricr   r   r    r   )r   r   r   )r   randr   rB   r	   rC   )r   rngrF   r   euclr   r   r   test_input_data_sizeT  s   
r   c                  C   sV   t d} | d}| dd}|jdd |jdd tjd|d tjd|d	 d S )
Nr   d   r   Frq   r#   r$   r&   r'   )r   r   rv   r   rB   )r   weightsr(   r   r   r   test_readonly_kwargsc  s   
r   zw, err_type, err_msg)r   r   iz!w cannot contain negative weightsr   r   zw contains NaNc                 C   s    g | ]}|g d gt dfqS ))r   r   r   z8Sparse data was passed for w, but dense data is required)	TypeError)rn   r6   r   r   r   
<listcomp>x  s    r   )abcz!could not convert string to floatza minimum of 1 is requiredc                 C   sD   t j||d tjdd| d W d    d S 1 sw   Y  d S )Nmatchr   r    r,   )pytestraisesr   rB   )r-   err_typeerr_msgr   r   r   -test_minkowski_metric_validate_weights_valuess  s   "r   c                  C   s|   t td } tjdd| d}dtjd  d| jd  d}tjt	|d	 |
tt W d    d S 1 s7w   Y  d S )
Nr   r   r    r,   zEMinkowskiDistance: the size of w must match the number of features \(z\). Currently len\(w\)=r   .r   )r   random_sampledr   rB   r`   r   r   r   
ValueErrorrC   rb   )w2rP   msgr   r   r   +test_minkowski_metric_validate_weights_size  s   "r   zmetric, metric_kwargsrA   c                 C   sd   t jtt jti| }dd | D }ttj| |fi |}t|j| fi |}||u s0J d S )Nc                 S   s   i | ]	\}}||d  qS )r   r   )rn   kvr   r   r   
<dictcomp>  s    z)test_get_metric_dtype.<locals>.<dictcomp>)	r   r   r   r_   r   itemstyper   rB   )rH   metric_kwargsrA   specialized_clsgeneric_typespecialized_typer   r   r   test_get_metric_dtype  s   r   c                  C   sJ   t j} d}tjt|d td|  W d    d S 1 sw   Y  d S )Nz8Unexpected dtype .* provided. Please select a dtype fromr   	manhattan)r   int32r   r   r   r   rB   )rA   r   r   r   r   test_get_metric_bad_dtype  s
   "r   c                  C   sF   d} t jt| d tjddd W d    d S 1 sw   Y  d S )Nzp must be greater than 0r   r   r   r!   )r   r   r   r   rB   )r   r   r   r   .test_minkowski_metric_validate_bad_p_parameter  s   "r   )Ert   r<   rw   numpyr   r   scipy.spatial.distancer   sklearn.metricsr   sklearn.metrics._dist_metricsr   r   r   r   sklearn.utilsr   sklearn.utils._testingr	   r
   r   sklearn.utils.fixesr   r   r   r   n1n2r   r`   rb   astypera   rc   X_mmapY_mmapr_   rV   rW   X_bool_mmapY_bool_mmapr%   dotTr(   r?   METRICS_DEFAULT_PARAMSmarkparametrizerR   rZ   r]   rh   ri   r}   r~   r   r   r   r   arrayr   nanr   r   r   r   r   r   r   r   r   r   <module>   s    


&$



,
