`L i-dZddlZddlZddlZddlZddlmZddlm Z m Z ddl m Z m Z ddlmZddlmZddlmZdd lmZmZdd lmZdd lmZdd lmZdd lmZmZ ddl m!Z!dZ"ejHddgddgddggdzZ%edde%ddd\Z&Z'ejPjSdeejPjSddejPjSdddZ*ejPjSdeejPjSdddZ+d Z,d!Z-d"Z.d#Z/ejPjSdeejPjSd$gd%d&Z0d'Z1d(Z2ejPjSddd)Z3d*Z4d+Z5y#e#$rdZ"YXwxYw),z'Testing for Spectral Clustering methodsN LinAlgError)SpectralClusteringspectral_clustering) cluster_qr discretize) make_blobs) img_to_graph)adjusted_rand_score)kernel_metrics rbf_kernel)NearestNeighbors)check_random_state)assert_array_equal)COO_CONTAINERSCSR_CONTAINERS)smoothed_aggregation_solverTF <g?) n_samples n_featurescenters cluster_stdshuffle random_state csr_container eigen_solver)arpacklobpcg assign_labels)kmeansrrc tjgdgdgdgdgdgdgdg}|||fD]}t|dd||j|}|j}|ddk(rd|z }t |gd dk(sJt jt j|}|j|jk(sJ|j|jk(sJt|j|jy) N)?r&r&皙?r(r()r'r'r'r&r&r&r&)r(r(r(r&r&r&r&r precomputed)r n_clustersaffinityr r#rr)rrrrrrr) nparrayrfitlabels_r pickleloadsdumpsr*r r) r r#rglobal_random_seedSmatmodellabels model_copys i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_spectral.pytest_spectral_clusteringr:'s  / / / / / / /  A=#$>"+"%'  #c(  !9>ZF"6+@AQFFF\\&,,u"56 $$(8(8888&&%*<*<<<<:--u}}=#> coo_containerctd|ddgddggd\}}t|d}tj|dz d}||}t |d d | j |j }t||dk(sJy) Nrr{Gz?rrrr)gammag-C6?rrr))rr*r+r#)r r r,maximumrr.r/r )r#r<r3Xyr4r7s r9test_spectral_clustering_sparserEMs 'Q"b"  DAq 1AA 1t8QAaA +"'  Q   q& )Q .. .r;cBtd|gdgdgd\}}d}g}dD]l}t||zj|}|j|d }t |dd | j|j }|j |nt|d |dy)N)rrr)rrrr?r@r)rr) n_neighborsdistance)modeprecomputed_nearest_neighbors)rr*r+rHrr)r rr.kneighbors_graphrr/appendr) r3rCrDrHresultsadditional_neighborsnngraphr7s r9,test_precomputed_nearest_neighbors_filteringrRhs 'L)  DAqKG '  +8L*L M Q QRS T##AJ#7 /8'   SZ W  v wqz71:.r;ctddddgddggd\}}tddd }tjtd 5|j |dddt ||jdk(sJtdd| }|j |j}t ||dk(sJtd jd dd z}t}|D]P}|dk7s td|d }|j |j}|jdf|jk(rPJtddd }|j |j}|jdf|jk(sJd}td|d }|j |j}|jdf|jk(sJy#1swYqxYw)Nr>rrrr?r@rnearest_neighbors)r*r+rznot fully connectedmatch)r*rArr additive_chi2cy)Nr)xrDs r9z!test_affinities..sr;cX|ik(sJtj||jSN)r,minimumsum)r[rDkwargss r9 histogramz"test_affinities..histograms(||zz!Q##%%r;) r rpytestwarns UserWarningr.r r/rrandr shape)r3rCrDspr7kernels_availablekernrbs r9test_affinitiesrks 11vBx.@d DAq q3FUV WB k)> ? q  q"** - 22 2 q@R SB VVAY  F q& )Q .. .2##B*R/A&(!1 ? "#q4aPBVVAY&&FGGAJ=FLL0 00 1 q>PQ RB VVAY  F GGAJ=FLL (( (& q91 MB VVAY  F GGAJ=FLL (( (=s GG ctjj|}d\}}|j||}t |j tj }|j|fk(sJtjtj|tj|sJt |j tj}tj||sJy)Nseed)rrW) r,random RandomStaterandnrastypefloat64rg array_equaluniquearangefloat32)r3rr n_componentsdatalabels_float64labels_float32s r9test_cluster_qrr|s 99((.@(AL#I|   i 6D BJJ 78N   I< // / >>"))N3RYY|5L MM M BJJ 78N >>.. 99 9r;ctjj|}d\}}|j||}|j |}tj t ||t ||sJy)Nrm)drW)r,rorprq permutationrtr)r3rrrxryperms r9&test_cluster_qr_permutation_invariancersu99((.@(AL$I|   i 6D  # #I .D >>44:  r;r)2r~ictjj|}tddD]}|j d|dz|}tj |t }|tj|tj||ff||dzf}|jd|j||dzzz}t||}t||d kDrJy) Nrmrrrr)rgg?)rg?) r,rorprangerandintr-floatonesrvtoarrayrqrr ) rr<r3rn_classy_true y_indicator y_true_noisyy_preds r9test_discretizers99((.@(ALB< 9%%a1i@&%(# WWY "))I"6!? @gk* #**,s\5G5G w{6 0  L|D"662S888 9r;ctjd\}}d\}}d\}}||dz dz||dz dzz|dzk}||dz dz||dz dzz|dzk}||z} | j} | jt} t | | } tj | j | jjz | _t| dd| } ttj| dk(sJtr!t| dd | }t| |dk(sJytjt 5t| dd d dddy#1swYyxYw) N)(r)) )r>)rrr)maskr!)r*r ramg)r,indicescopyrrrr exprystdrlenru amg_loadedr rcraises ValueError)r3r[rDcenter1center2radius1radius2circle1circle2circlesrimgrQ labels_arpack labels_amgs r90test_spectral_clustering_with_arpack_amg_solversrsm ::h DAq)GWGW71:~!#q71:~!&;;gqjHG71:~!#q71:~!&;;gqjHGG <<>D .. C 4 (E ejjnn&667EJ' !(ASM ryy' (A -- -( aeBT #=*=BBB ]]: & Y !%VW X Y Y Ys EE(cftd|ddgddggd\}}td|}|j|j}tdd|j|j}t ||td| j|j}t j ||rJy) Nr>rrr?r@r)r*r)r*rxr)rxr)r rr.r/rr,rt)r3rCrDrhr7labels_same_ncomplabels_diff_ncomps r9test_n_componentsrs 'Q"b"  DAq q7I JB VVAY  F q7I  Q  v01 8JK Q  ~~f&788 88r;cftddddgddggd\}}tddd j||j}t j d |j sJ|d k(rEt j d |j sJt j d |j sJyy)Nr>rrrr?r@r*)r*rverbosez Computing label assignment usingr$zInitialization completezIteration [0-9]+, inertia)r rr. readouterrresearchout)r#capsysrCrDcaptureds r9 test_verboser&s 11vBx.@d DAq!"a@DDQG  "H 998(,, GG G yy3X\\BBByy5x||DDD!r;ctjddgddgg}d}tjt|5t |dddy#1swYyxYw)zbCheck that spectral_clustering raises an informative error when passed a np.matrix. See #10993r(g@z.new_svdHs mr;svd)rzSVD did not convergerUN)setattrr,linalgrrcrrr)r monkeypatchrvectorss r9*test_spectral_clustering_not_infinite_looprBsY  5'2gggG {*@ A7s  A**A3)6__doc__r0rnumpyr,rc scipy.linalgrsklearn.clusterrrsklearn.cluster._spectralrrsklearn.datasetsr sklearn.feature_extractionr sklearn.metricsr sklearn.metrics.pairwiser r sklearn.neighborsr sklearn.utilsrsklearn.utils._testingrsklearn.utils.fixesrrpyamgrr ImportErrorr-rrC_mark parametrizer:rErRrkr|rrrrrrrrZr;r9rs-  $C<'3/?.,5>1J "((QFRHq"g. /" 4   1.9)=>*PQ >R?: >F.9*PQ/R:/2/:')T:$ .9&9:9;:9&!YH9@*PQERE" S JsF44F?>F?