`L i# JdZddlZddlZddlmZddlmZmZddl m Z m Z ddl m Z mZmZddlmZmZddlmZmZdd lmZdd lmZmZmZdd lmZGd d eeZej>jAdedZ!dZ"ej>jAdedZ#ej>jAdedZ$dZ%dZ&ej>jAdedZ'ej>jAdedZ(dZ)dZ*ej>jAdedZ+dZ,ej>jAdddie-dfddie-d fdd!ie-d fd"d#d$e-d%fgd&Z.ej>jAd'e e fd(Z/y))z)Testing for Spectral Biclustering methodsN)issparse) BaseEstimatorBiclusterMixin)SpectralBiclusteringSpectralCoclustering)_bistochastic_normalize_log_normalize_scale_normalize)make_biclustersmake_checkerboard)consensus_scorev_measure_score) ParameterGrid)assert_almost_equalassert_array_almost_equalassert_array_equal)CSR_CONTAINERSceZdZdZdZy)MockBiclusteringcyN)selfs j/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sklearn/cluster/tests/test_bicluster.py__init__zMockBiclustering.__init__s cjtjgddtjgddfS)N)TTFFTr)FFTT)npwhere)ris r get_indiceszMockBiclustering.get_indicess2 HH5 6q 9 HH/ 0 3  rN)__name__ __module__ __qualname__rr!rrrrrs   rr csr_containerctjdjdd}t}||||j fD]~}|j d|}t |r|j}t|ddgddgd d ggd |ddt |r|j}tj|d k7r~Jy) Nr) rarangereshapertolist get_submatrixrtoarrayrall)r%datamodelX submatrixs rtest_get_submatrixr;&s 99R= A &D  EM$' 7''1- I !))+I91v1vBx&@A ! A; Avva2grct|jD]J}|j|\}}|j|\}}t ||k(sJt ||k(rJJyr)range n_clusters get_shaper!len)r8r mni_indj_inds r_test_shape_indicesrE6sb 5## $q!1((+ u5zQ5zQ rcddgddgddgdgdgd}td d d | \}}}||jz}tj|d kd|}|||fD]}t |D]}t dd |d|}|j ||jjdk(sJt|jjdtjdt|jjdtjdt|j||fd k(sJt|y)N randomizedarpackr'FT k-means++ ) svd_method n_svd_vecs mini_batchinitn_initrQr+g?noise random_stater)r>rT)r+rQaxisrQr)r minrrrrfitrows_shapersumonescolumns_r biclusters_rE) global_random_seedr% param_gridSrowscolsmatkwargsr8s rtest_spectral_coclusteringrg?sI$X.Rjdm $ J$!3-?MAtTLA Q1A=#$ '#J/ 'F(+=AGE IIcN;;$$/ // u{{A6 D u~~11q192772; G"5#4#4tTlCqH HH  & ' 'rc tddd|\}}}ddgdgdgd gd }|||fD]}|jD]\}}|D]t} tddd | } | jdit || fgt |rV| j jd dk(r4tjt5| j|ddd| j|| jjdk(sJ| jjdk(sJt| jj!dt#j$ddt| jj!dt#j$ddt'| j(||fdk(sJt+| wy#1swYxYw)NrPr+g?rRscalelogrHr'T)methodrKrLrMrI)r>rOrNrTrk) rQrrVrQrUr)r itemsr set_paramsdictr get_paramsgetpytestraises ValueErrorrYrZr[r^rr\rrepeatr r_rE) r`r%rbrcrdnon_default_paramsre param_name param_values param_valuer8s rtest_spectral_biclusteringrz]s&!3-?MAtT E"jdf =#$+(:(@(@(B + $J + + , $!3  !  E4*k)B(C#DEC=U%5%5%7%;%;H%E%Nz2' #'IIcN{{((G333~~++w666"5;;???#:BIIa>#5#51#5#=ryyB?OP&u'8'84,G1LLL#E*/ + ++''s >G G c|jd}|jd}t|rFtj|j }tj|j }t |tj |jddt |tj |jddy)z)rrarray_fit_best_piecewiser)r`r8vectorsbests rtest_fit_best_piecewisersL .@ AEhh*,>@RSTG  $ $WQ1 $ EDtWRa[)rct|}tjgdgdgdgdg}tjddgddgddgg}|||fD].}|j||d}t t |gdd 0y) Nr)rUrUrU)r+r,r+rUrr*)r>)rrrUrUg?)rrr_project_and_clusterrr)r`r%r8r7rrelabelss rtest_project_and_clusterrs .@ AE 88Y 9i@ ADhhAAA/0GmD)*H++CQ+GOFLA3GHrctdd|}tddd|\}}}|j|t|j||fdk(sJtddd|\}}}|j|t|j||fdk(sJtd dd|\}}}|j|t|j||fdk(sJy) Nr+rH)rKrTrPrrRrU)(rQ)rQr)rr rYr r_)r`r8rbrcrds rtest_perfect_checkerboardrs  h-? E&!1+=MAtT IIaL 5,,tTl ;q @@ @%!1+=MAtT IIaL 5,,tTl ;q @@ @%!1+=MAtT IIaL 5,,tTl ;q @@ @rzparams, type_err, err_msgr>r,z#n_clusters should be <= n_samples=5)r+r+r+zIncorrect parameter n_clusters)r+r,r+r)) n_componentsrz"n_best=4 must be <= n_components=3ctjdjd}tdi|}t j ||5|j |dddy#1swYyxYw)z5Check parameters validation in `SpectralBiClustering`)r(r()matchNr)rr1r2rrrrsrY)paramstype_errerr_msgr7r8s r.test_spectralbiclustering_parameter_validationrsW6 99R=  (D *6 *E xw / $s A""A+estctddd\}}}t|drJ|j||jdk(sJy)N)r+r+r+rrn_features_in_)r hasattrrYr)rr9rs rtest_n_features_in_rsFfaa8GAq!s,-- -GGAJ    "" "r)0__doc__numpyrrr scipy.sparser sklearn.baserrsklearn.clusterrrsklearn.cluster._biclusterrr r sklearn.datasetsr r sklearn.metricsr rsklearn.model_selectionrsklearn.utils._testingrrrsklearn.utils.fixesrrmark parametrizer;rErgrzrrrrrrrrrtrrrrrrs/ !6F @<1 /  ~}  .9 : .9':':.9&+:&+RPY .9$:$.9$:$"*.9H:HA21   1 9 %  , 6 "  , ! ,  0 !232!5!79M9O PQ#R#r