
    >[gX=                     
   d Z ddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZmZ d
Z ee      Zd Zd Zej4                  j7                  de      d        Zej4                  j7                  dddg      d        Zd Zej4                  j7                  dddg      ej4                  j7                  dedgz         d               Zej4                  j7                  de      d        Z ej4                  j7                  de      d        Z!d Z"d Z#d Z$d Z%d  Z&d! Z'd" Z(ej4                  j7                  d#g d$      d%        Z)d& Z*ej4                  j7                  de      d'        Z+y)(z'
Tests for DBSCAN clustering algorithm
    N)distance)DBSCANdbscan)generate_clustered_data)pairwise_distances)NearestNeighbors)assert_array_equal)CSR_CONTAINERSLIL_CONTAINERS   )
n_clustersc                     d} d}t        j                  t        j                  t                    }|t	        j
                  |      z  }t        |d| |      \  }}t        t        |            d|v rdndz
  }|t        k(  sJ t        d| |      }|j                  |      j                  }t        t        |            t        d|v       z
  }|t        k(  sJ y )Ng333333?
   precomputedmetricepsmin_samples   r   )r   
squareformpdistXnpmaxr   lensetr   r   fitlabels_int)r   r   Dcore_sampleslabelsn_clusters_1dbn_clusters_2s           \/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_dbscan.pytest_dbscan_similarityr(      s     CKHNN1-.ANA!	-SkL& s6{#B&Lqa@L:%%%	}#;	GBVVAYFs6{#c",&77L:%%%    c                  J   d} d}d}t        t        || |      \  }}t        t        |            t	        d|v       z
  }|t
        k(  sJ t        || |      }|j                  t              j                  }t        t        |            t	        d|v       z
  }|t
        k(  sJ y )N皙?r   	euclideanr   r   )	r   r   r   r   r    r   r   r   r   r   r   r   r"   r#   r$   r%   r&   s           r'   test_dbscan_featurer.   /   s     CKF "!FUL& s6{#c",&77L:%%%	v3K	@BVVAYFs6{#c",&77L:%%%r)   lil_containerc                     t         | t              dd      \  }}t        t        dd      \  }}t        ||       t        ||       y )Nr+   r   r   r   )r   r   r	   )r/   core_sparselabels_sparse
core_denselabels_denses        r'   test_dbscan_sparser6   E   sA    !'a(8cr!RK%aSbAJz;/|]3r)   include_selfFTc                 t   t        t              }t        d      j                  t              }| rt        nd }|j	                  |d      }|j
                  |j                  d   |j                  d   dz
  z  k  sJ t        |ddd	
      \  }}t        |ddd	
      \  }}t        ||       t        ||       y )Ng?radiusr   )r   moder   r   r+   r   r   )r   r   r   )	r   r   r   r   radius_neighbors_graphnnzshaper   r	   )	r7   r!   nnX_D_sparser2   r3   r4   r5   s	            r'   test_dbscan_sparse_precomputedrB   M   s    1A		%	)	)!	,BB((2J(?H<<!''!*
Q7777!'cr-"K  &aSbWJz;/|]3r)   c                  j   d} t        |       j                  t              }|j                  t        d      }t	        || d      }| dz   }t        |      j                  t              }|j                  t        d      }t	        || d      }t        |d   |d          t        |d	   |d	          y )
N皙?r9   r   )r;   r   r   r   gffffff?r   r   )r   r   r   r<   r   r	   )	lower_epsr?   rA   dbscan_lower
higher_epsdbscan_highers         r'   ,test_dbscan_sparse_precomputed_different_epsrJ   ]   s     I		+	/	/	2B(((<H(	-HLSJ		,	0	0	3B(((<H8=IM|Aa(89|Aa(89r)   r   r   	minkowskicsr_containerc                 "   t         j                  j                  d      j                  dd      }| ||      n|}|j	                         }t        ||        |)t        |j                         |j                                y t        ||       y )Nr   r   r   )r   randomRandomStaterandcopyr   r	   toarray)r   rL   r   X_copys       r'   test_dbscan_input_not_modifiedrU   n   sr     			a %%b"-A)5a1AVVXF
1V 199;(891f%r)   c                    t         j                  j                  d      j                  dd      }t        j                  |d        | |      }t        d t        |j                          D              sJ |j                         }t        |d       |j                  |j                  k(  sJ t        |j                         |j                                y)zCheck that we don't modify in-place the pre-computed sparse matrix.

    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/27508
    r   r   c              3   ,   K   | ]  \  }}||k7    y wN ).0rowcols      r'   	<genexpr>zKtest_dbscan_input_not_modified_precomputed_sparse_nodiag.<locals>.<genexpr>   s     <*;hc3scz*;s   r   rN   N)r   rO   rP   rQ   fill_diagonalallzipnonzerorR   r   r=   r	   rS   )rL   r   rT   s      r'   8test_dbscan_input_not_modified_precomputed_sparse_nodiagrb   }   s     			a %%b"-A QaA<#qyy{*;<<<<VVXF
