
    /ii-                        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"n# e#$ r dZ"Y nw xY w ej$        ddgddgddgg          dz   Z% edde%ddd          \  Z&Z'ej(        )                    de          ej(        )                    dd          ej(        )                    dd          d                                     Z*ej(        )                    de          ej(        )                    dd          d                         Z+d  Z,d! Z-d" Z.d# Z/ej(        )                    de          ej(        )                    d$g d%          d&                         Z0d' Z1d( Z2ej(        )                    dd          d)             Z3d* Z4d+ Z5dS ),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| |                              |          }|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                   d S )
N)      ?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   r   )nparrayr   fitlabels_r   pickleloadsdumpsr*   r    r   )	r    r#   r   global_random_seedSmatmodellabels
model_copys	            i/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/sklearn/cluster/tests/test_spectral.pytest_spectral_clusteringr:   '   sV    	/////////////////////	

	 
	A ==##$ > >"+"%'
 
 
 #c(( 	 !9>>ZF"6+@+@+@AAQFFFF\&,u"5"566
$(88888&%*<<<<<:-u}====#> >    coo_containerc                 (   t          d|ddgddggd          \  }}t          |d          }t          j        |dz
  d          } ||          }t	          |d	d
|                               |          j        }t          ||          dk    sJ d S )N   r   r   {Gz?r   r   r   r   )gammag-C6?r   r   r)   )r   r*   r+   r#   )r	   r   r,   maximumr   r.   r/   r   )r#   r<   r3   Xyr4   r7   s          r9   test_spectral_clustering_sparserE   M   s     'Q"b"	  DAq 	1AA

1t8QAaA 	+"'		
 	
 	
 
Q	  q&))Q......r;   c                    t          d| g dg dgd          \  }}d}g }dD ]}t          ||z                                 |          }|                    |d	
          }t	          | dd|                              |          j        }|                    |           t          |d         |d                    d S )N   )r   r   r   )r   r   r   r?   r@   r   )r   r   )n_neighborsdistance)modeprecomputed_nearest_neighbors)r   r*   r+   rH   r   r   )r	   r   r.   kneighbors_graphr   r/   appendr   )	r3   rC   rD   rH   resultsadditional_neighborsnngraphr7   s	            r9   ,test_precomputed_nearest_neighbors_filteringrR   h   s    'LLL)	  DAq KG '  +8L*LMMMQQRSTT##AJ#77/8'	   SZZ 	 	vwqz71:.....r;   c                    t          ddddgddggd          \  }}t          ddd	          }t          j        t          d
          5  |                    |           d d d            n# 1 swxY w Y   t          ||j                  dk    sJ t          dd|           }|                    |          j        }t          ||          dk    sJ t          d          	                    dd          dz  }t                      }|D ]M}|dk    rEt          d|d	          }|                    |          j        }|j        d         f|j        k    sJ Nt          dd d	          }|                    |          j        }|j        d         f|j        k    sJ d }t          d|d	          }|                    |          j        }|j        d         f|j        k    sJ d S )Nr>   r   r   r   r?   r@   r   nearest_neighbors)r*   r+   r   znot fully connectedmatch)r*   rA   r   r      additive_chi2c                     dS )Nr    )xrD   s     r9   <lambda>z!test_affinities.<locals>.<lambda>   s     r;   c                 `    |i k    sJ t          j        | |                                          S N)r,   minimumsum)r[   rD   kwargss      r9   	histogramz"test_affinities.<locals>.histogram   s-    ||||z!Q##%%%r;   )r	   r   pytestwarnsUserWarningr.   r   r/   r   randr   shape)r3   rC   rD   spr7   kernels_availablekernrb   s           r9   test_affinitiesrk      sK    11vBx.@d  DAq 
q3FUV	W	W	WB	k)>	?	?	?  
q			              q"*--2222	q@R	S	S	SBVVAYYFq&))Q....2##B**R/A&((! 1 1 ?""#q4aPPPBVVAYY&FGAJ=FL0000	q>>PQ	R	R	RBVVAYYFGAJ=FL((((& & &
 
q91	M	M	MBVVAYYFGAJ=FL((((((s   
A,,A03A0c                    t           j                            |           }d\  }}|                    ||          }t	          |                    t           j                            }|j        |fk    sJ t          j        t          j	        |          t          j
        |                    sJ t	          |                    t           j                            }t          j        ||          sJ d S )Nseed)r   rW   )r,   randomRandomStaterandnr   astypefloat64rg   array_equaluniquearangefloat32)r3   r   r   n_componentsdatalabels_float64labels_float32s          r9   test_cluster_qrr|      s    
 9((.@(AAL#I|i66DBJ 7 788NI<////>")N33RY|5L5LMMMMMBJ 7 788N>..9999999r;   c                     t           j                            |           }d\  }}|                    ||          }|                    |          }t          j        t          |          |         t          ||                             sJ d S )Nrm   )d   rW   )r,   ro   rp   rq   permutationrt   r   )r3   r   r   rx   ry   perms         r9   &test_cluster_qr_permutation_invariancer      s    9((.@(AAL$I|i66D##I..D>44:      r;   r   )2   r~      i  c                    t           j                            |          }t          dd          D ]}|                    d|dz   |           }t          j        |t                    } |t          j        |           t          j        |           |ff| |dz   f          }|	                                d|
                    | |dz             z  z   }t          ||          }t          ||          d	k    sJ d S )
