
    sga"                        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j2                  ddifej2                  dddfej2                  dd ifej4                  ddifej4                  dddfej4                  dd ifgZej8                  j;                  de      d        Zej8                  j;                  de      d        Zej8                  j;                  de      d        Z ej8                  j;                  de      d        Z!ej8                  j;                  dg d      ej8                  j;                  de      d               Z"d Z#ej8                  j;                  dddg      ej8                  j;                  dejH                  ejJ                  g      ej8                  j;                  d ejL                  ejN                  g      ej8                  j;                  de      d!                             Z(ej8                  j;                  d"e      d#        Z)d$ Z*ej8                  j;                  d%ej4                  ej2                  g      d&        Z+d' Z,y)(z!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                     t        | |d      S N   gammar   xys     g/var/www/html/venv/lib/python3.12/site-packages/sklearn/semi_supervised/tests/test_label_propagation.py<lambda>r          
1ar :     c                     t        | |d      S r   r   r   s     r   r   r   "   r    r!   zEstimator, parametersc                     t        j                  ddgddgddgg|       }g d} |d	i |j                  ||      }|j                  d   dk(  sJ y )
N      ?               @      @dtyper      r   r+    )npasarrayfittransduction_global_dtype	Estimator
parameterssampleslabelsclfs         r   test_fit_transductionr9   '   s]    jj3*sCj3*=\RGF

!j
!
%
%gv
6CQ1$$$r!   c                     |d   dk(  rt        j                  d       t        j                  ddgddgddgg|       }g d} |di |j	                  ||      }t        |j                  d   d	d	gd
       y )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/   r0   r   label_distributions_r2   s         r   test_distributionrA   /   s}    (u$V	
 jj3*sCj3*=\RGF

!j
!
%
%gv
6CC,,Q/#s$Gr!   c                     t        j                  ddgddgddgg|       }g d} |d
i |j                  ||      }t        |j	                  ddgg      t        j
                  d	g             y )Nr$   r%   r&   r'   r(   r*   r;         @r+   r-   )r.   r/   r0   r   predictr   r2   s         r   test_predictrE   ;   sg    jj3*sCj3*=\RGF

!j
!
%
%gv
6Cs{{S#J<0"((A3-@r!   c                     t        j                  ddgddgddgg|       }g d} |di |j                  ||      }t        |j	                  ddgg      t        j
                  ddgg             y )Nr$   r%   rC   r(   r*   r;   r-   )r.   r/   r0   r   predict_probar   r2   s         r   test_predict_probarH   C   sn    jj3*sCj3*=\RGF

!j
!
%
%gv
6CC%%Szl3RXXSzl5KLr!   alpha)皙?g333333?r;   gffffff??c           	      "   d}t        |dd      \  }}|j                  | d      }d|d d d<   d	}t        j                  |
      j	                  ||      }|j                         }	t        j                  t        |      |dz   f|j                        }
d|
t        j                  t        |            |f<   |
d d d df   }
t        j                  t        j                  j                  t        j                  t        |	      |	j                        ||	z  z
        |
      }||j                  d      d d t        j                   f   z  }t        j                  d|d|      }|j	                  ||       t#        ||j$                         y )Nr      r   	n_classes	n_samplesrandom_stateFcopyr,      rJ   r   r+   r(   axisd   绽|=)max_iterrI   tolr   )r   astypelabel_propagationLabelSpreadingr0   _build_graphr.   zeroslenr)   arangedotlinalginveyesumnewaxisr   r@   )r3   r4   r5   rI   rO   Xr   r   r8   SYexpecteds               r    test_label_spreading_closed_formrl   K   sM    IcPQRDAq	E*AAccFE

*
*
7
;
;Aq
ACA
#a&)a-(8AAbiiA	!SbS&	AvvbiimmBFF3q6$AEAI$MNPQRH!$Q

]33H

*
*EuEC GGAqMHc667r!   c           
         d}t        |dd      \  }}|j                  | d      }d|d d d<   t        j                  t	        |      |d	z   f      }d	|t        j
                  t	        |            |f<   |d d d
f   j                         d   }|d d d
f   dk(  j                         d   }t        j                  ddd      }|j                  ||       |j                         }|t        t        j                  ||d               }	|t        t        j                  ||d               }
|d d d df   }||d d f   }t        j                  t        j                  t        j                  j                  t        j                   |	j"                  d         |	z
        |
      |      }|j%                         }|||d d f<   ||j'                  d	      d d t        j(                  f   z  }t+        ||j,                  d       y )Nr   rM   r   rN   FrR   r,   rT   r+   )r,   rW   rX   rJ   )rY   rZ   r   ij)indexingrU   g-C6?r<   )r   r[   r.   r_   r`   ra   nonzeror\   LabelPropagationr0   r^   tuplemeshgridrb   rc   rd   re   shaperS   rf   rg   r   r@   )r3   rO   rh   r   rj   unlabelled_idxlabelled_idxr8   T_barTuuTulY_lY_urk   s                 r   "test_label_propagation_closed_formr|   f   s   IcPQRDAq	E*AAccF
#a&)a-()AAbiiAq%x[((*1-NahK1$--/2L