1]# 55FJJqyy{FNN$45r)   c           	         t         j                  j                  d      }|j                  dd      }d||dk  <   | | |      fD ]  }t	        d      j                  |      }t        |j                  t        j                  d|j                  d   f             t        |j                  d       |j                  j                  d	k(  rJ  y )
Nr   (   r   r+      )r   r   r   )r   )r   rO   rP   rQ   r   r   r	   components_emptyr>   r   core_sample_indices_)rL   rngr   r@   r%   s        r'   test_dbscan_no_core_samplesrj      s    
))


"CRAAa#gJ-"#"&&r*2>>288Q4D+EF2::r*&&,,444	 $r)   c                  j   d} d}t         j                  }t        t        || |d      \  }}t	        t        |            t        d|v       z
  }|t        k(  sJ t        || |d      }|j                  t              j                  }t	        t        |            t        d|v       z
  }|t        k(  sJ y )Nr+   r   	ball_treer   r   r   	algorithmr   )r   r,   r   r   r   r   r    r   r   r   r   r-   s           r'   test_dbscan_callablero      s     CKF "	&c{kL&
 s6{#c",&77L:%%%	v3K;	WBVVAYFs6{#c",&77L:%%%r)   c            	      l   d} d}d}t        j                  d      5 }t        dd|i| d |d	      j                  t              }d d d        rJ |d
   j
                         j                  |j                  }}t        d| |d|      j                  t              }|j                  |j                  }}t        ||       t        ||       t        d| |d      j                  t              }|j                  |j                  }
}	t        ||	       t        ||
       t        j                  t        d      5  t        dd|i| |dz   |d	      j                  t              }|j                  |j                  }}d d d        t        |       t        |       y # 1 sw Y   [xY w# 1 sw Y   /xY w)Nr+   r   r   T)recordrK   prl   )r   metric_paramsr   rr   r   rn   r   )r   r   r   rn   rr   	manhattanrm   z\Parameter p is found in metric_params. The corresponding parameter from __init__ is ignored.)match)warningscatch_warningsr   r   r   messagerh   r   r	   pytestwarnsSyntaxWarning)r   r   rr   rz   r%   core_sample_1labels_1core_sample_2labels_2core_sample_3labels_3core_sample_4labels_4s                r'   test_dbscan_metric_paramsr      s   
CK	A 
	 	 	-(#!
 #a& 	 
. &eAh&&&9 55rzz8M 
WX
	c!f  !55rzz8M}m4x* 

	c!f  !55rzz8M}m4x*	
 (!e#!
 #a& 	 #%"9"92::x#
& }m4x*e 
.	-<
 
s   'F:AF*F'*F3c                     d} d}t        t              }t        |d| |      \  }}t        t	        |            t        d|v       z
  }|t        k(  sJ t        d| |d      }|j                  t              j                  }t        t	        |            t        d|v       z
  }|t        k(  sJ t        d| |d	      }|j                  t              j                  }t        t	        |            t        d|v       z
  }|t        k(  sJ t        d
| |d      }|j                  t              j                  }t        t	        |            t        d|v       z
  }	|	t        k(  sJ t        d| |d      }|j                  t              j                  }t        t	        |            t        d|v       z
  }
|
t        k(  sJ y )Nr+   r   r   r   r          @rl   )rr   r   r   rn   kd_tree      ?   )	leaf_sizer   r   rn   )
r   r   r   r   r   r    r   r   r   r   )r   r   r!   r"   r#   r$   r%   r&   n_clusters_3n_clusters_4n_clusters_5s              r'   test_dbscan_balltreer      s   
CK1A!	-SkL&
 s6{#c",&77L:%%%	#3K;	OBVVAYFs6{#c",&77L:%%%	#3K9	MBVVAYFs6{#c",&77L:%%%	#3K;	OBVVAYFs6{#c",&77L:%%%	"#;+	VBVVAYFs6{#c",&77L:%%%r)   c                  F    ddgddgg} t               j                  |        y )Nr   r   g      @g      @)r   r   )r   s    r'   test_input_validationr     s!    
sc3Z A
HLLOr)   c                      t               } t        j                  |       }t        t        j                  |            | j
                  u sJ y rX   )r   pickledumpstypeloads	__class__)objss     r'   test_pickler   #  s6    
