`L i*/ 8ddlZddlmZddlZddlZddlmZddl m Z m Z m Z m Z mZmZddlmZddlmZddlmZmZmZddlmZgd Zgd Zd+d Zej:j=d ddej>fgej:j=deej:j=dedZ ej:j=d ddej>fgej:j=deej:j=dedZ!ej:j=d ddgdZ"ej:j=d ddgdZ#dZ$ej:j=dddddddd fgd Z%d!Z&ej:j=deej:j=deej:j=d"ed#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.y),N)product)rand)clonedatasetsmanifold neighborspipeline preprocessing) make_blobs)pairwise_distances)assert_allcloseassert_allclose_dense_sparseassert_array_equal)CSR_CONTAINERS)autodensearpack)rFWDFc ttj|}tjt t t|dj|d}|r]tjjd}d|j|dj|dz}tj||fd}|S)N)repeatFcopyr皙?) intmathsqrtnparraylistrrangeastyperandom RandomStaterandn concatenate)dtypen_pts add_noise n_per_sideXrngnoises h/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/manifold/tests/test_isomap.pycreate_sample_datar1sTYYu%&J geJ/:;<CCEPUCVAii##A&ciiq)00U0CC NNAu:q ) Hzn_neighbors, radius)N eigen_solver path_methodcd}t||d}|tj||d}ntj||d}t j ||d||}|j ||#tj|j|d} n"tj|j|d} |tjk(rdnd } t|| | y) NFr*r+distancemoder n_neighborsradius n_componentsr4r5h㈵>ratol) r1rkneighbors_graphradius_neighbors_graphrIsomapfit embedding_r float32r) global_dtyper=r>r4r5r*r-GclfG_isorBs r0test_isomap_simple_gridrM"s E>;ZX00 NNF  2::-41D E5r2cH|tjurtjdd}t ||d}|'t j ||dj}n&t j||dj}tj}|jd|dzz} tj||d|| } | j||#t j | j|d} n"t j| j|d} | j} |jd| dzz} tj j#| | z |z } |tjk(rd nd }t%| | j'| y) NzwSkipping test due to numerical instabilities on float32 datafrom KernelCenterer used in the reconstruction_error methodr7Tr8r9r:grr<r@rrA)r rHpytestskipr1rrCtoarrayrDr KernelCenterer fit_transformrrErFrGlinalgnormr reconstruction_error)rIr=r>r4r5r*r-rJcentererKrKrLK_isorVrBs r0 test_isomap_reconstruction_errorrZEso rzz!  J E>;ZX00 NNF  MMOE  " "4%(? 3E99>>!e)4u<2::-41D(#*B*B*D4Pr2)rN)Ng?cd}d}d}tj|d\}}|j|d}tj|||}|j |} t jjd} || j|jz} |j|| z} t jt j| | z d zd |zksJy) N g{Gz?r random_stateFr)r?r=r>r)r make_s_curver$rrErSr r%r&r'shape transformrmean) rIr=r> n_samplesr? noise_scaler-yisoX_isor.r/X_iso2s r0test_transformrjvsILK   ;DAq E*A //!{6 C   a E ))   "C )#))QWW- -E ]]1u9 %F 77277EFNq01 2Q_ DD Dr2)Ng$@c2tjd\}}|j|d}tjdt j ||fdtjfg}|j||d|j||ksJy) Nrr^Frisomapr=r>rKg?) rr r$r PipelinerrErKNeighborsClassifierrFscore)r=r>rIr-rfrKs r0 test_pipelinerqs   A .DAq E*A    x;vN O I224 5  C GGAqM 1a  r2c$d}d}tjd\}}tjd\}}|j|d}|j|d}tjt j ||d tj|d }tj|| }|j|}|j|} t|| |j|}|j|} t|| y) Nrr]rr^rFrr9)r= algorithmr; precomputedr=metric)r=neighbors_algorithm) rr r$r make_pipelinerKNeighborsTransformerrrErSr rb) rIrsr=r-_X2 est_chain est_compactXt_chain Xt_compacts r00test_pipeline_with_nearest_neighbors_transformerrsIK   A .DAq   Q /EB E*A rs$r1ur1u} 56r2rctjd\}}|j|d}tjj |}tj||j |}|r t ||ytjtd5t ||dddy#1swYyxYw)Nrr^Fr)rvpzNot equal to tolerancematch) rr r$rrErSr rOraisesAssertionError)rIrvr is_euclideanr-rz reference embeddings r0test_different_metricrs   A .DAq E*A!//2Iv3AA!DI 9- ]]>1I J 2 Iy 1 2 2 2s B66B?ctj}dD]^}|j||jtj j dd|jj|k(r^Jy)N)r]r=2r) rrE set_paramsrFr r%rnbrs_r=)modelr=s r0test_isomap_clone_bugrsa OO E#6  [1 "))..Q'({{&&+5556r2 csr_containerc |tdddd||}tjd||d}t|}|j |j }|j |} t | |d d y) Ndrcsr)densityformatr)r_r)r?r4r5r=g-C6?)rtolrB) sparse_randrrErrSrQr ) rIr4r5global_random_seedrr- iso_dense iso_sparse X_trans_denseX_trans_sparses r0test_sparse_inputrs   +   A! I y!J++AIIK8M--a0NNM4Hr2ctjdd\}}|j|d}d}tj||d}t j d|d }|j||j}t j d|d }|j|}|tjk(rd nd}t||| y)Nr\rr^Frr]r9)r>r;rt)r=r>rvrr@rA) rr`r$rrDrrErFrGrSr rHr ) rIr-rfr>grlprecomputed_resultresultrBs r0(test_isomap_fit_precomputed_radius_graphrs  1 5DAq E*A F((6 KA __f] SF JJqM** __f[ QF  ! !! $F2::-41D&T:r2ctjd}tjddgddgddgg|}|j ||j j |k(sJ|jj |k(sJy ) zRCheck that the fitted attributes are stored accordingly to the data type of X.rrrrr)N)rrEr r!rF dist_matrix_r)rG)rIrgr-s r0#test_isomap_fitted_attributes_dtypersr //a (C 1a&1a&1a&)>AGGAJ    ! !\ 11 1 >>  < // /r2ctjd}tjddgddgddggtj}|j |tjd}tjddgddgddggtj }|j |t|j|jy ) z?Check the equivalence of the results with 32 and 64 bits input.rrrrrrrrN) rrEr r!rHrFfloat64r r)iso_32X_32iso_64X_64s r0test_isomap_dtype_equivalencer%s __ +F 88aVaVaV,BJJ ?D JJt __ +F 88aVaVaV,BJJ ?D JJtF'')<)<=r2ctjd\}}tjdd}d}t j t |5|j|dddy#1swYyxYw)NT) return_X_yrg@rmz(Both n_neighbors and radius are providedr)r load_digitsrrErOr ValueErrorrS)r-rzrlmsgs r09test_isomap_raise_error_when_neighbor_and_radius_both_setr2s^   4 0DAq __3 7F 4C z - Q   s A))A2ctjgddddf}tjtd5t j dj|dddy#1swYyxYw)Nrrrrrnumber of connected componentsrrr)r r!rOwarns UserWarningrrErF)r-s r0"test_multiple_connected_componentsr=sU #$QW-A k)I J.A&**1-...s &A))A2ctjgddddfj|d}t|}t j t d5tjddj|dddtj|d d }t jtd5tjddj|dddy#1swYlxYw#1swYyxYw) NrFrrrrrtrurr9)r=r;)r r!r$r rOrrrrErFrrCr RuntimeError)rIr- X_distancesX_graphs r05test_multiple_connected_components_metric_precomputedrDs #$QW-44\4NA%Q'K k)I JNAm<@@MN(( KG |+K LJAm<@@IJJ NN JJs'C(8'C4(C14C=ctdd\}}d}tj|}|j||j }t t |Dcgc]}d| c}|ycc}w)z'Check get_feature_names_out for Isomap.rr)r_ n_featuresr)r?rlN)r rrErSget_feature_names_outrr#)r-rfr?rgnamesis r0test_get_feature_names_outrTsd 1 3DAqL //| 4Ca  % % 'EeL.AB& BEJBs A1)r7F)/r itertoolsrnumpyr rO scipy.sparserrsklearnrrrrr r sklearn.datasetsr sklearn.metrics.pairwiser sklearn.utils._testingr rrsklearn.utils.fixesr eigen_solvers path_methodsr1mark parametrizeinfrMrZrjrqrrrrrrrrrrrr2r0rs2  ,QQ'7 /+ "   .dBFF^0LM7 5668N6@.dBFF^0LM7 5+Q68N+Q\.K0HIEJE2.L0IJ !K ! *@ 65A   2  2 67 5.9I:68I<;& 0 > . J Kr2