,
,cuC
PCGGAqME
bkk..4PQ
RC
bkk.,NO
PC	!SbS&	A
L!O
C
&&		bffSYYq\&:S&@A3G
MCvvxH"%H^Q!$Q

]33HHc66TBr!   accepted_sparse_typer   r   index_dtyper)   c                    t        ddgddgddgg|       }|j                  j                  |d      |_        |j                  j                  |d      |_        |j                  j                  |d      |_        g d} |di |j                  ||      }t        |j                  dd	gg      t        j                  d
g             y )Nr$   r%   r&   r'   FrR   r*   r;   rC   r+   r-   )
r   datar[   indicesindptrr0   r   rD   r.   r   )r}   r~   r)   r4   r5   rh   r7   r8   s           r   test_sparse_input_typesr      s     	S#Jc
S#J?AUVAVV]]5u]-AF		  5 9AIxx{7AHF

!j
!
%
%a
0Cs{{S#J<0"((A3-@r!   constructor_typec                 
   t        ddgddgddgg|       }t        j                  g d      }t        j                  dd      }|j                  ||       |j                  dk  sJ t        |j                  |      g d	       y )
Nr$   r%   rC   r*   r   i  r   rY   
   )r   r+   r+   )	r   r.   r   r\   r]   r0   n_iter_r   rD   )r   rh   r   mdls       r   test_convergence_speedr      sw     	S#Jc
S#J?AQRA
A

*
*%$
GCGGAqM ;;s{{1~y1r!   c                     t        j                  ddgddgddgg      } t        j                  g d      }t        j                  dd      }d}t	        j
                  t        |	      5  |j                  | |       d d d        |j                  |j                  k(  sJ t        j                  dd      }t	        j
                  t        |	      5  |j                  | |       d d d        |j                  |j                  k(  sJ t        j                  dd
      }t        j                         5  t        j                  dt               |j                  | |       d d d        t        j                  dd
      }t        j                         5  t        j                  dt               |j                  | |       d d d        y # 1 sw Y   NxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr$   r%   rC   r*   r   r+   r   z+max_iter=1 was reached without convergence.)match  error)r.   r   r\   r]   r>   warnsr   r0   r   rY   rq   warningscatch_warningssimplefilter)rh   r   r   warn_msgs       r   test_convergence_warningr      s   
3*sCj3*56A
A

*
*%!
DC<H	(	9 1;;#,,&&&

,
,EA
FC	(	9 1;;#,,&&&

*
*%#
FC		 	 	" g'9:1 
,
,EC
HC		 	 	" g'9:1  
 
 
 s0   *G	G3-G"-G.	GG"G+.G7LabelPropagationClsc                 4   t        j                  ddgddgddgddgg      }t        j                  g d      } | ddd      }t        j                         5  t        j                  dt
               |j                  ||       d d d        y # 1 sw Y   y xY w)	Ng      Y@r%   )r   r+   r,   r,   r   rW   r+   )r   rY   r   r   )r.   r   r   r   r   RuntimeWarningr0   )r   rh   r   r   s       r   *test_label_propagation_non_zero_normalizerr      s     	5%.5%.3*sCjIJA
 A
USa
HC		 	 	" g~61  s   -BBc           	         dd}d}d}d}t        ||ddddd      \  }}|j                  |       }t        |||d      \  }}}	}
t        j                  |	      }|j                  ||	       |j                  ||
      d
k\  sJ t        j                  |	      }|j                  ||	       |j                  ||
      d
k\  sJ y )Nr   c                    t        ddd      }|j                  |        d|j                  |d      j                  d      z  |z  }t	        j
                  |j                  |j                         t        |      sJ |j                  S )	Nr   	euclideanr   )r   metricn_jobsr,   distance)mode)out)	r	   r0   kneighbors_graphpowerr.   expr   r   T)rh   rj   r   r   nnWs         r   topk_rbfz5test_predict_sparse_callable_kernel.<locals>.topk_rbf   sp    "[K
q	$$QZ$8>>qAAEI
qvv166"{{ss
r!      r   r   r   )rO   rP   
n_featuresn_informativen_redundant
n_repeatedrQ   )	test_sizerQ   )r   rK   )Nr   gh㈵>)r   r[   r   r\   r]   r0   scorerq   )r3   r   rO   rP   n_testrh   r   X_trainX_testy_trainy_testmodels               r   #test_predict_sparse_callable_kernelr      s     IIFDAq 	
A'7	1Q($GVWf ,,H=E	IIgw;;vv&#---..h?E	IIgw;;vv&#---r!   )-__doc__r   numpyr.   r>   scipy.sparser   sklearn.datasetsr   sklearn.exceptionsr   sklearn.metrics.pairwiser   sklearn.model_selectionr   sklearn.neighborsr	   sklearn.semi_supervisedr
   r\   sklearn.utils._testingr   r   r   CONSTRUCTOR_TYPESrq   r]   
ESTIMATORSmarkparametrizer9   rA   rE   rH   rl   r|   int32int64float32float64r   r   r   r   r   r-   r!   r   <module>r      s   '    ! 0 1 / 4 . K  :  ''(E):;''E!)LM**	:; %%%'89%%%'JK((	:;
  0*=% >% 0*=H >H 0*=A >A 0*=M >M ";<0*=8 > =82C6 /,1MN288(<=2::rzz":;0*=
A > < > O
A +->?	2 @	24 %%'8'I'IJ
	
$.r!   