(CSAQ CMM111r)   c                      t        dgdggdd      \  } }d| v sJ t        dgdgdggdd      \  } }d| v sJ t        dgdgdggdd      \  } }d| vsJ y )Nr   r      r1   gGz?)r   )core_s     r'   test_boundariesr   )  s|    qcA3ZQA6GD!99qcA3_!;GD!99qcA3_$A>GD!D==r)   c           	      p   t        j                  t              5  t        dgdggdg       d d d        t        j                  t              5  t        dgdggg d       d d d        t	        g t        dgdggd d      d          t	        g t        dgdggddgd      d          t	        dgt        dgdggddgd      d          t	        ddgt        dgdggddgd      d          t	        ddgt        dgdggd	ddgd
      d          t	        g t        dgdggddgd	d      d          t	        ddgt        dgdggddgd	d      d          t	        ddgt        dgdggddgd	d      d          t	        g t        dgdggddgd	d      d          t
        j                  j                  |       }|j                  ddt        j                  d         }t        t        |      \  }}t        |      t        t              k(  sJ t        j                  t        |d      }t        |      \  }}t        j                  |j                  d   t              }d||<   t        j                  t        j                  d   t              }	d|	|<   t	        t        j                  |	|      |       t        t              }
t        |
|d      \  }}t	        ||       t	        ||       t!               j#                  t        |      }|j$                  }|j&                  }t	        ||       t	        ||       t!               }|j)                  t        |      }|j$                  }t	        ||       t	        ||       t	        ||j&                         y # 1 sw Y   sxY w# 1 sw Y   KxY w)Nr   r   r   )sample_weight)r   r      re   )r   r      g      ?)r   r   r   )r   r   r   g@皙?r   )axis)dtypeTr   )r   r   )ry   raises
ValueErrorr   r	   r   rO   rP   randintr   r>   r   repeatzerosboolr   r   r   rh   r   fit_predict)global_random_seedri   r   core1label1
X_repeatedcore_repeatedlabel_repeatedcore_repeated_mask	core_maskr!   core3label3estcore4label4label5core5s                     r'   test_weighted_dbscanr   4  sk   	z	"aSz!- 
#	z	"aSz3 
# r6A3*DaPQRSTr6A3*QFPQRSTUVsFQC!:aVQRSTUVW	
AaSz!QQGJ
 	
AaSzs1a&aPQRS 
FQC!:aV!LQO 	
AaSz#sRSTUVW 	
AaSz!QSaPQRS 
FQC!:aW#1MaP
 ))

 2
3CKK1aggaj1M1M:ME6v;#a&   1m!4J$*:$6!M>*"2"21"5TB(,}%40IIeryyM:<NO 	1A1M-PME6ue$vv& (,,q,
6C$$E[[Fue$vv&
(C__Qm_<F$$Eue$vv&vs{{+ 
#	"	"	"s   NN+N(+N5rn   )bruter   rl   c                    dgdgdgdgdgdgdgg}t        |      }t        || dd	      \  }}t        |t        j                  |             t        |g d
       t        || dd	      \  }}t        |g d       t        |g d       t        || dd	      \  }}t        |dg       t        |g d       t        || dd	      \  }}t        |g        t        |t        j
                  |d             y )Nr   r   r   r   re      r   r   )rn   r   r   )r   r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   r   r   g      )r   r   r	   r   arangefull)rn   r   	n_samplesr"   r#   s        r'   test_dbscan_core_samples_toyr   x  s    
qcA3aS1#t,AAI "!yaQOL&|RYYy%9:v45 "!yaQOL&|Y/v89 "!yaQOL&|aS)v89 "!yaQOL&|R(vrwwy$78r)   c                  T   t        j                  d      } t        dd      j                  |       j                  }t        t        |            dk(  sJ t        j                  d      } t        dd      j                  |       j                  }t        t        |            dk(  sJ y )Nr   g      ?r   rE   r   )r   r   )r   eyer   r   r   r   r   r   )r   r#   s     r'   ;test_dbscan_precomputed_metric_with_degenerate_input_arraysr     s     	r
AM266q9AAFs6{q   
AM266q9AAFs6{q   r)   c           
          t        j                  g dg dg dg dg dg dg dg      } | |      }t        ddd	      j                  |      j                  }t        |g d
       y )N)        r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   333333?)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   rD   r   r   )r   r   r   )r   r   r   r   r   r   r   )r   arrayr   r   r   r	   )rL   armatrixr#   s       r'   5test_dbscan_precomputed_metric_with_initial_rows_zeror     sb     
///////	


B 2FMqAEEfMUUFv67r)   ),__doc__r   rv   numpyr   ry   scipy.spatialr   sklearn.clusterr   r   sklearn.cluster.tests.commonr   sklearn.metrics.pairwiser   sklearn.neighborsr   sklearn.utils._testingr	   sklearn.utils.fixesr
   r   r   r   r(   r.   markparametrizer6   rB   rJ   rU   rb   rj   ro   r   r   r   r   r   r   r   r   r   rY   r)   r'   <module>r      s       " * @ 7 . 5 >
z2&0&, .94 :4 %74 84:" M;#?@.D6*AB
& C A
& .96 :6* .9	5 :	5&2:+z$&N2A,H &GH9 I9:	! .98 :8r)   