o
    \ia"                  	   @   s  d 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
 ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZ dZejddifejdddfejddd ifejddifejdddfejddd ifgZejdedd Zejdedd Zejdedd Z ejdedd Z!ejdg dejdedd  Z"d!d" Z#ejd#d$d%gejd&ej$ej%gejd'ej&ej'gejded(d) Z(ejd*ed+d, Z)d-d. Z*ejd/ejejgd0d1 Z+d2d3 Z,dS )4z!test the label propagation module    N)issparse)make_classification)ConvergenceWarning
rbf_kernel)train_test_split)NearestNeighbors)_label_propagation)_convert_containerassert_allcloseassert_array_equal)array
sparse_csr
sparse_csckernelrbfknn   )r   n_neighborsc                 C      t | |ddS N   gammar   xy r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/semi_supervised/tests/test_label_propagation.py<lambda>       r   c                 C   r   r   r   r   r   r   r   r   "   r    zEstimator, parametersc                 C   sT   t jddgddgddgg| d}g d}|d	i |||}|jd dks(J d S )
N      ?               @      @dtyper      r   r(   r   )npasarrayfittransduction_global_dtype	Estimator
parameterssampleslabelsclfr   r   r   test_fit_transduction'   s    r5   c                 C   sp   |d dkrt d tjddgddgddgg| d}g d}|di |||}t|jd d	d	gd
d d S )Nr   r   zHUnstable test for this configuration: changes in k-NN ordering break it.r!   r"   r%   r'   r         ?g{Gz?atolr   )pytestskipr*   r+   r,   r   label_distributions_r.   r   r   r   test_distribution/   s    r<   c                 C   s`   t jddgddgddgg| d}g d}|d
i |||}t|ddggt d	g d S )Nr!   r"   r#   r$   r%   r'   r6         @r(   r   )r*   r+   r,   r   predictr   r.   r   r   r   test_predict;   s    "r?   c                 C   sd   t jddgddgddgg| d}g d}|di |||}t|ddggt ddgg d S )Nr!   r"   r=   r%   r'   r6   r   )r*   r+   r,   r   predict_probar   r.   r   r   r   test_predict_probaC   s    &rA   alpha)皙?g333333?r6   gffffff??c                 C   s  d}t |ddd\}}|j| dd}d|d d d< d	}tj|d
||}| }	tjt||d f|j	d}
d|
t
t||f< |
d d d df }
ttjtjt|	|	j	d||	  |
}||jddd d tjf  }tjd|d|d}||| t||j d S )Nr      r   	n_classes	n_samplesrandom_stateFcopyr)      rC   r   r(   r%   axisd   绽|=)max_iterrB   tolr   )r   astypelabel_propagationLabelSpreadingr,   _build_graphr*   zeroslenr&   arangedotlinalginveyesumnewaxisr   r;   )r/   r0   r1   rB   rG   Xr   r   r4   SYexpectedr   r   r    test_label_spreading_closed_formK   s"   ,rd   c              
   C   s  d}t |ddd\}}|j| dd}d|d d d< tt||d	 f}d	|tt||f< |d d d
f  d }|d d d
f dk d }tjdddd}|	|| |
 }|ttj||dd }	|ttj||dd }
|d d d df }||d d f }tttjt|	jd |	 |
|}| }|||d d f< ||jd	dd d tjf  }t||jdd d S )Nr   rE   r   rF   FrJ   r)   rL   r(   )r)   rO   rP   rC   )rQ   rR   r   ij)indexingrM   g-C6?r7   )r   rS   r*   rW   rX   rY   nonzerorT   LabelPropagationr,   rV   tuplemeshgridrZ   r[   r\   r]   shaperK   r^   r_   r   r;   )r/   rG   r`   r   rb   unlabelled_idxlabelled_idxr4   T_barTuuTulY_lY_urc   r   r   r   "test_label_propagation_closed_formf   s(   ,rs   accepted_sparse_typer   r   index_dtyper&   c                 C   s   t ddgddgddgg| }|jj|dd|_|jj|dd|_|jj|dd|_g d}|di |||}t|dd	ggt	d
g d S )Nr!   r"   r#   r$   FrJ   r'   r6   r=   r(   r   )
r
   datarS   indicesindptrr,   r   r>   r*   r   )rt   ru   r&   r0   r1   r`   r3   r4   r   r   r   test_sparse_input_types   s   "ry   constructor_typec                 C   sj   t ddgddgddgg| }tg d}tjddd}||| |jdk s)J t||g d	 d S )
Nr!   r"   r=   r'   r   i  r   rQ   
   )r   r(   r(   )	r
   r*   r   rT   rU   r,   n_iter_r   r>   )rz   r`   r   mdlr   r   r   test_convergence_speed   s   r   c                  C   s  t ddgddgddgg} t g d}tjddd}d}tjt|d	 || | W d    n1 s6w   Y  |j|j	ksCJ tj
ddd}tjt|d	 || | W d    n1 sbw   Y  |j|j	ksoJ tjdd
d}t  tdt || | W d    n1 sw   Y  tj
dd
d}t  tdt || | W d    d S 1 sw   Y  d S )Nr!   r"   r=   r'   r   r(   r{   z+max_iter=1 was reached without convergence.)match  error)r*   r   rT   rU   r9   warnsr   r,   r}   rQ   rh   warningscatch_warningssimplefilter)r`   r   r~   warn_msgr   r   r   test_convergence_warning   s.   

"r   LabelPropagationClsc                 C   s   t ddgddgddgddgg}t g d}| dddd}t  tdt ||| W d    d S 1 s;w   Y  d S )	Ng      Y@r"   )r   r(   r)   r)   r   rO   r(   )r   rQ   r   r   )r*   r   r   r   r   RuntimeWarningr,   )r   r`   r   r~   r   r   r   *test_label_propagation_non_zero_normalizer   s   "	
"r   c              	   C   s   ddd}d}d}d}t ||dddddd	\}}|| }t|||dd
\}}}	}
tj|d}|||	 |||
dks?J tj|d}|||	 |||
dksUJ d S )Nr|   h㈵>c                 S   sX   t dddd}||  d|j|ddd | }tj|j|jd t|s)J |jS )	Nr|   	euclideanr   )r   metricn_jobsr)   distance)mode)out)	r   r,   kneighbors_graphpowerr*   exprv   r   T)r`   rb   r   r   nnWr   r   r   topk_rbf   s   
z5test_predict_sparse_callable_kernel.<locals>.topk_rbf   r   r   r   )rG   rH   
n_featuresn_informativen_redundant
n_repeatedrI   )	test_sizerI   )r   rD   )Nr|   r   )r   rS   r   rT   rU   r,   scorerh   )r/   r   rG   rH   n_testr`   r   X_trainX_testy_trainy_testmodelr   r   r   #test_predict_sparse_callable_kernel   s.   


	r   )-__doc__r   numpyr*   r9   scipy.sparser   sklearn.datasetsr   sklearn.exceptionsr   sklearn.metrics.pairwiser   sklearn.model_selectionr   sklearn.neighborsr   sklearn.semi_supervisedr	   rT   sklearn.utils._testingr
   r   r   CONSTRUCTOR_TYPESrh   rU   
ESTIMATORSmarkparametrizer5   r<   r?   rA   rd   rs   int32int64float32float64ry   r   r   r   r   r   r   r   r   <module>   sd    








