
    >[g+                        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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d
lmZ ddlmZ ddlmZ ddlmZmZ 	 ddl m!Z! dZ" ejH                  ddgddgddgg      dz   Z% edde%ddd      \  Z&Z'ejP                  jS                  de      ejP                  jS                  dd      ejP                  jS                  dd      d                      Z*ejP                  jS                  de      ejP                  jS                  dd      d               Z+d  Z,d! Z-d" Z.d# Z/ejP                  jS                  de      ejP                  jS                  d$g d%      d&               Z0d' Z1d( Z2ejP                  jS                  dd      d)        Z3d* Z4d+ Z5y# e#$ r dZ"Y Xw xY w),z'Testing for Spectral Clustering methods    NLinAlgError)SpectralClusteringspectral_clustering)
cluster_qr
discretize)
make_blobs)img_to_graph)adjusted_rand_score)kernel_metrics
rbf_kernel)NearestNeighbors)check_random_state)assert_array_equal)COO_CONTAINERSCSR_CONTAINERS)smoothed_aggregation_solverTF   
   <      g?)	n_samples
n_featurescenterscluster_stdshufflerandom_statecsr_containereigen_solver)arpacklobpcgassign_labels)kmeansr   r   c           
         t        j                  g dg dg dg dg dg dg dg      }| ||      fD ]  }t        ddd| |      j                  |      }|j                  }|d   dk(  rd|z
  }t        |g d	      dk(  sJ t        j                  t        j                  |            }|j                  |j                  k(  sJ |j                  |j                  k(  sJ t        |j                  |j                          y )
N)      ?r&   r&   皙?        r(   r(   )r'   r'   r'   r&   r&   r&   r&   )r(   r(   r(   r&   r&   r&   r&   r   r   precomputed)r   
n_clustersaffinityr    r#   r   )r   r   r   r   r   r   r   )nparrayr   fitlabels_r   pickleloadsdumpsr*   r    r   )r    r#   r   Smatmodellabels
model_copys           ^/var/www/html/bid-api/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_spectral.pytest_spectral_clusteringr9   '   s     	///////	

	A =#$""%'
 #c( 	 !9>ZF"6+@AQFFF\\&,,u"56
$$(8(8888&&%*<*<<<<:--u}}=# %    coo_containerc                    t        ddddgddggd      \  }}t        |d      }t        j                  |dz
  d      } ||      }t	        dd	d
|       j                  |      j                  }t        ||      dk(  sJ y )N   r   r   r   {Gz?r   r   r   r   )gammag-C6?r   r)   )r   r*   r+   r#   )r	   r   r,   maximumr   r.   r/   r   )r#   r;   Xyr3   r6   s         r8   test_spectral_clustering_sparserD   K   s     11vBx.@dDAq 	1AA


1t8QAaA 	"'		
 
Q	  q&)Q...r:   c                  B   t        ddddgddggd      \  } }d}g }dD ]l  }t        ||z   	      j                  |       }|j                  | d
      }t	        ddd|      j                  |      j
                  }|j                  |       n t        |d   |d          y )N   r   r   r   r>   r?   r   )r   r   )n_neighborsconnectivity)modeprecomputed_nearest_neighbors)r   r*   r+   rG   )r	   r   r.   kneighbors_graphr   r/   appendr   )rB   rC   rG   resultsadditional_neighborsnngraphr6   s           r8   ,test_precomputed_nearest_neighbors_filteringrQ   c   s    AAR/AtDAq KG '+8L*LMQQRST##AN#;8'	 SZW 	 	v !( wqz71:.r:   c                     t        ddddgddggd      \  } }t        ddd	      }t        j                  t        d
      5  |j                  |        d d d        t        ||j                        dk(  sJ t        ddd      }|j                  |       j                  }t        ||      dk(  sJ t        d      j                  dd      dz  } t               }|D ]P  }|dk7  s	t        d|d	      }|j                  |       j                  }| j                  d   f|j                  k(  rPJ  t        dd d	      }|j                  |       j                  }| j                  d   f|j                  k(  sJ d }t        d|d	      }|j                  |       j                  }| j                  d   f|j                  k(  sJ y # 1 sw Y   qxY w)Nr=   r   r   r   r>   r?   r   nearest_neighbors)r*   r+   r   znot fully connectedmatch)r*   r@   r   r      additive_chi2c                      y)Nr    )xrC   s     r8   <lambda>z!test_affinities.<locals>.<lambda>   s    r:   c                 X    |i k(  sJ t        j                  | |      j                         S N)r,   minimumsum)rZ   rC   kwargss      r8   	histogramz"test_affinities.<locals>.histogram   s(    ||zz!Q##%%r:   )r	   r   pytestwarnsUserWarningr.   r   r/   r   randr   shape)rB   rC   spr6   kernels_availablekernra   s          r8   test_affinitiesrj   }   s    11vBx.@dDAq 
q3FUV	WB	k)>	?
q	 
@q"**-222	q	BBVVAYFq&)Q...2##B*R/A&(! ?"#q4aPBVVAY&&FGGAJ=FLL000 " 
q>PQ	RBVVAYFGGAJ=FLL(((&
 
q91	MBVVAYFGGAJ=FLL(((= 
@	?s   GGc                     t         j                  j                  d      } d\  }}| j                  ||      }t	        |j                  t         j                              }|j                  |fk(  sJ t        j                  t        j                  |      t        j                  |            sJ t	        |j                  t         j                              }t        j                  ||      sJ y )N   seed)r   rV   )r,   randomRandomStaterandnr   astypefloat64rf   array_equaluniquearangefloat32)r   r   n_componentsdatalabels_float64labels_float32s         r8   test_cluster_qrr|      s    
 99((a(0L#I|i6DBJJ 78NI<///>>"))N3RYY|5LMMMBJJ 78N>>..999r:   c                      t         j                  j                  d      } d\  }}| j                  ||      }| j	                  |      }t        j
                  t        |      |   t        ||               sJ y )Nrl   rm   )d   rV   )r,   ro   rp   rq   permutationrt   r   )r   r   rx   ry   perms        r8   &test_cluster_qr_permutation_invariancer      st    99((a(0L$I|i6D##I.D>>44:  r:   r   )2   r~      i  c                    t         j                  j                  d      }t        dd      D ]  }|j	                  d|dz   |       }t        j
                  |t              } |t        j                  |       t        j                  |       |ff| |dz   f      }|j                         d|j                  | |dz         z  z   }t        ||	      }t        ||      d
