
    -iR                       S SK r S SKrS SKJr  S SKrS SKrS SKrS SKJ	r	  S SK
JrJrJrJr  S SKJr  S SKJrJr  S SKJr  S SKJrJr  S S	KJr  S S
KJrJr  S SKJrJ r J!r!J"r"  S SK#J$r$J%r%  S SK&J'r'J(r(J)r)J*r*  S SK+J,r,  S SK-J.r.J/r/J0r0  S SK1J2r2J3r3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:  \Rv                  Ry                  S 5      r=\R|                  " 5       r?\=R                  \?R                  R                  5      rC\?R                  \C   \?lD        \?R                  \C   \?lA        \R                  " 5       rF\=R                  \FR                  R                  5      rC\FR                  \C   \FlD        \FR                  \C   \FlA        \G" \2\3-   \4-   \5-   \7-   \8-   5      rH\H\R                  4-   rJSrK\L" \MR                  " \O" \M\R                  R                  5       5      6 5      rRSSSS\R                  4rT\0" \R                  5      \lU        \0" \R                  5      \lV        S/rWSS\X4S jjrYS\XS\Z4S jr[S r\SS\\/r]\R                  R                  SS S!/5      \R                  R                  S"S#S$/5      \R                  R                  S\R\W-   5      S% 5       5       5       r`\R                  R                  S&S'S(/5      \R                  R                  S\R\W-   5      \R                  R                  S)/ S*Q5      \R                  R                  S+\R                  \RJ                  \R                  \R                  /5      S, 5       5       5       5       rd\R                  R                  S-\R                  \RJ                  \R                  /5      S. 5       rfS/ rg\R                  R                  S05      S1 5       riS2 rj\R                  R                  S3S4S5/5      S6 5       rk\R                  R                  S3S4S5/5      S7 5       rl\R                  R                  S8\55      S9 5       rm\R                  R                  S05      \R                  R                  S:\*\(/5      \R                  R                  S8\55      S; 5       5       5       rn\R                  R                  S05      \R                  R                  S8\55      S< 5       5       ro\R                  R                  S8\55      S= 5       rp\R                  R                  S>\7\2-   \6-   5      S? 5       rq\R                  R                  S05      \R                  R                  S8\55      S@ 5       5       rrSA rs SSD jrt\R                  R                  SE\K5      \R                  R                  SF\]5           SSH j5       5       ru     SSI jrvSJ rw\R                  R                  SE\K5      \R                  R                  SF\]5           SSK j5       5       rx\R                  R                  SE\K5      \R                  R                  SF\]5      \R                  R                  SL/ SMQ5      SN 5       5       5       ry\R                  R                  SE\K5      \R                  R                  SF\]5      SO 5       5       rzSP r{SQ r|SR r}\R                  R                  S8\55      SS 5       r~\R                  R                  SE/ STQ5      SU 5       r\R                  R                  SES/\" \" SVSW/\WQ75      5      SXSY/-   5      SZ 5       rS[ r SS\ jrS] r SS^ jrS_ r SS` jr SSa jrSb r SSc jr\R                  R                  S05       SSd j5       rSe rSf rSg r\R                  R                  Sh/ SiQ5      \R                  R                  SjSkS/5      \R                  R                  S8\55      SSl j5       5       5       rSm r\R                  R                  Sh/ SiQ5      \R                  R                  SjSkS/5      \R                  R                  S8\55      SSn j5       5       5       r\R                  R                  So\R                  \R                  \RJ                  \R                  /5      \R                  R                  S8\55      Sp 5       5       r\R                  R                  So\R                  \R                  \RJ                  \R                  /5      \R                  R                  SSSq/5      \R                  R                  SESrSs/5      St 5       5       5       r\R                  R                  So\R                  \R                  \RJ                  \R                  /5      \R                  R                  SSSq/5      \R                  R                  SESuSv/5      Sw 5       5       5       rSx r\R                  R                  S\L" \M" \R                  Sv   5      R                  \R                  Ss   5      \M" Sy/\Q5      -
  5      \W-   5          SSz j5       r\0" \S{9\R                  R                  S\L" \M" \R                  Ss   5      \M" S|/5      -
  5      5          SS} j5       5       rS~ r\R                  R                  S\R                  Ss   \W-   5      \R                  R                  S8\55       SS j5       5       rS r\R                  R                  S8\55      S 5       rS rS rS r\R                  R                  SE\K5      S 5       r\R                  R                  SE\K5      S 5       rS r\R                  R                  SE\K5      S 5       r\R                  R                  SE\K5      S 5       r\R                  R                  SSS/5      \R                  R                  SE\K5      S 5       5       rS r\R                  R                  S8\55      S 5       r\R                  R                  S5      S 5       rS rS r\R                  R                  S\Rv                  GRW                  SGSS9S|SSs4\Rv                  GRY                  SGSB5      SWSSs4\Rv                  GRY                  SSC5      SWSSs4\Rv                  GRY                  SGSC5      SWSSu4\Rv                  GRY                  SGSC5      SSS/SC-  0Sv4\Rv                  GRY                  SGSC5      SSSs4/5      S 5       r\0" \S{9\R                  R                  S\L" \M" \R                  Ss   5      \M" S|/5      -
  5      5          SS j5       5       rS rS r\R                  R                  S\R                  ShS04\RJ                  ShS04\R                  0 4\R                  0 4\GRb                  ShS04\GRd                  SS04\GRf                  ShS04/5      S 5       rS rS rS r\R                  R                  S\R                  " SGS9\R                  " 5       /5      \R                  R                  SE\K5      S 5       5       r\R                  R                  S\RJ                  " SGS9\R                  " 5       /5      \R                  R                  SE\K5      S 5       5       rg)    N)product)issparse)config_contextdatasetsmetrics	neighbors)clone)EfficiencyWarningNotFittedError)DistanceMetric)PAIRWISE_BOOLEAN_FUNCTIONSpairwise_distances)BOOL_METRICS)!assert_compatible_argkmin_results assert_compatible_radius_results)LeaveOneOutcross_val_predictcross_val_scoretrain_test_split)VALID_METRICS_SPARSEKNeighborsRegressor)KNeighborsMixin_check_precomputed_is_sorted_by_datasort_graph_by_row_values)make_pipeline)assert_allcloseassert_array_equalignore_warnings)BSR_CONTAINERSCOO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDIA_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)check_random_state)	ball_treebrutekd_treeauto            DM_euclideanmetricc                 H    U SS S:X  a  [         R                  " U SS US9$ U $ )ap  
Helper function for properly building a type-specialized DistanceMetric instances.

Constructs a type-specialized DistanceMetric instance from a string
beginning with "DM_" while allowing a pass-through for other metric-specifying
strings. This is necessary since we wish to parameterize dtype independent of
metric, yet DistanceMetric requires it for construction.

Nr.   DM_dtype)r   
get_metric)r1   r5   s     Y/var/www/html/venv/lib/python3.13/site-packages/sklearn/neighbors/tests/test_neighbors.py_parse_metricr8   c   s0     bqzU((5AAM    
n_featuresc           
         [         R                  R                  S5      nU S:X  aH  [        SS9[        SS9[        SS9[        [         R                  S9[        SUR                  U5      S9/$ U S:X  a  [        UR                  U5      S	9/$ U S
:X  aC  UR                  X5      nX3R                  -   S[         R                  " U5      -  -   n[        US9/$ 0 /$ )z/Return list of DistanceMetric kwargs for tests.r,   	minkowski      ?)pr-   r.   )r>   w
seuclidean)Vmahalanobis)VI)nprandomRandomStatedictinfrandTeye)r1   r:   rngArC   s        r7   _generate_test_params_forrN   r   s     ))


"C3K1I1I266N1,-
 	
 sxx
+,--HHZ,Wq266*---} 4Kr9   c                 z    [         R                  " SS9   SU -  nSSS5        US-  $ ! , (       d  f       WS-  $ = f)zwWeight function to replace lambda d: d ** -2.
The lambda function is not valid because:
if d==0 then 0^-2 is not valid.ignore)divide      ?Nr-   )rD   errstate)distretvals     r7   _weight_funcrV      s;     
H	%t 
&19 
&	%19s   (
:uniformdistancez/n_samples, n_features, n_query_pts, n_neighbors)d   rY   
   rY   )     rY   r,   query_is_trainFTc           
      t   [        X`5      n[        R                  R                  S5      nUR	                  X5      R                  U SS9nU(       a  UOUR	                  X25      R                  U SS9n	/ n
/ n[         H  n[        U[        5      (       a0  U [        R                  :X  a  SU;   a  [        R                  " S5        [        R                  " XLUS9nUR                  U5        U
R                  UR!                  U	SS95        UR                  UR!                  U	SS95        M     [#        [%        U5      S	-
  5       Hr  n[        U   n[        US	-      nX   nX   S   XS	-      S   nnX   S	   XS	-      S	   nn['        UUS
U S3S9  ['        UUS
U SU S3S9  [)        UUS
U SU S3SS9  Mt     g )Nr   FcopytreeCNeither KDTree nor BallTree support 32-bit distance metric objects.n_neighbors	algorithmr1   return_distanceTr,   The 'zE' algorithm returns differentindices depending on 'return_distances'.err_msg' and 'z&' algorithms return different indices.z(' algorithms return different distances.gư>)rj   atol)r8   rD   rE   rF   rI   astype
ALGORITHMS
isinstancer   float32pytestskipr   NearestNeighborsfitappend
kneighborsrangelenr   r   )global_dtype	n_samplesr:   n_query_ptsrd   r]   r1   	local_rngXqueryresults_nodistresultsre   neighinext_algorithmindices_no_dist	distancesnext_distancesindicesnext_indicess                        r7   test_unsupervised_kneighborsr      s   , 60F 		%%a(Iy-44\4NA  	
^^K4;;Lu;U 
 NG	fn--,"**2L"  **#
 			!e..ue.LMu''t'DE   3w<!#$qM	#AE*(+$+JqM7q5>!3D>	 '
1w1u~a/@	{ #; ;		
 		{'.)9 :7 7		
 		{'.)9 :9 9 	
/ %r9   z"n_samples, n_features, n_query_pts)rY   rY   rZ   )r[   r\   rY   zn_neighbors, radius))r,   rY   )2   i  )rY   r[   NeighborsMixinSubclassc           
         [        X@5      n[        U[        5      (       aL  SUR                  ;   a  [        R
                  " S5        SUR                  ;   a  [        R
                  " S5        [        R                  R                  S5      nUR                  X5      R                  U SS9n	UR                  SUS	9n
UR                  X25      R                  U SS9n/ n[        U[        5      (       a  UOUn[         H  n[        U[        5      (       a0  U [        R                  :X  a  S
U;   a  [        R
                  " S5        U" XUS9nUR!                  X5        UR#                  UR%                  U5      5        M     ['        [)        U5      S-
  5       H7  n[        U   n[        US-      nUU   UUS-      nn[+        UUSU SU S3S9  M9     g )N
ClassifierzGMetrics of type `DistanceMetric` are not yet supported for classifiers.RadiusVMetrics of type `DistanceMetric` are not yet supported for radius-neighbor estimators.r   Fr_   r.   sizera   rb   re   r1   r,   rh   rk   z*' algorithms return different predictions.ri   )r8   ro   r   __name__rq   rr   rD   rE   rF   rI   rm   randint
issubclassr   rn   rp   rt   ru   predictrw   rx   r   )ry   rz   r:   r{   r1   rd   radiusr   r|   r}   yr~   predict_results	parameterre   r   r   r   predictionsnext_predictionss                       r7   ,test_neigh_predictions_algorithm_agnosticityr      s   > 60F&.))1:::KK  -666KK/ 		%%a(Iy-44\4NA!),ANN;3::<e:TEO ""8/JJPV   	fn--,"**2L"  'yfU		!u}}U34   3'!+,qM	#AE*(7(:OAPQE<R%	{'.)9 :; ;		
 -r9   KNeighborsMixinSubclassc                    [         R                  S5      R                  U SS9n[         R                  SSS9n[        R
                  " SS9nUR                  U5        UR                  U5      u  pVU" SS9nU[        R                  " U5      [        R                  " U5      4 H=  nUR                  X5        UR                  U5      u  p[        XY5        [        Xj5        M?     g )	NrZ   r.   Fr_   r.   rZ   r   r,   rd   )rL   random_samplerm   r   r   rs   rt   rv   BallTreeKDTreer   r   )ry   r   r}   r   nbrs_fiddist1ind1nbrsdatadist2ind2s              r7   test_unsupervised_inputsr   I  s     	'")),U)CAABA))a8HLLO%%a(KE"q1D9--a0)2B2B12EFooa(%4& Gr9   c                  J   S//n [         R                  " 5       n[        R                  " [        5         UR                  U 5        S S S 5        [        R                  " [        5         UR                  U 5        S S S 5        g ! , (       d  f       NC= f! , (       d  f       g = f)Nr,   )r   rs   rq   raisesr   kneighbors_graphradius_neighbors_graph)r}   
neighbors_s     r7   !test_not_fitted_error_gets_raisedr   f  sj    
A++-J	~	&##A& 
'	~	&))!, 
'	& 
'	&	&	&s   B(B
B
B"zignore:EfficiencyWarningc                    [         R                  R                  S5      nUR                  S5      nUR                  S5      nU " X45      u  pVS GHL  n[        R
                  " SS9nUR                  U5        [        X5      " U5      u  p[        R
                  " SSSS	9nUR                  U5        [        X5      " U5      u  p[        X5        [        X5        [        R
                  " SS
SS	9nUR                  U5        [        X5      " U5      u  p[        X5        [        X5        [        X5      " S5      u  p[        X5      " S5      u  p[        X5        [        X5        [        R                  " [        5         [        X5      " U5        SSS5        GMO     [         R                  " UR                  S   5      nU Hj  nU" SS9nS=Ul        Ul        UR                  X>5      R#                  U5      nSUl        UR                  X^5      R#                  U5      n[        UU5        Ml     g! , (       d  f       GM  = f)z;Tests unsupervised NearestNeighbors with a distance matrix.*   rZ   r/   r.   r/   )rv   r.   r   r)   precomputedrc   r+   Nr   	euclideanr1   r,   )rD   rE   rF   r   r   rs   rt   getattrr   r   rq   r   
ValueErrorarangeshaper   rd   r   r1   )make_train_test
estimatorsrL   r}   YDXXDYXmethodnbrs_Xdist_Xind_Xnbrs_Ddist_Dind_DtargetEstestpred_Xpred_Ds                      r7   check_precomputedr   o  s    ))


#C'"A&!Aq$HC ++:

1/2 ++W]
 	

3/4'5( ++VM
 	

3/4'5(  /5/5'5( ]]:&F#A& '&GL YYqwwqz"F%'((
S_#++A."
%--c2' 	 '&s    H33
I	c                      S n [         R                  [         R                  [         R                  [         R                  /n[        X5        g )Nc                 Z    [         R                  " U 5      [         R                  " X5      4$ N)r   r   )X_trainX_tests     r7   r   /test_precomputed_dense.<locals>.make_train_test  s(    &&w/&&v7
 	
r9   )r   KNeighborsClassifierr   RadiusNeighborsClassifierRadiusNeighborsRegressorr   )r   r   s     r7   test_precomputed_denser     s>    
 	&&%%++**	J o2r9   fmtcsrlilc                 h   ^  U 4S jn[         R                  [         R                  /n[        X5        g )Nc                    > [         R                  " SS9R                  U 5      nUR                  U SS9R	                  T5      UR                  USS9R	                  T5      4$ )Nr/   r   rX   mode)r   rs   rt   r   asformatr   r   nnr   s      r7   r   4test_precomputed_sparse_knn.<locals>.make_train_test  sd    ''E:>>wGj9BB3GZ8AA#F
 	
r9   )r   r   r   r   r   r   r   s   `  r7   test_precomputed_sparse_knnr     s-    
 	&&%%J o2r9   c                 h   ^  U 4S jn[         R                  [         R                  /n[        X5        g )Nc                    > [         R                  " SS9R                  U 5      nUR                  U SS9R	                  T5      UR                  USS9R	                  T5      4$ )Nr,   r   rX   r   )r   rs   rt   r   r   r   s      r7   r   7test_precomputed_sparse_radius.<locals>.make_train_test  sd    ''q155g>%%gJ%?HHM%%f:%>GGL
 	
r9   )r   r   r   r   r   s   `  r7   test_precomputed_sparse_radiusr     s-    
 	++**J o2r9   csr_containerc                 F   U " [         R                  " S5      R                  SS5      5      n[        U5      (       d   eSUS'   [        U5      (       a   eU " / SQ/ SQ/ SQ/ SQ/5      n[        U5      (       d   e/ S	Q/ S
Q/ SQpCnU " X#U4SS9n[        U5      (       d   eg )NrZ   r,   r\   r   r-   r   r,   r-   )r.   r   r   )r.   r/   r   r,   r   r-   )r   r/   r-   r-   )r   r,   r,   r,   )r   r-   r-   r/   r.   r.   )r   )rD   r   reshaper   )r   r}   r   r   indptrs        r7   test_is_sorted_by_datar     s     	biim++Ar23Aa    AdG!!$$$$ 	y)Y	BCAa     ),6Dtf-V<Aa    r9   functionc                    U" [         R                  " [         R                  R                  S5      R	                  SS5      5      5      n[        U5      (       a   eU " U5      n[        U5      (       d   e[         R                  R                  S5      R                  SSS9nUR                  5       nSX$S:H  '   U" U5      n[        U5      (       a   eU " U5      n[        U5      (       d   eg )Nr   rZ   r-   rZ   rZ   r   r   r,   )rD   absrE   rF   randnr   r   toarray)r   r   r}   Xtmasks        r7   test_sort_graph_by_row_valuesr     s    
 	bffRYY2226<<RDEFA!!$$$$	!Bb!!!! 99  $,,QX,>D			AAaiLaA!!$$$$	!Bb!!!!r9   c                    U " [         R                  " [         R                  R                  S5      R	                  SS5      5      5      n[        U5      (       a   eUR                  5       n[        U5      R                  UR                  L d   eUR                  5       n[        USS9R                  UR                  L d   eUR                  5       n[        USS9R                  UR                  Ld   eUR                  5       n[        U5      R                  UR                  Ld   e[        UR                  5       SS9  [        R                  " [        SS9   [        UR                  5       SS9  S S S 5        g ! , (       d  f       g = f)Nr   rZ   Fr_   Tz%Use copy=True to allow the conversionmatch)rD   r   rE   rF   r   r   r`   r   r   r   tocscrq   r   r   )r   X_r}   s      r7   "test_sort_graph_by_row_values_copyr    s,    
rvvbii33B7==b"EF	GB!"%%%% 		A#A&++qvv555
	A#AE277166AAA
	A#AD166affDDD 		Aa %%QVV333 QWWYT2 
z)P	Q 7 
R	Q	Qs   E==
Fc                    U " [         R                  " [         R                  R                  S5      R	                  SS5      5      5      n[        U5      (       a   e[        R                  " [        SS9   [        USS9  S S S 5        [        R                  " [        SS9   [        USSS9  S S S 5        [        R                  " [        SS9   [        U5        S S S 5        [        R                  " 5          [        R                  " S5        [        USS	S9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Np= f! , (       d  f       g = f)
Nr   rZ   zwas not sorted by row valuesr   Tr_   )r`   warn_when_not_sortederrorF)rD   r   rE   rF   r   r   rq   warnsr
   r   r   warningscatch_warningssimplefilter)r   r}   s     r7   %test_sort_graph_by_row_values_warningr  %  s     	bffRYY2226<<RDEFA!!$$$$ 
'/M	N . 
O	'/M	N DI 
O	'/M	N1 
O 
	 	 	"g& EJ 
#	" 
O	N	N	N	N	N 
#	"s0   5D"!D3E7"E"
D03
E
E
E#sparse_containerc                    U " [         R                  " [         R                  R                  S5      R	                  SS5      5      5      n[
        R                  " [        SS9   [        U5        S S S 5        [
        R                  " [        SS9   [        U5        S S S 5        g ! , (       d  f       N<= f! , (       d  f       g = f)Nr   rZ   zformat is not supportedr   )
rD   r   rE   rF   r   rq   r   	TypeErrorr   r   )r  r}   s     r7   /test_sort_graph_by_row_values_bad_sparse_formatr  9  s    
 			 5 5b 9 ? ?B GHIA	y(A	B # 
C	y(A	B1 
C	B 
C	B	B	Bs   #B%B6%
B36
Cc                    [         R                  " / SQ/ SQ/ SQ/5      nU " U5      n[        R                  " SSS9nUR	                  U5        UR                  S SS9  UR                  [         R                  " / SQ/5      S	S9  [         R                  " / S
Q/ SQ/ SQ/5      nU " U5      nUR	                  U5        Sn[        R                  " [        US9   UR                  S SS9  S S S 5        [         R                  " / SQ/ SQ/ SQ/5      nU " U5      nSn[        R                  " [        US9   UR                  USS9  S S S 5        g ! , (       d  f       Nj= f! , (       d  f       g = f)N)               @rR   )r  r        @)rR   r  r  r,   r   rd   r1   r   r  r  r  r-   )r  r  r  )r  r  r  zB2 neighbors per samples are required, but some samples have only 1r   )      @r  rR   )g       r  r  z>Negative values in data passed to precomputed distance matrix.)	rD   arrayr   rs   rt   rv   rq   r   r   )r   rT   dist_csrr   msgs        r7   test_precomputed_sparse_invalidr  E  s-    88_oGHDT"H&&1]KE	IIh	Tq)	RXX/0a@ 88_oGHDT"H	IIh
NC	z	-1- 
. 88_&6HIDT"H
JC	z	-q1 
.	- 
.	- 
.	-s   E3E
E
E,c                  |   [         R                  R                  S5      n U R                  SS5      n[	        USS9nU R                  SSS9n[        R                  [        R                  [        R                  [        R                  4 H/  n[        U" 5       X5      n[        U" SS9X#5      n[        XV5        M1     g )	Nr      r-   r   r   r.   r   r   )rD   rE   rF   rI   r   r   r   r   r   r   r   r   r   )rL   r}   Dr   r   metric_scoreprecomp_scores          r7   !test_precomputed_cross_validationr   _  s    
))


"CQA1[1AABA&&++%%**	 'sua3'=(A1H<7r9   r  r\   c                 H   [         R                  R                  U5      nUR                  X5      R	                  U SS9nUR                  X25      R	                  U SS9n[
         GH  n	/ n
[         H  n[        R                  " XKU	S9nUR                  U5        UR                  USS9nUR                  USS9u  p[        XU5       H/  u  nnnUR                  5       nUU   US S & UU   US S & UU   US S & M1     U
R                  X45        [        [         R                  " [!        U5      5      [         R                  " [!        U5      5      5        M     [#        [%        U
5      S-
  5       H  n[        [         R                  " [!        U
U   S   5      5      [         R                  " [!        U
US-      S   5      5      5        [        [         R                  " [!        U
U   S   5      5      [         R                  " [!        U
US-      S   5      5      5        M     GM     g )NFr_   )r   re   r>   rf   Tr,   r   )rD   rE   rF   rI   rm   Prn   r   rs   rt   radius_neighborszipargsortru   r   concatenatelistrw   rx   )ry   rz   r:   r{   r   random_staterL   r}   testr>   r   re   r   r   rT   inddr   i1js                       r7   "test_unsupervised_radius_neighborsr.  p  s    ))


-C'..|%.HA88K,33Lu3MDQ#I..fUVWEIIaL))$)FD ..tT.JID401bIIKt!t!11	 1
 NND;'BNN495r~~d4j7QR! $$ s7|a'(AtGAJqM23tGAEN1$567 tGAJqM23tGAEN1$567 )+ r9   re   weightsrZ   c                 >   [         R                  R                  U5      nSUR                  X45      R	                  U SS9-  S-
  n	U	S-  R                  SS9S:  R	                  [        5      n
U
R	                  [        5      n[        R                  " XbUS9nUR                  X5        SSUR                  SU5      -  S-
  -  nUR                  U	S U U-   5      n[        XS U 5        UR                  X5        UR                  U	S U U-   5      n[        XS U 5        g )	Nr-   Fr_   r,   axis      ?rd   r/  re   h㈵>)rD   rE   rF   rI   rm   sumintstrr   r   rt   r   r   )ry   re   r/  rz   r:   
n_test_ptsrd   r(  rL   r}   r   y_strknnepsilony_preds                  r7   test_kneighbors_classifierr>    s    ))


-C	CHHY+22<e2LLqPA
Q$	c	!))#.AHHSME

(
(IC GGAMa#((1j11A56G[[;J'12Fv*~.GGA[[;J'12Fv[j12r9   c                    [         R                  R                  U5      nSUR                  X5      R	                  U SS9-  S-
  nUS-  R                  SS9S:  R	                  [        5      n[        R                  " US9n	U	R                  XxR	                  [        5      5        SSUR                  SU5      -  S-
  -  n
U	R                  US U U
-   5      n[        XS U 5        g )	Nr-   Fr_   r,   r1  r3  r   r5  )rD   rE   rF   rI   rm   r6  r7  r   r   rt   floatr   r   )ry   rz   r:   r9  rd   r(  rL   r}   r   r;  r<  r=  s               r7   'test_kneighbors_classifier_float_labelsrA    s     ))


-C	CHHY+22<e2LLqPA
Q$	c	!))#.A

(
([
ACGGAxxa#((1j11A56G[[;J'12Fv*~.r9   c           	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      R                  U SS9n[         R                  " / S	Q5      n[        R                  " S
SS9nUR                  X5        UR                  U5      n[         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      S-  n[        XT5        UR                  XR                  [        5      5        UR                  U5      n[        XT5        [        R                  " SSSS9nUR                  X5        UR                  [         R                  " / SQ/ SQ/5      5      n[         R                  " / SQ/ SQ/5      n[        XT5        g )N)r   r-   r   )r   r-   r,   )r-   r   r   )r-   r-   r   )r   r   r-   )r   r   r,   Fr_   )r/   r/   r\   r\   r,   r,   r.   r,   )rd   r>   )r,   r-   r   r   r   )r-   r,   r   r  r-   rX   )rd   r>   r/  )r-   r-   r-   r   r,   r   )r   g?g333333?)
rD   r  rm   r   r   rt   predict_probar   r8  r   )ry   r}   r   clsy_prob	real_probs         r7   (test_kneighbors_classifier_predict_probarH    s/   
	Iy)Y	J	f\f&  	#$A

(
(Q!
<CGGAMq!F
		
 
	  y)GGAxx}q!Fy)

(
(Q!Z
PCGGAMrxxI(>?@F)]34II&r9   c                 >   [         R                  R                  U5      nSUR                  X45      R	                  U SS9-  S-
  n	U	S-  R                  SS9U:  R	                  [        5      n
U
R	                  [        5      n[        R                  " XbUS9nUR                  X5        SSUR                  SU5      -  S-
  -  nUR                  U	S U U-   5      n[        XS U 5        UR                  X5        UR                  U	S U U-   5      n[        XS U 5        g )Nr-   Fr_   r,   r1  r   r/  re   r5  )rD   rE   rF   rI   rm   r6  r7  r8  r   r   rt   r   r   )ry   re   r/  rz   r:   r9  r   r(  rL   r}   r   r:  r   r<  r=  s                  r7    test_radius_neighbors_classifierrK    s    ))


-C	CHHY+22<e2LLqPA
Q$	f	$,,S1AHHSME//)E 
IIaOa#((1j11A56G]]1[j>G34Fv*~.	IIa]]1[j>G34Fv[j12r9   outlier_label)r   Nc                 "   [         R                  " SS/SS//U S9n[         R                  " SS/5      nSn[         R                  " SS/SS//U S9n[         R                  " SS/S	S	//U S9n[        R                  n	U	" UUUUS
9n
U
R	                  XE5        [        [         R                  " SS/5      U
R                  U5      5        Uc5  [        R                  " [        5         U
R                  U5        S S S 5        g g ! , (       d  f       g = f)NrR   r  r4   r,   r-   皙?)\(?Gz @ffffff?r   r/  re   rL  )
rD   r  r   r   rt   r   r   rq   r   r   )ry   re   r/  rL  r}   r   r   z1z2rncclfs              r7   2test_radius_neighbors_classifier_when_no_neighborsrX    s     	3*sCj)>A
!QAF 
D$<$.l	CB 
D$<#s,L	AB

-
-C
#	C GGAMrxxA'R9]]:&KKO '& &&s   $D  
Dc                 	  ^^^^ [         R                  " SS/SS/SS/SS/SS//U S9m[         R                  " / SQ5      mSn[         R                  " S	S	/SS//U S9n[         R                  " S
S
/S	S	/SS//U S9n[         R                  " SS/5      n[         R                  " / SQ5      n[         R                  " SS/5      n[        R                  " X2USS9n	U	R	                  TT5        [        XiR                  U5      5        [        R                  " [        SS9   [        XyR                  U5      5        S S S 5        [        R                  " [        SS9   [        XR                  U5      S   5        S S S 5        [        R                  m[         R                  " S/S/S/S/S/S/S/S/S/S//
U S9m[         R                  " / SQ5      mUUU4S jn
[        R                  " [        5         U
" 5         S S S 5        UUU4S jn[        R                  " [        5         U" 5         S S S 5        T" SSS9n	U	R	                  TT5        U	R                  S/S//5      n[        USS S 24   / S Q5        T" SSS9n	U	R	                  TT5        U	R                  S/S//5      n[        USS S 24   / S!Q5        U	R                  S/S//5      n[        USS/5        UUU4S" jn[        R                  " [        5         U" 5         S S S 5        SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//
mT" SSS9n	U	R	                  TT5        U	R                  S/S//5      n[        US   SS S 24   / S!Q5        U	R                  S/S//5      n[        USS S 24   SS/5        SS/SS/SS/SS/SS/SS/SS/SS/SS/SS//
mT" SSS/S9n	U	R	                  TT5        U	R                  S/S//5      n[        US   SS S 24   / S#Q5        [        US   SS S 24   / S!Q5        U	R                  S/S//5      n[        USS S 24   SS/5        UUU4S$ jn[        R                  " [        5         U" 5         S S S 5        g ! , (       d  f       GNK= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       g = f)%NrR   r  gGz?g\(\?rQ  r4   )r,   r-   r,   r,   r-   rO  rP  rR  r,   r-   )rM  r,   r-   r   rM  rS  z+Outlier label -1 is not in training classesr   r.   r/   r\            	   )
r   r-   r-   r,   r,   r,   r.   r.   r.   r.   c                  <   > T" SS//S9n U R                  TT5        g )Nr,   r\   r   rL  rt   rW  RNCr}   r   s    r7   check_array_exceptionPtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_array_exceptionV  s     A3%01r9   c                  8   > T" SSS9n U R                  TT5        g )Nr,   ar_  r`  ra  s    r7   check_dtype_exceptionPtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_dtype_exception^  s    #.1r9   most_frequentr_     )r   r   r   r,   )r   r,   r   r   c                  b   > T" SSS9n U R                  TT5        U R                  S/S//5        g )Nr,   r/   r_  rj  )rt   rD  ra  s    r7   check_warningHtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_warningt  s2    !,1A3+&r9   )r,   r   r   r   c                  <   > T" S/ SQS9n U R                  TT5        g )Nr,   r   r_  r`  )rW  rb  r}   y_multis    r7   check_exceptionJtest_radius_neighbors_classifier_outlier_labeling.<locals>.check_exception  s    )47r9   )rD   r  r   r   rt   r   r   rq   r  UserWarningr   rD  r   r  r   )ry   re   r/  r   rT  rU  correct_labels1correct_labels2outlier_probarW  rc  rg  probapredrl  rp  rb  r}   r   ro  s                   @@@@r7   1test_radius_neighbors_classifier_outlier_labelingrx  /  s    	
sc3Z$d|dD\J	A 	!AF 
D$<$.l	CB 
C:d|dD\:,	OBhh1v&Ohhz*OHHaV$M

-
-)2C GGAqMB8	k)V	W?KKO< 
X	k)V	W'8'8'<Q'?@ 
X 
-
-C
1#sQC!qcA3aS1#sC<XA
/0A 
y	! 
" 
y	! 
" Qo
6CGGAqMsRDk*EuQT{L1 Qa
(CGGAqMsRDk*EuQT{L1;;bT{#DtaV$'
 
k	" 
#
 
A	
A	
A	
A	
A	
A	
A	
A	
A	
AG Qa
(CGGAwsRDk*EuQx1~|4;;bT{#DtAqDzAq6* 
A	
A	
A	
A	
A	
A	
A	
A	
A	
AG Qq!f
-CGGAwsRDk*EuQx1~|4uQx1~|4;;bT{#DtAqDzAq6* 
z	" 
#	" 
X	W	W	W 
"	! 
"	!. 
#	"b 
#	"sH   Q>R4R"&R4S-S>
R
R"
R14
S
S
S&c            	         [         R                  " SS/SS//5      n [         R                  " SS/5      nSn[         R                  " SS/SS//5      n[         R                  " SS/5      n[        n[         Hl  nSSU4 H`  n[        R
                  " X'US	9nUR                  X5        [         R                  " S
S9   [        XHR                  U5      5        S S S 5        Mb     Mn     g ! , (       d  f       Mx  = f)NrR   r  r,   r-   rO  rP  rW   rX   rJ  rP   )invalid)
rD   r  rV   rn   r   r   rt   rS   r   r   )	r}   r   r   rT  rs  weight_funcre   r/  rW  s	            r7   .test_radius_neighbors_classifier_zero_distancer|    s     	3*sCj)*A
!QAF	D$<#s,	-Bhh1v&OK	!:{;G55)C GGAMX. #?KKOD /. <   /.s   <C((
C7c                     [         R                  " SS/SS/SS/SS//5      n [         R                  " / SQ5      nSn[         R                  " SS/SS//5      n[         R                  " SS/5      n[         R                  " SS/5      n[         R                  " SS/5      n[         H  nS HC  n[        R                  " X(US	9n	U	R                  X5        [        XIR                  U5      5        ME     [        S
S/XV/5       HE  u  p[        R                  " SXS9nUR                  X5        [        XR                  U5      5        MG     M     g )NrR   r        @)rR   r=   r  r  皙?皙?g      ?rW   rX   rJ  rW   rX   r-   r4  )
rD   r  rn   r   r   rt   r   r   r$  r   )r}   r   r   zrnn_correct_labelsknn_correct_unifknn_correct_distre   r/  rnncorr_labelsr;  s               r7   'test_neighbors_regressors_zero_distancer    s2    	3*sCj3*sCjABA
%&AF
3*sCj)*A4+.xxs,xxs,	 /G44)C GGAM.A? / %(
#&6%I%
 G //wC GGAMKQ8%
  r9   c                  6   [         R                  " S/S/S//5      n Sn[         Hq  n[        R                  " XS9R                  U 5      nUR                  S//SS9nUR                  S:X  d   eUR                  [        :X  d   e[        US	   S	S
/5        Ms     g)zTest whether points lying on boundary are handled consistently

Also ensures that even with only one query point, an object array
is returned rather than a 2d array.
r=   r  gGz@r   re   r  Frf   )r,   r   r,   N)rD   r  rn   r   rs   rt   r#  r   r5   objectr   )r}   r   re   r   r   s        r7   'test_radius_neighbors_boundary_handlingr    s     	3%#'(AF	))MQQRST''#'G}}$$$}}&&&71:1v.  r9   c                 
   U " [         R                  " S5      5      nUR                  / SQ5        [        R                  " SSSSS9R                  U5      nUR                  USS	9u  p4[         R                  " UR                  S
   [        S9n[         R                  " S
/5      [         R                  " S
/5      [         R                  " S
/5      [         R                  " S
/5      /US S & [         R                  " UR                  S
   [        S9n[         R                  " S
/5      [         R                  " S/5      [         R                  " S/5      [         R                  " S/5      /US S & [        X55        [        XF5        g )N)r/   r/   )r   r   r   r   r3  r+      r   )r   re   	leaf_sizer1   Trf   r   r4   r,   r-   r.   )rD   onessetdiagr   rs   rt   r#  emptyr   r  r  r   )r   r}   r   
neigh_dist	neigh_indexpected_distexpected_inds          r7   .test_radius_neighbors_returns_array_of_objectsr    s    	bggfo&AIIl%%f=	c!f 	 !11!T1JJHHQWWQZv6M!rxx}bhhsmRXXqc]SM!88AGGAJf5Lxx}bhhsmRXXqc]BHHaSMRLOz1y/r9   )r(   r*   r)   c                 T   [         R                  " SS//5      n[         R                  " SS/SS/SS/SS//5      nSn[         R                  " SS//5      n[        R                  " U S9R	                  U5      n[         R
                  " UR                  XSS95      n[        Xd5        g )Nr   r,   rM  r-   re   F)rd   rg   )rD   r  r   rs   rt   sortrv   r   )re   query_pointequidistant_pointskknn_indicesr   r   s          r7   test_query_equidistant_kth_nnr    s     ((QF8$KAq6Aq6B7QG"DE 	
A((QF8$K		#	#i	8	<	<=O	PBggbmmKPUmVWGw,r9   )r*   r(   r)   r   )r)   r   )r)   r   c                 X   [        U[        R                  5      n[        U[        5      (       a  [
        R                  " S5        Sn[        R                  R                  S5      nUR                  US45      nUS:X  a$  [        R                  " U[        R                  SS9n[        R                  " XS9nUR                  U5        UR                  U[        R                  S	S
9u  pg[!        U5       H'  n[#        Xh   [        R$                  " Xh   5      5        M)     US:w  aB  [
        R&                  " [(        SS9   UR                  U[        R                  S	SS9  S S S 5        UR                  U[        R                  SS	S9n	[+        U	5      (       d   eg ! , (       d  f       NA= f)Nr   rZ   r   r/   r   rX   r   r   r   T)r}   r   sort_resultszreturn_distance must be Truer   F)r}   r   r  rg   )r}   r   r   r  )r8   rD   float64ro   r   rq   rr   rE   rF   r   r   r   rH   rs   rt   r#  rw   r   r  r   r   r   )
re   r1   rz   rL   r}   modelr   r   iigraphs
             r7   "test_radius_neighbors_sort_resultsr    sc     62::.F&.))	
 I
))


#C9a.)A,,QrvvJO&&JE	IIaL //!BFFQU/VII9="'')-*@A  ]]:-KL""BFFu #  M ((
BFF$ ) E e$$$$ MLs   ?!F
F)c                     [        S5      n SnSnSnU R                  X!5      nU R                  SSX#45      n[        XESS9u  pgpS SS[        /n
[        [        U
5       GH   u  p/ n[        U5       HO  n[        R                  " XS9nUR                  XhS S 2U4   5        UR                  UR                  U5      5        MQ     [        R                  " U5      R                  nUR                   U	R                   :X  d   e[        R                  " XS9nUR                  Xh5        UR                  U5      nUR                   U	R                   :X  d   e[#        UU5        GM     g )	Nr   r-   (   r.   r(  rW   rX   r/  re   )r'   rI   r   r   rV   r   rn   rw   r   r   rt   ru   r   rD   vstackrJ   r   r   )rL   r:   rz   n_outputr}   r   r   r   y_trainy_testr/  re   	y_pred_soor  rnn_mo	y_pred_mos                    r7   *test_RadiusNeighborsClassifier_multioutputr  Q  sA   
Q
CJIH'AAq9/0A'71'M$GWY
L9G%j':		xA55C GGGQT]+S[[01 ! IIi(**	&,,... 44
 	

7$NN6*	&,,...9i0+ ;r9   c                    [         R                  R                  U5      nSUR                  X5      -  S-
  nXfS:  -  nUS-  R	                  SS9S:  R                  [        5      n[         H  n[        R                  " USS9n	U	R                  U" U5      U5        SSUR                  SU5      -  S-
  -  n
[        [         R                  4-    H0  nU" US U U
-   5      nU	R                  U5      n[        XS U 5        M2     M     g )	Nr-   r,   r  r1  r3  r+   rd   re   r5  )rD   rE   rF   rI   r6  rm   r7  SPARSE_TYPESr   r   rt   asarrayr   r   )rz   r:   r9  rd   r(  rL   r}   r   	sparsematr;  r<  sparsevX_epsr=  s                 r7   !test_kneighbors_classifier_sparser  w  s    
 ))


-C	CHHY++a/ASLA
Q$	c	!))#.A!	,,PVW	!a !chhq*559:#rzzm3GAkzNW45E[['Fv*~6 4	 "r9   c                     [        S5      n SnSnSnU R                  X!5      nU R                  SSX#45      n[        XESS9u  pgpS SS[        /n
[        [        U
5       GHw  u  p/ n/ n[        U5       Ho  n[        R                  " XS9nUR                  XhS S 2U4   5        UR                  UR                  U5      5        UR                  UR                  U5      5        Mq     [        R                  " U5      R                   nUR"                  U	R"                  :X  d   e[%        U5      U:X  d   e[        R                  " XS9nUR                  Xh5        UR                  U5      nUR"                  U	R"                  :X  d   e['        UU5        UR                  U5      n[%        U5      U:X  d   e[)        UU5       H  u  nn['        UU5        M     GMz     g )	Nr   r\   r   r.   r  rW   rX   r  )r'   rI   r   r   rV   r   rn   rw   r   r   rt   ru   r   rD  rD   r  rJ   r   rx   r   r$  )rL   r:   rz   r  r}   r   r   r   r  r  r/  re   r  y_pred_proba_sor  r;  knn_mor  y_pred_proba_moproba_moproba_sos                        r7   %test_KNeighborsClassifier_multioutputr    s   
Q
CJIH'AAq9/0A'71'M$GWY
L9G%j':		xA00VCGGGQT]+S[[01""3#4#4V#<=	 ! IIi(**	&,,...?#x/// //U

7$NN6*	&,,...9i0 !..v6?#x///"%o"GHhx2 #H5 ;r9   c                 2   [         R                  R                  U5      nSUR                  X5      -  S-
  n[         R                  " US-  R                  S5      5      nXwR                  5       -  nUS U n[        n	[         H  n
SSU	4 H  n[        R                  " X;U
S9nUR                  Xg5        SSUR                  SU5      -  S-
  -  nUR                  US U U-   5      n[         R                  " [        X-
  5      S:  5      (       a  M   e   M     g Nr-   r,   rW   rX   r4  r5  333333?)rD   rE   rF   rI   sqrtr6  maxrV   rn   r   r   rt   r   allr   )rz   r:   r9  rd   r(  rL   r}   r   y_targetr{  re   r/  r;  r<  r=  s                  r7   test_kneighbors_regressorr    s     ))


-C	CHHY++a/A
A

1ALA*~HK	!:{;G//'IC GGAMa#((1j"99A=>G[[;J'!9:F66#f/0367777 <  r9   c                  P   [        S5      n SnSnSnU R                  X!5      nU R                  X#5      n[        XESS9u  pgp[        [        S S/5       H  u  p[
        R                  " XS9nUR                  Xh5        UR                  USS	9n[        R                  " U Vs/ s H  n[        R                  " X   SS
9PM     sn5      nUR                  U5      nUR                  U	R                  :X  d   eUR                  U	R                  :X  d   e[        UU5        M     g s  snf Nr   r\   r  r/   r  rW   r  Frf   r1  )r'   rI   r   r   rn   r   r   rt   rv   rD   r  meanr   r   r   )rL   r:   rz   r  r}   r   r   r   r  r  re   r/  r;  	neigh_idxidx
y_pred_idxr=  s                    r7   3test_KNeighborsRegressor_multioutput_uniform_weightr    s   
Q
CJIH'A%A'71'M$GW%j42CD	++GQ!NN65NA	XX	R	rwww|!<	RS
V$||v||+++6<<///
+ E
 Ss   !!D#
c                    [         R                  R                  U5      nSUR                  X5      -  S-
  n[         R                  " US-  R                  S5      5      nXwR                  5       -  n[         R                  " Xw/5      R                  nUS U nSS[        /n	[        [        U	5       H  u  p[        R                  " X9U
S9nUR                  Xg5        SSUR                  SU5      -  S-
  -  nUR                  US U U-   5      nUR                   UR                   :X  d   e[         R"                  " [         R$                  " X-
  5      S:  5      (       a  M   e   g r  )rD   rE   rF   rI   r  r6  r  r  rJ   rV   r   rn   r   r   rt   r   r   r  r   )rz   r:   r9  rd   r(  rL   r}   r   r  r/  re   r;  r<  r=  s                 r7   %test_kneighbors_regressor_multioutputr    s.    ))


-C	CHHY++a/A
A

1ALA
		1&A*~H*l3G%j':	++#	
 	!chhq*559:Q{
^g56||x~~---vvbffV./#56666 ;r9   c                    [         R                  R                  U5      nSUR                  X5      -  S-
  n[         R                  " US-  R                  S5      5      nXwR                  5       -  nUS U n[        n	[         H  n
SSU	4 H  n[        R                  " X;U
S9nUR                  Xg5        SSUR                  SU5      -  S-
  -  nUR                  US U U-   5      n[         R                  " [        X-
  5      US-  :  5      (       a  M   e   M     S H  n[        R                  " X;SS9nUR                  Xg5        [         R                  " SU4S	5      nS
n[         R"                  " [$        [&        R(                  " U5      S9   UR                  U5      nS S S 5        [         R                  " [         R*                  " W5      5      (       a  M   e   g ! , (       d  f       ND= f)Nr-   r,   rW   rX   rJ  r5  r  r+   g      zNOne or more samples have no neighbors within specified radius; predicting NaN.r   )rD   rE   rF   rI   r  r6  r  rV   rn   r   r   rt   r   r  r   fullrq   r  rr  reescapeisnan)rz   r:   r9  r   r(  rL   r}   r   r  r{  re   r/  r   r<  r=  
X_test_nanempty_warning_msgrw  s                     r7   test_radius_neighbors_regressorr    s    ))


-C	CHHY++a/A
A

1ALA*~HK	!:{;G66)E IIaOa#((1j"99A=>G]]1[j>G#;<F66#f/06A:=>>>> <   +22f
 			!WWa_d3
7 	 \\+RYY7H-IJ==,D Kvvbhhtn%%%% + KJs   G
G,	c                  |   [        S5      n SnSnSnU R                  X!5      nU R                  X#5      n[        XESS9u  pgp[        [        S S/5       H  u  p[
        R                  " XS9nUR                  Xh5        UR                  USS	9n[        R                  " U Vs/ s H  n[        R                  " X   SS
9PM     sn5      n[        R                  " U5      nUR                  U5      nUR                  U	R                  :X  d   eUR                  U	R                  :X  d   e[        UU5        M     g s  snf r  )r'   rI   r   r   rn   r   r   rt   r#  rD   r  r  r   r   r   )rL   r:   rz   r  r}   r   r   r   r  r  re   r/  r  r  r  r  r=  s                    r7   =test_RadiusNeighborsRegressor_multioutput_with_uniform_weightr  (  s    Q
CJIH'A%A'71'M$GW%j42CD	00V!(((G	XX	R	rwww|!<	RS
XXj)
V$6<<///||v||+++
+ E
 Ss   !!D9
c                    [         R                  R                  U5      nSUR                  X5      -  S-
  n[         R                  " US-  R                  S5      5      nXfR                  5       -  n[         R                  " Xf/5      R                  nUS U nSS[        /n[        [        U5       H  u  p[        R                  " XS9n
U
R                  XV5        SSUR                  SU5      -  S-
  -  nU
R                  US U U-   5      nUR                   UR                   :X  d   e[         R"                  " [         R$                  " X-
  5      S:  5      (       a  M   e   g )Nr-   r,   rW   rX   r  r5  r  )rD   rE   rF   rI   r  r6  r  r  rJ   rV   r   rn   r   r   rt   r   r   r  r   )rz   r:   r9  r(  rL   r}   r   r  r/  re   r  r<  r=  s                r7   )test_RadiusNeighborsRegressor_multioutputr  C  s'    ))


-C	CHHY++a/A
A

1ALA
		1&A*~H*l3G%j':	00V!chhq*559:Q{
^g56||x~~---vvbffV./#56666 ;r9   c           	         [         R                  R                  U5      nSUR                  X5      -  S-
  nUS-  R	                  SS9S:  R                  [        5      n[         GHE  n[        R                  " USS9n	U	R                  U" U5      U5        [        R                  " USS9n
U
R                  [        US	S
9U5        [         H  nU" U5      n[         R                  " U	R                  U5      R                  5       U:H  5      S:  d   eU" [        US	S
95      nU[         ["        -   ;   a7  Sn[$        R&                  " [(        US9   U
R                  U5        S S S 5        M  [         R                  " U
R                  U5      R                  5       U:H  5      S:  a  M   e   GMH     g ! , (       d  f       M  = f)Nr-   r,   r1  g      ?r+   r  r   r  r   r   ffffff?z3not supported due to its handling of explicit zerosr   )rD   rE   rF   rI   r6  rm   r7  r  r   r   rt   r   SPARSE_OR_DENSEr  r   roundr%   r    rq   r   r  )rz   r:   r9  rd   r(  rL   r}   r   r  r;  knn_prer  X2X2_prer  s                  r7    test_kneighbors_regressor_sparser  Z  sp    ))


-C	CHHY++a/A
Q$	d	"**3/A!\	++vV	!a //#M
 	&q=qA&GB773;;r?002a784???/+FGF.>99K]]9C8OOF+ 98 wwwv6<<>!CDtKKK ' "  98s   F00
F?c                  \   [          GH  n [        R                  " SU S9nUR                  [        R
                  [        R                  5        [        UR                  [        R
                  5      [        R                  5        UR                  SU S9  UR                  [        R
                  [        R                  5        [        R                  " UR                  [        R
                  5      [        R                  :H  5      S:  d   e[        R                  " SU S9nUR                  [        R
                  [        R                  5        [        R                  " UR                  [        R
                  5      R                  5       [        R                  :H  5      S:  a  GM   e   g )Nr,   r  r]  r  r\   )rn   r   r   rt   irisr   r   r   r   
set_paramsrD   r  r   r  )re   rW  rgss      r7   test_neighbors_irisr  z  s   
  Z	,,iP		4;;'3;;tyy14;;?1	:		4;;'wws{{499-<=DDD++YO		4;;'wws{{499-335DELLL  r9   c                     [         R                  R                  S5      n [         R                  nU R                  u  p#[        US-  5      n[        R                  " SU5      n[        R                  " XB5      nX   X   X   X   4u  pxp[        R                  " SSS9nUR                  Xx5      R                  X5      nUR                  UR                  [        SS9U5      R                  U	R                  [        SS9U
5      nX:X  d   eg )	Nuint8g?r   r,   r)   r  Fr_   )digitsr   rm   r   r   r7  rD   r   r   r   rt   scorer@  )r}   r   rz   r:   train_test_boundarytrainr)  r   Y_trainr   Y_testrW  score_uint8score_floats                 r7   test_neighbors_digitsr    s    
 	7#AAggYi#o.IIa,-E99(4D)*18QWag)M&Wv

(
(Q'
JC'''+11&AK'''..U.;WEKKe%(&K %%%r9   c                     [         R                  " SS/SS/SS//5      n [        R                  " U SSSS9n[	        UR                  5       [         R                  " UR                  S   5      5        [        R                  " U SS	S
9n[        UR                  5       / SQ/ SQ/ SQ/5        [        R                  " U SSSS9n[	        UR                  5       / SQ/ SQ/ SQ/5        [        R                  " U SS	S
9n[        UR                  5       / SQ/ SQ/ SQ/5        [        R                  " U SSSS9n[        UR                  5       / SQ/ SQ/ SQ/5        g )Nr   r,   rP  rR   r-   connectivityTr   include_selfrX   r   r  rP  r  )rP  r  r  r  z?r  rR   rR   r  r  rR   rR   )r  rP  w@rP  r  r  )r  r  r  r.   )r,   r,   r,   )	rD   r  r   r   r   r   rK   r   r   r}   rM   s     r7   test_kneighbors_graphr    s   
1a&4+1v./A 	""1an4PAqyy{BFF1771:$67""1aj9A			')9;RS
 	""1an4PAqyy{_o$WX""1aj9A			##)	
 	""1an4PAAIIK)Y	!BCr9   rd   )r,   r-   r.   r   r  c           	         [         R                  R                  U5      nUR                  SS5      nU" U5      n[	        [
        R                  " XPUS9R                  5       [
        R                  " X`US9R                  5       5        g NrZ   r   )rD   rE   rF   r   r   r   r   r   rd   r   r   seedrL   r}   Xcsrs          r7   test_kneighbors_graph_sparser    sl     ))


%C		"bAD""1=EEG""44@HHJr9   c                  (   [         R                  " SS/SS/SS//5      n [        R                  " U SSSS	9n[	        UR                  5       / S
Q/ SQ/ SQ/5        [        R                  " U SSS9n[        UR                  5       / SQ/ SQ/ SQ/5        g )Nr   r,   rP  rR   r-   r=   r  Tr  r   )rR   rR   rR   r  rX   r   r  r  r  )rD   r  r   r   r   r   r   r  s     r7   test_radius_neighbors_graphr    s    
1a&4+1v./A((CnSWXAqyy{_o$WX((CjAA			&(?AWXr9   c           	         [         R                  R                  U5      nUR                  SS5      nU" U5      n[	        [
        R                  " XPUS9R                  5       [
        R                  " X`US9R                  5       5        g r  )rD   rE   rF   r   r   r   r   r   r  s          r7   "test_radius_neighbors_graph_sparser    sl     ))


%C		"bAD((dCKKM((FNNPr9   	Estimatorc                    [         R                  S5      nU" U5      n[         R                  S5      n[        R                  " S5      nU " SSS9nSn[        R
                  " [        US9   UR                  U5        S	S	S	5        S
n[        R
                  " [        US9   [        UR                  X55      5        S	S	S	5        U " SSS9nUR                  XE5        Sn[        R
                  " [        US9   UR                  U5        S	S	S	5        U " 5       n[        R                  " S5      n[        R
                  " [        US9   UR                  [        R                  " S5      [        R                  " S5      5        S	S	S	5        Sn[        R
                  " [        US9   UR                  US	S	2S	S	2S	4   U5        S	S	S	5        UR                  X%5        [        R                  " S5      n[        R
                  " [        US9   UR                  / /5        S	S	S	5        g	! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNH= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g	= f)z\Additional parameter validation for *Neighbors* estimators not covered by common
validation.rZ   r-   r   rZ   r(   	haversiner   zinstance is not fitted yetr   Nz.Metric 'haversine' not valid for sparse input.r)   r1   re   z-Haversine distance only valid in 2 dimensionszFound array with 0 sample(s)r   r   zFound array with dim 3zFound array with 0 feature(s))rL   r   rD   r  rq   r   r   r   r   rt   r  r  )r  r   r}   XsparseX3r   r   r  s           r7   "test_neighbors_validate_parametersr    s    	'"AAG			7	#B
A{;?D
&C	z	-Q 
.
:C	z	-,- 
. K7;DHHRO
9C	z	-R 
. ;D
))2
3C	z	-"''!*- 
. #C	z	-1a:" 
.HHQN
))3
4C	z	-bT 
.	-/ 
.	- 
.	- 
.	-
 
.	- 
.	-
 
.	-sH   +H% H76I	;I$I,	I=%
H47
I	
I
I),
I:=
JrY   r+   r)   c                    [         R                  SU45      n[        R                  " S5      nU " SUS9nSn[        R
                  " [        US9   UR                  X45        SSS5        UR                  S:X  d   eg! , (       d  f       N!= f)z
Validation of all classes extending NeighborsBase with
Minkowski semi-metrics (i.e. when 0 < p < 1). That proper
Warning is raised for `algorithm="auto"` and "brute".
rZ   rO  )r>   re   zwMind that for 0 < p < 1, Minkowski metrics are not distance metrics. Continuing the execution with `algorithm='brute'`.r   Nr)   )	rL   r   rD   r  rq   r  rr  rt   _fit_methodr  r:   re   r}   r   r  r  s          r7   -test_neighbors_minkowski_semimetric_algo_warnr    s|    " 	2z*+A
Ay1E	G  
k	-		! 
. ''' 
.	-s   A==
Br*   r(   c                     [         R                  S5      n[        R                  " S5      nU " USS9nSU S3n[        R
                  " [        US9   UR                  X45        SSS5        g! , (       d  f       g= f)	zECheck that we raise a proper error if `algorithm!='brute'` and `p<1`.r  rZ   rO  )re   r>   zalgorithm="zv" does not support 0 < p < 1 for the Minkowski metric. To resolve this problem either set p >= 1 or algorithm="brute".r   N)rL   r   rD   r  rq   r   r   rt   r  s          r7   .test_neighbors_minkowski_semimetric_algo_errorr  =  sj     	'"A
A	S1E
i[ !+ 	+ 
 
z	-		! 
.	-	-s   A--
A;c                     [         R                  S5      n [        R                  " 5       R	                  U 5      nSn[
        R                  " [        US9   UR                  U SS9  SSS5        [
        R                  " [        US9   UR                  U SS9  SSS5        g! , (       d  f       NA= f! , (       d  f       g= f)z'Validate parameter of NearestNeighbors.r  zUUnsupported mode, must be one of "connectivity", or "distance" but got "blah" insteadr   blahr   N)
rL   r   r   rs   rt   rq   r   r   r   r   )r}   r   r  s      r7   &test_nearest_neighbors_validate_paramsr   X  s    '"A%%'++A.D	  
z	-af- 
.	z	-##AF#3 
.	- 
.	-	-	-s   B!B2!
B/2
C pyfuncc           
         [         R                  R                  U5      n[        X 5      n/ SQnUR	                  X45      R                  U SS9n	UR	                  XT5      R                  U SS9n
[        X$5      nU GH  n[        U[        5      (       a  SO-U[        R                  S   ;  =(       d    SU;   =(       a    SU;   n0 nUR                  SS5      nU GH  n[        U[        5      (       a0  U [         R                  :X  a  S	U;   a  [        R                  " S
5        [        R                  " UUUUUS9nU(       a<  US:X  a6  [        R                   " ["        5         UR%                  U	5        S S S 5        M  US:X  aF  ['        S S5      n[         R(                  " U	S S 2U4   5      n	[         R(                  " U
S S 2U4   5      n
UR%                  U	5        UR+                  U
SS9UU'   GM     US   u  nnUS   u  nnU [         R,                  :X  a  SOSn[/        UUUS9  [1        UU5        U(       a  GM  US   u  nn[/        UUUS9  [1        UU5        [/        UUUS9  [1        UU5        GM     g ! , (       d  f       GN= f)N)r)   r(   r*   Fr_   r*   r<   r?   r>   r-   ra   rb   rd   re   r1   r>   metric_paramsr  Trf   r)   r(   gHz>g-C6?)rtol)rD   rE   rF   r8   rI   rm   rN   ro   r   r   VALID_METRICSpoprp   rq   rr   rs   r   r   rt   sliceascontiguousarrayrv   r  r   r   )ry   global_random_seedr1   rz   r:   r{   rd   rL   
algorithmsr   r   metric_params_listr$  exclude_kd_treer   r>   re   r   
feature_sl	brute_dst	brute_idxball_tree_dstball_tree_idxr%  kd_tree_dstkd_tree_idxs                             r7   test_neighbors_metricsr5  g  sa   & ))

 2
3C60F 3Jhhy-44\4NGXXk.55l5OF26F+ &.11 y66yAA @v%>#*>	 	 c1%#I&.11lbjj6PY&KK$ ..'#+E 9	#9]]:.IIg& / $"4^
..wq*}/EF--fQ
].CDIIg!&!1!1&$!1!OGI7 $:  'w/	9'.{';$} $rzz1tt	=t<9m4'.y'9$KI{>y+6M;TB}k:o ,4 /.s   !I77
J)categoryr   c           	         [         R                  R                  U5      nUR                  X45      R	                  USS9nUR                  XT5      R	                  USS9n	U S:X  aF  [        S S5      n
[         R                  " US S 2U
4   5      n[         R                  " U	S S 2U
4   5      n	U [        ;   a
  US:  nU	S:  n	[        X5      nU H  nUR                  SS5      n[        R                  " USU UUS9nUR                  U5        [        SS	9   UR                  U	S
S9u  nnS S S 5        [        S
S	9   UR                  U	S
S9u  nnS S S 5        [        WWWW5        M     g ! , (       d  f       NF= f! , (       d  f       N2= f)NFr_   r  r-   r3  r>   r)   r#  enable_cython_pairwise_distTrf   )rD   rE   rF   rI   rm   r(  r)  r   rN   r'  r   rs   rt   r   rv   r   )r1   ry   r*  rz   r:   r{   rd   rL   r   r   r.  r,  r$  r>   r   legacy_brute_dstlegacy_brute_idxpdr_brute_dstpdr_brute_idxs                      r7   test_kneighbors_brute_backendr>    s    ))

 2
3Chhy-44\4NGXXk.55l5OF 4^
&&wq*}'=>%%fQ
]&;<++C-#26F+c1%**#'
 			'>161A1A 2B 2.. ?
 =+0+;+; ,< ,(M= > 	*m-=}	
1 , ?>
 >=s   E&7E7&
E4	7
F	c                  f   S n [         R                  R                  S5      R                  SS5      n[        R
                  " SSU S9n[        R
                  " SSU S9nUR                  U5        UR                  U5        UR                  U5      u  pEUR                  U5      u  pg[        XF5        g )	Nc                 h    [         R                  " [         R                  " U S-  US-  -   5      5      $ )Nr-   )rD   r  r6  )x1x2s     r7   custom_metric+test_callable_metric.<locals>.custom_metric  s&    wwrvvb!eb!em,--r9   r   r  r-   r.   r+   rc   r)   )	rD   rE   rF   rI   r   rs   rt   rv   r   )rC  r}   nbrs1nbrs2r   r   r   r   s           r7   test_callable_metricrG    s    . 			b!&&r1-A&&E &&E 
IIaL	IIaL""1%KE""1%KEE!r9   c                    [        X5      n[        R                  X45      R                  U SS9nU" U5      n[	        X5      nUS:X  a  [        R                  S5      n[        R                  S5      n	[        R                  " USS9n
[        R                  " XSS9n[        R                  " SSS	9nUR                  U
5        UR                  U5        g U H  n[        R                  " SS
UUS9nUS:X  a)  [        S S5      n[        R                  " US S 2U4   5      nUR                  U5        UR                  U5        U[        S   ;   d  Mz  [        R                  " SS
US9R                  U5      nUR                  U5        M     g )NFr_   r   r   r   r   r   r.   r  r+   rd   re   r1   r$  r  r-   r)   rc   )r8   rL   rI   rm   rN   r   r   r   r   rs   rt   rv   r(  rD   r)  r   )ry   r1   r   rz   r:   r}   r
  r,  X_precomputedY_precomputedr   r   nb_pr$  r   r.  s                   r7   *test_valid_brute_metric_for_auto_algorithmrM    sg    60F'..|%.HAD26F))'2))&1(({K((
 ))aN 0M++ +	B $"4^
((1j=)9:FF1IMM!-g66// !VF#d)  d#' 0r9   c                     [         R                  SS5      n [         R                  SSS5      n[        R                  " SS0S9n[
        R                  " [        5         UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr\   r   r-   r>   r.   )r$  )	rL   rI   r   r   r   rq   r  SyntaxWarningrt   )r}   r   r   s      r7   test_metric_params_interfacerP  B  sZ    AAAq!A

(
(Qx
@C	m	$ 
%	$	$s   A99
Bc                    [         R                  R                  S5      nUR                  SS5      nUR	                  SSS5      n[
        R                  " SSS9n[
        R                  " SSS9nXE4 HN  nUR                  X#5        [        R                  " [        5         UR                  U " U5      5        S S S 5        MP     g ! , (       d  f       Mb  = f)Nr   r\   r-   r,   r*   r  r(   )rD   rE   rF   rI   r   r   r   r   rt   rq   r   r   r   )r   rL   r}   r   rE  rF  r  s          r7    test_predict_sparse_ball_kd_treerR  J  s    
))


"CAAAq!A**1	BE))!{CE		!]]:&MM-*+ '&  &&s    C
C	c            	      t   [         R                  R                  S5      n U R                  SS5      n[	        U5      R                  5       n[         R                  " U5        US   nS Hu  n[        R                  " USUSSS9R                  5       n[        R                  " SUS	9R                  U5      n[        XVR                  U5      R                  5       5        Mw     S Hs  n[        R                  " XUSSS9R                  5       n[        R                  " XCS
9R                  U5      n[        XVR                  U5      R                  5       5        Mu     [        R                  " SSS	9nUR                  U5        [        R                  " [         5         [        R                  " USSS9  S S S 5        [        R                  " USS9nUR                  U5        [        R                  " [         5         [        R                  " XsSS9  S S S 5        g ! , (       d  f       Nm= f! , (       d  f       g = f)Nr   r\   rj  )	manhattan	chebyshevr.   r  T)r1   r   r  r  )r1   r   rT  r   r   )r   r1   )rD   rE   rF   rI   r   flattenr  r   r   r   rs   rt   r   r   rq   r   r   )rL   r}   
dist_arrayr   r1   
nbrs_graphrE  X_nbrss           r7   test_non_euclidean_kneighborsrZ  W  s   
))


"CAA $A&..0JGGJ^F -//qn4

') 	 **qHLLQO:'='=a'@'H'H'JK - -55f>

') 	 **&HLLQO:'C'CA'F'N'N'PQ - ''AkJF
JJqM	z	"""61[A 
#''vkJF
JJqM	z	"((L 
#	"	 
#	" 
#	"s   H9H)
H&)
H7c                 H    [        U 5       H  u  p#[        X1U   5        M     g r   )	enumerater   )nparray
list_checkr*  eles       r7   check_object_arraysr`  {  s    g&330 'r9   c            	         [          GHJ  n [        R                  " SU S9nS/S//nUR                  U5        S/S//nUR	                  U5      u  pE[        US/S//5        [        US/S//5        UR                  S/S//SS9u  pE[        US/SS//5        [        US/SS//5        [        UR                  U5      R                  5       SS/SS//5        [        UR                  S/S//S	S
9R                  5       [        R                  " SS/SS//5      5        UR                  S/S//SS9n[        UR                  5       SS/SS//5        GMM     g )Nr,   r  r   r-   r=   r   r  rR   rX   r   )rn   r   rs   rt   rv   r   r#  r`  r   r   rD   r  r   )re   r   r}   	test_datarT   r*  rL   s          r7   .test_k_and_radius_neighbors_train_is_not_queryrc    sw     Z	''AKS1#J
q	S1#J	 MM),	41#s,3!qc
+''!qc
3'?	DA3A-0C1#1v/ 		*224SzC:6N	
 	!qc
<DDFHHsCj3*-.	
 ''!qc
3'?3;;=Aq6Aq6*:;1  r9   c           	         [         R                  " SU S9nS/S//nUR                  U5        UR                  5       u  p4[	        US/S//5        [	        US/S//5        UR                  S SS9u  p4[        US/S//5        [        US/S//5        UR                  S SS9nUR                  S 5      nXV4 HS  n[	        UR                  5       SS/SS//5        [	        UR                  SS/5        [	        UR                  SS/5        MU     SS/SS/SS//n[         R                  " SU S9nUR                  U5        [	        UR                  5       R                  5       [        R                  " / SQ/ SQ/ S	Q/5      5        g )
Nr,   r  r   r=   r   r-   r  )rR   r  rR   )rR   rR   r   )r   rs   rt   rv   r   r#  r`  r   r   r   r   r   rD   r  )re   r   r}   rT   r*  rL   kngr  s           r7   "test_k_and_radius_neighbors_X_Nonerf    su    
	#	#Y	GB
qc
AFF1IIDtqcA3Z(saS1#J'##D#5IDsQCj)qcA3Z( 
#
#D
#
5C


d
#C5==?aVaV,<=5::1v.5==1a&1 
 Q!Q!Q A		#	#Y	GBFF1I
%%'
/?MBCr9   c           	         [         R                  " SU S9nS/S/S//nUR                  U5        UR                  USS9n[	        UR                  5       [        R                  " / SQ/ SQ/ SQ/5      5        [	        UR                  / SQ5        [	        UR                  / SQ5        UR                  S/S//S	S
9u  pE[        USS/SS//5        [        USS/SS//5        UR                  US	S
9n[	        UR                  5       [        R                  " / SQ/ SQ/ SQ/5      5        UR                  S/S//S	SS9nUR                  5         [	        UR                  5       / SQ/ SQ/5        [	        UR                  / SQ5        [	        UR                  / SQ5        [        R                  " S5      n[         R                  " SSS9nUR                  U5        UR                  5       u  pE[	        U[        R                   " S5      5        [	        US/S/S//5        UR                  SS9n[	        UR                  5       [        R                   " S5      5        [	        UR                  [        R                   " S5      5        [	        UR                  / SQ5        [	        UR                  5       R                  5       [        R                  " / SQ/ SQ/ SQ/5      5        g )Nr,   r  r   r.   rX   r   r  r   r=   r   r   )r  r  rR   r  rC  )r,   r   r   )r   r,   r   r,   )r   r,   r,   r   )r.   r,   r)   r   )r,   r   r,   )r  rR   r  )rR   r  r  )r   rs   rt   r   r   r   rD   r  r   r   r#  r`  r   sort_indicesr  rv   zeros)re   r   
duplicatesre  rT   r*  rL   r}   s           r7   &test_k_and_radius_neighbors_duplicatesrk    sR    
	#	#Y	GB#sQCJFF: 

jz

:Crxx/? ST CHHo.CKK+##aS1#Js#;ID1v1v./q!fq!f-.

#
#Js
#
;Crxx/? ST 
#
#aS1#Js
#
LCCKKMIy#9:CKK.CHHl+ 	A		#	#W	EBFF1IIDD"((6*+C1#sQC) 

:

.CCKKM288F#34CHHbhhqk*CKK+
%%'
/?ODEr9   c                     SS/SS//n [         R                  " U SSS9R                  5       n[         R                  " U SSS9R                  5       n[        US	S
/S
S	//5        [        US
S	/S	S
//5        [         R                  " U SSS9R                  5       n[         R                  " U SSS9R                  5       n[        US	S	/S	S	//5        [        US
S	/S	S
//5        g )Nr-   r.   r/   r\   r,   T)r  FrR   r  r  )r   r   r   r   r   )r}   re  kng_not_selfrL   rng_not_selfs        r7   !test_include_self_neighbors_graphro    s    
Q!QA

$
$Q
=
E
E
GC--aGOOQLsc3Z#s45|sCj3*%=>

*
*1c
E
M
M
OC33	3Ugi  sc3Z#s45|sCj3*%=>r9   c                 >   [         R                  " SSSSS9u  p[        X5      u  p4pV[        R                  " SU S9nUR                  X55        UR                  U5      nUR                  U5      u  pUR                  USS9R                  5       n
UR                  SS	9  UR                  X55        UR                  U5      nUR                  U5      u  pUR                  USS9R                  5       n[        X+5        [        X5        [        X5        [        X5        g )
Nr  r\   r   rz   r:   n_redundantr(  r.   r  rX   r   n_jobs)r   make_classificationr   r   r   rt   r   rv   r   r   r  r   r   )re   r}   r   r   r   r  r  rW  rT   r*  r  
y_paralleldist_parallelind_parallelgraph_parallels                  r7   test_same_knn_parallelrz     s    ''DA (8'=$GW

(
(Q)
LCGGGFAv&ID  j 9AACENN!NGGGV$J"%.."8M))&z)BJJLNq%D(s)E*r9   c                    [         R                  " SSSSS9u  p[        X5      u  p4pV[        R                  " SU S9nUR                  X55        UR                  U5      nUR                  U5      u  pUR                  USS9R                  5       n
UR                  S	S
9  UR                  X55        UR                  U5      nUR                  U5      u  pUR                  USS9R                  5       n[        X+5        [        [        U5      5       H#  n[        X   X   5        [        X   X   5        M%     [        X5        g )Nr  r\   r   rq  rZ   r  rX   r   r.   rs  )r   ru  r   r   r   rt   r   r#  r   r   r  r   rw   rx   r   )re   r}   r   r   r   r  r  rW  rT   r*  r  rv  rw  rx  ry  r   s                   r7   #test_same_radius_neighbors_parallelr|    s%   ''DA (8'=$GW

-
-R9
MCGGGFA$$V,ID&&vJ&?GGIENN!NGGGV$J"%"6"6v">M//Z/HPPRNq%3t9!1236<?3  E*r9   backend	threadinglokyc                 d   [         R                  " U 5         [        R                  " SSSSS9u  p#[	        X#5      u  pEpg[
        R                  " SUSS9nUR                  XF5        UR                  U5        UR                  U5        UR                  USS	9  S S S 5        g ! , (       d  f       g = f)
Nr  r\   r   rq  r.   r-   )rd   re   rt  rX   r   )joblibparallel_backendr   ru  r   r   r   rt   r   rv   r   )	r}  re   r}   r   r   r   r  r  rW  s	            r7   test_knn_forcing_backendr  3  s    
 
	 	 	)++QAA
 ,<A+A(,,Yq
 	!FvV*5 
*	)	)s   BB!!
B/c                      [         R                  " SS9n Sn[        R                  " U5      nSS U  Vs/ s H  o3PM     nnU R	                  X$5      R                  U5      n[        XT5        g s  snf )Nr,   r   rj  ABCDEFGHIJKLMNOPQRSTU)r   r   rD   rK   rt   r   r   )
classifierCLASSESr}   chr   results         r7   test_dtype_convertr  G  sg    //A>JG
wA-hw7877A8^^A!))!,Fv! 	9s   A-c                     S nU " / SQ/ SQ/ SQ/5      nU " / SQ/ SQ/5      n[         R                  " SSUS	9R                  U5      nUR                  US
S9n[        R
                  " SS/SS//5      n[        XV5        g )Nc                     [        U 5      (       a  [        U5      (       d   eU R                  UR                  5      R                  5       R	                  5       $ r   )r   dotrJ   r   item)xr   s     r7   sparse_metric2test_sparse_metric_callable.<locals>.sparse_metricS  s=    {{x{{**uuQSSz!!#((**r9   )r,   r,   r,   r,   r,   )r,   r   r,   r   r,   )r   r   r,   r   r   )r,   r,   r   r,   r,   )r,   r   r   r,   r,   r)   r-   )re   rd   r1   Frf   r,   )r   rs   rt   rv   rD   r  r   )r   r  r}   r   r   Ngold_standard_nns          r7   test_sparse_metric_callabler  Q  s    + 		/?;	A 	89A		#	#q
	c!f  	a/A xx!Q!Q 01q+r9   z0ignore::sklearn.exceptions.DataConversionWarningc                  8   [         R                  R                  S5      n U R                  SS9n[        R
                  nU" SSS9R                  U5      nU" SSS9R                  U5      n[        UR                  U5      S   UR                  U5      S   5        g )Nr   )rZ  r\   r   jaccardr)   r  r(   )	rD   rE   rF   rW   r   rs   rt   r   rv   )rL   r}   NNnn1nn2s        r7   test_pairwise_boolean_distancer  i  s    
 ))


"C A		#	#B
I
1
5
5a
8C
I
5
9
9!
<Cs~~a(+S^^A->q-ABr9   c            
         [        S5       H  n [        R                  " SSSSSU S9u  p[        XSS9u  p4pV[	        SU -
  5      n[
        R                  " SUS9nUR                  X55        UR                  U5      n	UR                  U5      n
U
R                  S	S
9n[        R                  " U
R                  S	S
9S:H  X{5      n[        X5        M     g )Nr\   r   r.   r   )rz   r:   n_informativerr  	n_classesr(  r  r-   r_  r,   r1  )rw   r   ru  r   r7  r   r   rt   r   rD  argmaxrD   wherer6  r   )r	  r}   r   X_trX_tey_try_terL  rW  rw  rv  proba_labels               r7   #test_radius_neighbors_predict_probar  w  s    a++
 "2!Q!GDAH11-X{{4 !!$'lll*hhuyyay0A5}R4-# r9   c                  ,   [         R                  R                  S5      n SU R                  SS5      -  S-
  nSU R                  SS5      -  S-
  nU R                  SS5      nSnSnSn[        R
                  " USS	9n[        R
                  " [        XF-  5      SS	9n[        R                  " USS
9n	[        R                  " [        XV-  5      SS
9n
[        R                  " US9n[        R                  " US9nX{4X4X4X4/nU H  u  p[        U5      n[        U5      nUR                  SS9  [        [        U5      U5      nUR                  X5      R                  U5      nUR                  X5      R                  U5      n[        UU5        M     g )Nr   r-   r  r\   r,      r=   rX   )rd   r   r  r   r   r   r   )rD   rE   rF   rI   r   KNeighborsTransformerr7  RadiusNeighborsTransformerr   r   r	   r  r   rt   r   r   )rL   r}   r  r   rd   r   factork_transk_trans_factorr_transr_trans_factork_regr_reg	test_listtransregreg_compactreg_precomp	reg_chainy_pred_chainy_pred_compacts                        r7   0test_pipeline_with_nearest_neighbors_transformerr    s   
))


"C	CHHROaA	
SXXb!_	q	 BQAKF F--+JWG44,-JN 22&zRG996?#*N ))kBE..f=E 
				I  
CjCjm4!%,<	 }}Q*2226$.66r:n5  r9   z'X, metric, metric_params, expected_algor   r   r\  r@   rA   correlationc                 v    [         R                  " SSXS9nUR                  U 5        UR                  U:X  d   eg )Nr/   r+   rI  )r   rs   rt   r  )r}   r1   r$  expected_algor  s        r7   test_auto_algorithmr    s<     &&E 
IIaL---r9   c           
         [         R                  R                  U5      nUR                  X45      R	                  USS9nUR                  XT5      R	                  USS9n	U S:X  aF  [        S S5      n
[         R                  " US S 2U
4   5      n[         R                  " U	S S 2U
4   5      n	[        X5      nU H  nUR                  SS5      n[        R                  " USU UUS9nUR                  U5        [        SS9   UR                  U	S	S
9u  nnS S S 5        [        S	S9   UR                  U	S	S
9u  nnS S S 5        [        WWWWUSS9  M     g ! , (       d  f       NF= f! , (       d  f       N2= f)NFr_   r  r-   r>   r)   )r   re   r1   r>   r$  r8  Trf   )r   check_sorted)rD   rE   rF   rI   rm   r(  r)  rN   r'  r   rs   rt   r   r#  r   )r1   r*  ry   rz   r:   r{   r   rL   r   r   r.  r,  r$  r>   r   r:  r;  r<  r=  s                      r7   #test_radius_neighbors_brute_backendr    s~    ))

 2
3C hhy-44\4NGXXk.55l5OF 4^
&&wq*}'=>%%fQ
]&;<26F+c1%**'
 			'>161G1G 2H 2.. ?
 =+0+A+A ,B ,(M= > 	)	
1 , ?>
 >=s   >E#E#
E 	#
E1	c                      [         R                  R                  5        H&  n [        U 5      [        [	        U 5      5      :X  a  M&   e   g r   )r   r&  valuesrx   set)vals    r7   #test_valid_metrics_has_no_duplicater  	  s5    &&--/3x3s3x=((( 0r9   c                      SS/SS/SS/SS//n / SQnS n[        SSUS	9nUR                  X5        [        UR                  SS
//5      S/5        g)zlEnsures that `predict` works for array-likes when `weights` is a callable.

Non-regression test for #22687.
r\   r,   r.   r/   r   )r-   r.   r\   rZ  c                 .    [         R                  " U 5      $ r   )rD   	ones_likerT   s    r7   _weights6test_regressor_predict_on_arraylikes.<locals>._weights	  s    ||D!!r9   r)   )rd   re   r/  r~  rZ  N)r   rt   r   r   )r}   r   r  r   s       r7   $test_regressor_predict_on_arraylikesr  	  sb    
 Q!Q!Q!Q(AA" !w
QCGGAMCKK!S
+aS1r9   zEstimator, paramsr   r=   c                    SS/S[         R                  /SS/SS//n/ SQnUR                  SS05        U " 5       R                  " S0 UD6R	                  X#5      nS	 H  n[        XE5      (       d  M  [        XE5      " U5      n[        US
5      (       a7  [         R                  " UR                  5      R                  5       (       a   eMn  [         R                  " U5      R                  5       (       d  M   e   g)zqCheck that the different neighbor estimators are lenient towards `nan`
values if using `metric="nan_euclidean"`.
r   r,   r-   r.   r\   r   r   r,   r,   r1   nan_euclidean)rv   r   	transformfit_predictr   N )
rD   nanupdater  rt   hasattrr   r  r   any)r  paramsr}   r   	estimatorresponse_methodoutputs          r7   test_nan_euclidean_supportr  "	  s    " Q!RVVq!fq!f-AA
MM8_-.&&0044Q:IP9..Y8;Fvy))88FKK0446666688F+//1111 Qr9   c            	      ,   [         R                  " S5      n U R                  [        R                  " SS/SS/SS/SS	//5      S
S/S9n[        R                  " / SQ5      n[
        R                  " SS9R                  X5      nUR                  U5        g)zSCheck that KNN predict works with dataframes

non-regression test for issue #26768
pandasr,   r-   r.   r/   r\   rZ  r[  r\  rf  b)columns)r,   r-   r.   r/   r   N)	rq   importorskip	DataFramerD   r  r   r   rt   r   )pdr}   r   r;  s       r7   test_predict_dataframer  B	  s    
 
		X	&B
RXX1v1v1v1v>?#sTA
A

(
(Q
7
;
;A
ACKKNr9   c                  f   [         R                  " SS/SS/SS//5      n [        R                  " SSSS0S9nUR	                  U 5        UR                  U S   R                  S	S
5      SSS9n[        US   / SQ5        UR                  U S   R                  S	S
5      SS9n[        US   / SQ5        g)zCheck that NearestNeighbors works with :math:`p \in (0,1)` when `algorithm`
is `"auto"` or `"brute"` regardless of the dtype of X.

Non-regression test for issue #26548
rR   r  r.   r)   r>   r3  )rd   re   r$  r   r,   rM  r/   F)r   rg   r   rf   N)	rD   r  r   rs   rt   r#  r   r   rv   )r}   r   r   s      r7   0test_nearest_neighbours_works_with_p_less_than_1r  P	  s     	3*sCj3*56A&&c
E 
IIaLqt||Ar21eTAAaD)$1a,eDAAaD)$r9   c                     SS/SS/SS/SS//n / SQnS n[         R                  " SUS9nUR                  X5        S	n[        R                  " [
        US
9   UR                  SS//5        SSS5        [        R                  " [
        US
9   UR                  SS//5        SSS5        g! , (       d  f       NE= f! , (       d  f       g= f)zjCheck that `predict` and `predict_proba` raises on sample of all zeros weights.

Related to Issue #25854.
r   r,   r-   r.   r/   r  c                 <    [         R                  " S 5      " U 5      $ )Nc                     U S:  a  S$ S$ )Nr3  r   r,   r  )r  s    r7   <lambda>Wtest_KNeighborsClassifier_raise_on_all_zero_weights.<locals>._weights.<locals>.<lambda>l	  s    1s7a&9&9r9   )rD   	vectorizer  s    r7   r  Etest_KNeighborsClassifier_raise_on_all_zero_weights.<locals>._weightsk	  s    ||9:4@@r9   )rd   r/  zAll neighbors of some sample is getting zero weights. Please modify 'weights' to avoid this case if you are using a user-defined function.r   r  N)r   r   rt   rq   r   r   r   rD  )r}   r   r  r   r  s        r7   3test_KNeighborsClassifier_raise_on_all_zero_weightsr  c	  s    
 Q!Q!Q!Q(AAA 
(
(Q
ICGGAM	)  
z	-c3ZL! 
. 
z	-C:,' 
.	- 
.	- 
.	-s   B+B<+
B9<
C
nn_modelr   c                 f   [         R                  " SSSSS9u  p#[        U 5      R                  US9n SU R	                  5       ;   aD  [        U5      R                  5       nXDS:     nU R                  [        R                  " US5      S	9  [        XU[        5       S
9nU R                  X#5        [        XPR                  S5      U:H  5        [        R                  " U5      [        R                   " U R#                  SU5      5      :X  d   eU R#                  SU5      U R#                  X#5      :  d   eg)a  Check that `predict` and related functions work fine with X=None

Calling predict with X=None computes a prediction for each training point
from the labels of its neighbors (without the label of the data point being
predicted upon). This is therefore mathematically equivalent to
leave-one-out cross-validation without having do any retraining (rebuilding
a KD-tree or Ball-tree index) or any data reshuffling.
rj  r\   r-   r   )rz   centersr:   r(  r  r   P   r   cvN)r   
make_blobsr	   r  
get_paramsr   ravelrD   
percentiler   r   rt   r   r   r  rq   approxr  r  re   r}   r   distsloocvs         r7   test_neighbor_classifiers_loocvr  ~	  s   " Q1STUDAX))I)>H
 8&&(("1%++-ai 2==#;<H{}=ELLE++D1Q67775>V]]8>>$+BCCCC
 >>$"X^^A%9999r9   c                    [         R                  " SSSS9u  p#[        U 5      R                  US9n SU R	                  5       ;   aD  [        U5      R                  5       nXDS:     nU R                  [        R                  " US5      S9  [        XU[        5       S	9nU R                  X#5        [        XPR                  S
5      5        g
)z@Check that `predict` and related functions work fine with X=Nonerj  r-   r   )rz   r:   r(  r  r   r  r   r  N)r   make_regressionr	   r  r  r   r  rD   r  r   r   rt   r   r   r  s         r7   test_neighbor_regressors_loocvr  	  s     ##bQQODA X))I)>H
 8&&(("1%++-ai 2==#;<h1?ELLE++D12r9   r   )r  r\   r-   r3  r   )r  r\   rZ   r\   r   )r  r\   rZ   r3  r   )r  r\   rZ   r.   r   )r  r.   rZ   r3  r   )r  r\   rZ   r   )$   )r  r.   r-   r\   )  r  r\   r\   )r  r  )r  r  r\   rR   )r  r  	itertoolsr   r  numpyrD   rq   scipy.sparser   sklearnr   r   r   r   sklearn.baser	   sklearn.exceptionsr
   r   sklearn.metrics._dist_metricsr   sklearn.metrics.pairwiser   r   'sklearn.metrics.tests.test_dist_metricsr   7sklearn.metrics.tests.test_pairwise_distances_reductionr   r   sklearn.model_selectionr   r   r   r   sklearn.neighborsr   r   sklearn.neighbors._baser   r   r   r   sklearn.pipeliner   sklearn.utils._testingr   r   r   sklearn.utils.fixesr    r!   r"   r#   r$   r%   r&   sklearn.utils.validationr'   rE   rF   rL   	load_irisr  permutationr   r   permr   load_digitsr  tupler  r  r  rn   sortedr  intersectionmapr&  r  COMMON_VALID_METRICSrH   r"  r   r   DISTANCE_METRIC_OBJSr8  r8   r7  rN   rV   WEIGHTSmarkparametrizer   r   r   r   r   rs   r   r   filterwarningsr   r   r   r   r   r   r  r  r  r  r   r.  r>  rA  rH  rK  rX  rx  r|  r  r  r  r  r'  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r5  DeprecationWarningr>  rG  rM  rP  rR  rZ  r`  rc  rf  rk  ro  rz  r|  r  r  r  r  r  r  r   r   r  r  r  r  r  r  LocalOutlierFactorr  r  r  r  r  r  r  r9   r7   <module>r#     s   	      !   @ T @   + 
   8iiA
t{{''(IIdO	kk$ 
			
v}}))*kk$d#  	
  "**.6
c#y66==?@A  1a -Y-G-GH	 #293S3S#T	   '' # c s :	 j,
/ 5 )E4=9#7:N#NOJ
 P :J
Z ( #7:N#NO.0RS&&%%++**	@
 T P$@
F &&%%""''*- 674( 84(n3  /3 03" /3 03" .9! :!0 67&>@R%ST.9" : U 8"" 67.98 : 886 .9K :K& 7.H 67.92 : 8208$ WX'T j1G,
 3 - 23> /( 'F j1G,
 3 - 238 j1G,-8 9 - 2< j1G,z - 2zzE09B/$ .90 :0, &GH- I- (-0/0	
 	 	"%"%J#1N LM7()3Z LM80,4 LM74 IJ$&N,8 =>7. 67KLL 8L>M&&*D@ 	2.*!=>.9
 : ? 3

 	2.*!=>.9
 : ? 3
 &&++%%**	 .9" :"J &&++%%**	 3x0vw&78( 9 1(( &&++%%**	 3x0y+&>? @ 1 4 
I##K01>>##G,	
 x','
(	) 	 K;	K;b ,-fS009:S-=QQR 4
 .4
n"* i%%g.1EE .9BD)$ :)$X .9	, :	,!MH1
<< j1 2> j1. 2.b?  j1+ 2+0 j1+ 2+2 [&$9:j16 2 ;6$" .9, :,. NO
C P
C.*+6\ -			2H		-}dGL	R	 +tW=	A	T7;	Q	dI>	Q	aS1W~{K	Q	g>
.
. ,-fS009:S-=QQR 6
 .6
r)
2  		'	'-);<		&	&(:;		+	+R0		,	,b1		(	(=!*<=		-	-#?		%	%q'9:22(%&(6 &&26++- j1: 2:B %%"5**, j13 23r9   