Nrm   r   r   r   r   )rg   g?)r   g?)r,   ro   rp   rangerandintr-   floatonesrv   toarrayrq   r   r   )	r   r<   r3   r   n_classy_truey_indicatory_true_noisyy_preds	            r9   test_discretizer      s    9((.@(AALB<< 9 9%%a1i@@&%((#mWY")I"6"6!?@gk*
 
 
 #**,,s\5G5Gw{6
 6
 0
 
 L|DDD"6622S888889 9r;   c                 4   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  }	|	                                }
|	                    t                    }t          ||
          }t          j        |j         |j                                        z            |_        t          |dd| 	          }t          t          j        |                    dk    sJ t          r+t          |dd
| 	          }t          ||          dk    sJ d S t          j        t                     5  t          |dd
d	           d d d            d S # 1 swxY w Y   d S )N)(   r   ))      )r>      )      r   r   r   )maskr!   )r*   r    r   amg)r,   indicescopyrr   r   r
   expry   stdr   lenru   
amg_loadedr   rc   raises
ValueError)r3   r[   rD   center1center2radius1radius2circle1circle2circlesr   imgrQ   labels_arpack
labels_amgs                  r9   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ejnn&6&6677EJ'!(AS  M ry''((A---- Y(aeBT
 
 

 #=*==BBBBBB]:&& 	Y 	Y!%VWXXXX	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Y 	Ys   ,FFFc                    t          d| ddgddggd          \  }}t          d|           }|                    |          j        }t          dd|                               |          j        }t	          ||           t          d| 	                              |          j        }t          j        ||          rJ d S )
Nr>   r   r   r?   r@   r   )r*   r   )r*   rx   r   )rx   r   )r	   r   r.   r/   r   r,   rt   )r3   rC   rD   rh   r7   labels_same_ncomplabels_diff_ncomps          r9   test_n_componentsr     s     'Q"b"	  DAq 
q7I	J	J	JBVVAYYF 	q7I	
 	
 	
 
Q	  v0111
 	8JKKK	Q	 
 ~f&78888888r;   c                 h   t          ddddgddggd          \  }}t          ddd	                              |           |                                }t	          j        d
|j                  sJ | dk    r8t	          j        d|j                  sJ t	          j        d|j                  sJ d S d S )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#   capsysrC   rD   captureds        r9   test_verboser   &  s     11vBx.@d  DAq !"a@@@DDQGGG  ""H98(,GGGGG  y3X\BBBBBy5x|DDDDD ! DDr;   c                      t          j        ddgddgg          } d}t          j        t          |          5  t          |            ddd           dS # 1 swxY w Y   dS )zcCheck that spectral_clustering raises an informative error when passed
    an np.matrix. See #10993r(   g       @z<np\.matrix is not supported. Please convert to a numpy arrayrU   N)r,   matrixrc   r   	TypeErrorr   )rC   msgs     r9   )test_spectral_clustering_np_matrix_raisesr   8  s     		C:Sz*++A
IC	y	,	,	,  A                 s   AAAc                     d }|                     t          j        d|           t          j        d          }t	          j        t          d          5  t          |           ddd           dS # 1 swxY w Y   dS )zkCheck that discretize raises LinAlgError when svd never converges.

    Non-regression test for #21380
    c                      t                      r^   r   )argsra   s     r9   new_svdz;test_spectral_clustering_not_infinite_loop.<locals>.new_svdH  s    mmr;   svd)r      zSVD did not convergerU   N)setattrr,   linalgr   rc   r   r   r   )r   monkeypatchr   vectorss       r9   *test_spectral_clustering_not_infinite_loopr   B  s       	5'222ggG	{*@	A	A	A  7                 s   A11A58A5)6__doc__r0   r   numpyr,   rc   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   rC   _markparametrizer:   rE   rR   rk   r|   r   r   r   r   r   r   r   rZ   r;   r9   <module>r      so   - -  				      $ $ $ $ $ $ C C C C C C C C < < < < < < < < ' ' ' ' ' ' 3 3 3 3 3 3 / / / / / / ? ? ? ? ? ? ? ? . . . . . . , , , , , , 5 5 5 5 5 5 > > > > > > > >111111JJ   JJJ "(QFRHq"g.
/
/"
4z  1 .99)=>>*PQQ >  > RQ ?> :9 >F .99*PQQ/ / RQ :9/2/ / /:') ') ')T: : :$	 	 	 .99&9&9&9::9 9 ;: :99&!Y !Y !YH9 9 9@ *PQQE E RQE"      s   A' 'A10A1