kD  rJ  y )Nrl   rm   r   r   r   r   )rf   g?)r   g?)r,   ro   rp   rangerandintr-   floatonesrv   toarrayrq   r   r   )r   r;   r   n_classy_truey_indicatory_true_noisyy_preds           r8   test_discretizer      s     99((a(0LB<%%a1i@&%(#WWY"))I"6!?@gk*
 #**,s\5G5Gw{6
 0
 
 L|D"662S888  r:   c                     t        j                  d      \  } }d\  }}d\  }}| |d   z
  dz  ||d   z
  dz  z   |dz  k  }| |d   z
  dz  ||d   z
  dz  z   |dz  k  }||z  }|j                         }	|j                  t              }
t        |
|	      }t        j                  |j                   |j                  j                         z        |_        t        |ddd	      }t        t        j                  |            dk(  sJ t        r!t        |dd
d	      }t        ||      dk(  sJ y t        j                  t               5  t        |dd
d	       d d d        y # 1 sw Y   y xY w)N)(   r   ))      )r=      )rl      r   r   r   )maskr!   )r*   r    r   amg)r,   indicescopyrr   r   r
   expry   stdr   lenru   
amg_loadedr   rb   raises
ValueError)rZ   rC   center1center2radius1radius2circle1circle2circlesr   imgrP   labels_arpack
labels_amgs                 r8   0test_spectral_clustering_with_arpack_amg_solversr      s^   
 ::hDAq)GWGW71:~!#q71:~!&;;gqjHG71:~!#q71:~!&;;gqjHGG<<>D
..
C4(Eejjnn&667EJ'!(M ryy'(A---(ae!

 #=*=BBB]]:&!%VWX '&&s   EE(c                  f   t        ddddgddggd      \  } }t        dd      }|j                  |       j                  }t        ddd	      j                  |       j                  }t	        ||       t        dd
      j                  |       j                  }t        j                  ||      rJ y )Nr=   r   r   r   r>   r?   r   )r*   r   )r*   rx   r   )rx   r   )r	   r   r.   r/   r   r,   rt   )rB   rC   rg   r6   labels_same_ncomplabels_diff_ncomps         r8   test_n_componentsr      s     11vBx.@dDAq 
qq	9BVVAYF 	aaaHLLQOWW  v01
 	:>>qAII  ~~f&78888r:   c                 f   t        ddddgddggd      \  }}t        ddd	      j                  |       |j                         }t	        j
                  d
|j                        sJ | dk(  rEt	        j
                  d|j                        sJ t	        j
                  d|j                        sJ y y )Nr=   r   r   r   r>   r?   r   *   )r*   r   verbosez Computing label assignment usingr$   zInitialization completezIteration [0-9]+, inertia)r	   r   r.   
readouterrresearchout)r#   capsysrB   rC   captureds        r8   test_verboser     s     11vBx.@dDAq !"a@DDQG  "H998(,,GGG yy3X\\BBByy5x||DDD !r:   c                      t        j                  ddgddgg      } d}t        j                  t        |      5  t        |        ddd       y# 1 sw Y   yxY w)zbCheck that spectral_clustering raises an informative error when passed
    a np.matrix. See #10993r(   g       @z<np\.matrix is not supported. Please convert to a numpy arrayrT   N)r,   matrixrb   r   	TypeErrorr   )rB   msgs     r8   )test_spectral_clustering_np_matrix_raisesr   '  sF     			C:Sz*+A
IC	y	,A 
-	,	,s   AAc                     d }|j                  t        j                  d|       t        j                  d      }t	        j
                  t        d      5  t        |       ddd       y# 1 sw Y   yxY w)zkCheck that discretize raises LinAlgError when svd never converges.

    Non-regression test for #21380
    c                      t               r]   r   )argsr`   s     r8   new_svdz;test_spectral_clustering_not_infinite_loop.<locals>.new_svd7  s
    mr:   svd)r      zSVD did not convergerT   N)setattrr,   linalgr   rb   r   r   r   )r   monkeypatchr   vectorss       r8   *test_spectral_clustering_not_infinite_loopr   1  sQ     		5'2gggG	{*@	A7 
B	A	As   A**A3)6__doc__r0   r   numpyr,   rb   scipy.linalgr   sklearn.clusterr   r   sklearn.cluster._spectralr   r   sklearn.datasetsr	   sklearn.feature_extractionr
   sklearn.metricsr   sklearn.metrics.pairwiser   r   sklearn.neighborsr   sklearn.utilsr   sklearn.utils._testingr   sklearn.utils.fixesr   r   pyamgr   r   ImportErrorr-   r   rB   _markparametrizer9   rD   rQ   rj   r|   r   r   r   r   r   r   r   rY   r:   r8   <module>r      s   -  	   $ C < ' 3 / ? . , 5 >1J "((QFRHq"g.
/"
41 .9)=>*PQ> R ? :>B .9*PQ/ R :/,/4')T:$	 .9&9:9 ; :9&!YH9. *PQE RE"q  Js   F4 4F?>F?