`L iL UddlZddlZddlmZmZddlZddlZddlm Z ddl m Z m Z ddlmZddlmZmZmZmZmZddlmZmZmZmZmZddlmZegZeeed<egZ eeed <ee zZ!egZ"eeed <egZ#eeed <e"e#zZ$ dd/Z?ejVjYd'eejVjYd0e$d1Z@ejVjYd'eejVjYd2d3ejVjYd4d3ejVjYd0e$ejVjYd5d6d7gd8ZAejVjYd0e$ejVjYd9ejejfejejfejejfejejffd:ZFejVjYd0e$d;ZGy)=N)AnyList)DataDimensionalityWarningNotFittedError)euclidean_distances)GaussianRandomProjectionSparseRandomProjection_gaussian_random_matrix_sparse_random_matrixjohnson_lindenstrauss_min_dim)assert_allcloseassert_allclose_dense_sparseassert_almost_equalassert_array_almost_equalassert_array_equal)COO_CONTAINERSall_sparse_random_matrixall_dense_random_matrixall_SparseRandomProjectionall_DenseRandomProjectionctjj|}||j||j |||j ||ff||f}||j |S|j S)zMake some random data with uniformly located non zero entries with Gaussian distributed values; `sparse_format` can be `"csr"` (default) or `None` (in which case a dense array is returned). sizeshape)nprandom RandomStaterandnrandintasformattoarray) coo_container n_samples n_features n_nonzeros random_state sparse_formatrngdata_coos j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/tests/test_random_projection.pymake_sparse_random_datar,$s ))   -C IIj ! IJ 7 JZ 8  *% H   //!!cPtj|s|S|jSN)spissparser")matrixs r+densifyr3As ;;v  ~~r-) gY@zn_samples, epsdn?皙?Z皙?2i皙?cztjt5t||dddy#1swYyxYw)Neps)pytestraises ValueErrorr )r$rAs r+test_invalid_jl_domainrEQs/ z ":%iS9:::s1:c tjt5tddgzddgzdddttj j ddd t jdd y#1swYKxYw) Nr6r8r@r4)r4r4r?)rBrCrDr rrr fullr-r+test_input_size_jl_min_dimrM^sm z "@%a3%iQ#Y?@" !Rh/RWWXs5K@@s A::Bcgd}|D]0\}}tjt5|||ddd2y#1swY=xYw)N))rr)rI)rIrO)rIr)rOrrBrCrD random_matrixinputs n_componentsr%s r+check_input_size_random_matrixrUjsK 8F$*4 j ]]: & 4 , 3 4 44 4 4s ;A cTgd}|D]\}}|||j||fk(rJy)N))rI)rWrI)rWrW)rIrIrrQs r+check_size_generatedrXqsF -F$*  j\:6<<  A     r-ct|ddd}tdtj|dtdtjj |dy)Ni'rIrr'rG?)r3rrmeanlinalgnorm)rRAs r+check_zero_mean_and_unit_normr`zsD  eQQ78AaQ/c299>>!#4a8r-cd\}}dD]/}tjt5||||ddd1y#1swY776?a' ''&= =776?a' '' BGGAH-q1q5y!D GGAbggl&;;; y#1swYIxYw)Nauto)rrIrHrT)all_RandomProjectionrBrCrDfit)rTfit_dataRandomProjections r+0test_random_projection_transformer_invalid_inputrs^L{H0F ]]: & F , 7 ; ;H E F FF F Fs AA r#ct|ttt|d}tD]<}t j t5|dj|ddd>y#1swYIxYw)Nr'r(ryrz) r,r$r%r&r{rBrCr transform)r#global_random_seeddatar~s r+ test_try_to_transform_before_fitrsp "'  D1B ]]> * B & 1 ; ;D A B BB B Bs A$$A- ct|ddd|d}tD]C}|dd}d}tjt|5|j |dddEy#1swYPxYw) Nr5r6r$r%r&r'r(ryr;)rTrAz~eps=0.100000 and n_samples=1000 lead to a target dimension of 5920 which is larger than the original space with n_features=100)match)r,r{rBrCrDr|)r#rrr~rp expected_msgs r+.test_too_many_samples_to_find_a_safe_embeddingrs{ "'  D1 6s ;   ]]:\ :  FF4L    s AA( ctt|ddddd}d}t|d}|j}|d k7}||}tD]u}|d |d }|j |}t|d}|j}||}||z } | j d |zksJd |z | j kruJy) Nii:rrr>T)squaredr<ry)rTrAr'rI)r,rravelr{ fit_transformmaxmin) r#rrAoriginal_distances non_identicalr~r projectedprojected_distancesdistances_ratios r+(test_random_projection_embedding_qualityrs "  D C,T4@+113&#-M,M:0/ 6s K$$T* 1)TJ17792-@-0BB ""$q3w...3w,,....!/r-cLt|tttdd}t|tttdd}tD]}|ddd}|j |t |j|tjsJt |j|tjsJ|ddd}|j |}t |j|tjsJtj|j|rJy)Nrrcsrr4T)rT dense_outputr'F) r,r$r%r&rr| isinstancerrndarrayr0r1)r# dense_data sparse_dataSparseRandomProjrs r++test_SparseRandomProj_output_representationr7s( J* K762Dq Q z",,z2BJJ???",,{3RZZ@@@2EPQ R VVJ ",,z2BJJ???{{2<< 45556r-ct|ttt|d}tD]}|dddj |}|j dk(sJ|jdk(sJ|tvr(|jdk(sJt|jdd|jjdtfk(sJ|j|}|jtdfk(sJ|j|}t|||dd }|j!|}t||t#j$t&5|j|ddd d fddd|tvsC|d d d}|j!|} | jtd fk(sJ|jjd tfk(sJ|jj(dksJd|jj(krJy#1swYxYw)NrryrrJ)rTr'rAr7gQ?rH)r'rArIrWr6gMbP?)rTrcr'sU)r,r$r%r&r{r|rT n_components_rrcrdensity_ components_rrrrrBrCrDnnz) r#rrr~r projected_1 projected_2rp2 projected_3rs r+2test_correct_RandomProjection_dimensions_embeddingr[s #'  D1&+ 6s K O OPT U&(((3&&& 9 9::' ''  T1 5~~##Z'8888ll4(   Y$4444ll4( ; 4A37''- ; 4]]: & ' LLa1f & ' 9 9!sEPQRB((.I??y#&66 66>>''C+<< <<>>%%+ ++*** **M&+6 ' 's :G55G> cd}d}t|dz }t|||||d}tD]?}tjt 5||dzj |dddAy#1swYLxYw)NrWrrIrz)intr,r{rBwarnsrr|)r#rr%r$r&rr~s r+1test_warning_n_components_greater_than_n_featuresrsJIZ!^$J "'  D1D \\3 4 D *q. 9 = =d C D DD D Ds A--A6 cJd}d}t|dz }t|||||d}t|||||d}tD]f}|ddj|}|ddj|} t t |j t | j hy) NrrWrrrrGrI)rTr')rr,r{r|rr3r) r#rr%r$r&rrr~rp_dense rp_sparses r+test_works_with_sparse_datarsJIZ!^$J(' J*' K1 #CGG S$!!DHHU ! H(( )793H3H+I  r-c(tdddk(sJy)zyTest Johnson-Lindenstrauss for small eps. Regression test for #17111: before #19374, 32-bit systems would fail. r6h㈵>r@lJWN)r rLr-r+"test_johnson_lindenstrauss_min_dimrs )$ 7< GG Gr-random_projection_clscht|ttt|d}|d}|j ||j }|j j}tjt|jDcgc]}|| c}t}t||ycc}w)NrrHrz)dtype)r,r$r%r&r|get_feature_names_out__name__lowerrarrayrangerobjectr) r#rrrrandom_projection names_outclass_name_loweriexpected_names_outs r+(test_random_projection_feature_names_outrs #'  D.1=$!779I,55;;=+01B1P1P+QRa  aS !R y"45 Ss B/r$)rH r4 r5r%compute_inverse_componentsTFcrd}||||}t|||||zdzdz|d}t|||||zdzdz|d} || fD]} tj5tjddt |j | } ddd|r-t |d sJ|j} | j||fk(sJ|j } | j| jk(sJ|j| }t | d r| j} t| |d d y#1swYxYw)Nr4)rTrr'r6rI)r&r'r(rignorez>The number of components is higher than the number of features)messagecategoryinverse_components_r"gHz>g|=)rtolatol) r,warningscatch_warningsfilterwarningsrrhasattrrrinverse_transformrr"r )r#r$r%rrrrTrX_denseX_csrXrinv_componentsprojected_backprojected_agains r+test_inverse_transformrsrL-!#=' &z)S014' G $z)S014'  Eu K  $ $ & ;  # #T2  *77:I ; &,.CD DD.BBN!''J +EE EE*<>  > 11 1    .. .r-cd}tjjd}|jdd}|d}|d}|j |j tj }|j |j tj}t|||t|j|jy)NrrrrrrZ)r) rrrrrrfloat32float64r rr)rrr)rrp_32rp_64 projection_32 projection_64s r+,test_random_projection_numerical_consistencyr:s D ))   #C TA !q 1E !q 1E''(<=M''(<=MM=t< !2!2E4E4EFr-)Nr)HrhrtypingrrnumpyrrB scipy.sparsesparser0sklearn.exceptionsrrsklearn.metricsrsklearn.random_projectionrr r r r sklearn.utils._testingr rrrrsklearn.utils.fixesrr__annotations__rall_random_matrixrrr{r,r3r$r%rr&mark parametrizerErMrUrXr`rdrfrkrprwrrrrrrrrrrrrrint32int64rrrLr-r+rs5 H//'<&=$s)=&=%>c>,/FF)?(@DI@(@'A49A14MM ": # : Z'%/ 0  sc3Z cS#J cS#J:: 4 9E*;<1=1*BC7D7 F1 rF.9 B: B.9:*.9"/:"/J.9 6: 6F.91+:1+h.9D:D(.9 : :H.902FG6H:6..9&:;';<02FG5e}E7KFH=<: 7Kt02FG! RZZ RZZ 2:: 2::  /H /02FG GH Gr-