
    -i[                     |   S SK r S SKrS SKrS SKJrJrJr  S SKJ	r	J
r
JrJr  S SKJrJrJrJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S rS r S r!S r"S r#S r$S r%\RL                  RO                  S\
\\45      S 5       r(\RL                  RO                  S\\\	45      S 5       r)\RL                  RO                  S\\\	\
45      S 5       r*S r+\RL                  RO                  S\	\\\
45      \RL                  RO                  S\+" 5       5      S 5       5       r,\RL                  RO                  S\
\\\	45      S 5       r-S r.\RL                  RO                  SSS/5      S 5       r/S  r0S! r1S" r2S# r3\RL                  RO                  S$\\\	/5      S% 5       r4\RL                  RO                  S&S'S(/5      \RL                  RO                  S$\\\	/5      S) 5       5       r5\RL                  RO                  S*\	\
\\/5      S+ 5       r6\RL                  RO                  S*\	\
\\/5      S, 5       r7S- r8S. r9g)/    N)assert_allcloseassert_array_almost_equalassert_array_equal)CCAPLSSVDPLSCanonicalPLSRegression)_center_scale_xy(_get_first_singular_vectors_power_method_get_first_singular_vectors_svd_svd_flip_1d)load_linnerudmake_regression)VotingRegressor)ConvergenceWarning)LinearRegression)check_random_state)svd_flipc                     [         R                  " U R                  U 5      n[        U[         R                  " [         R                  " U5      5      5        g )N)npdotTr   diag)MKs     ]/var/www/html/venv/lib/python3.13/site-packages/sklearn/cross_decomposition/tests/test_pls.pyassert_matrix_orthogonalr      s0    
qssAAa!45    c                     [        5       n U R                  nU R                  n[        UR                  S   S9nUR                  X5        [        UR                  5        [        UR                  5        [        UR                  5        [        UR                  5        UR                  nUR                  nUR                  nUR                  n[        UR                  5       UR                  5       SS9u  ppp[        U[         R"                  " XER$                  5      5        [        U	[         R"                  " XgR$                  5      5        UR'                  U5      n[        XR                  5        UR'                  X5      u  p[        XR                  5        [        XR                  5        UR)                  U5      n[        UU5        UR)                  X5      u  nn[        UU5        g )N   n_componentsTscale)r   datatargetr   shapefitr   
x_weights_
y_weights_	_x_scores	_y_scoresx_loadings_y_loadings_r
   copyr   r   r   r   	transforminverse_transform)dXyplsr   PUQXcycx_meany_meanx_stdy_stdXtytX_back_y_backs                      r   test_pls_canonical_basicsrD      s^   A	A	A
AGGAJ
/CGGAMS^^,S^^,S]]+S]]+ 	AAAA+;	!&&($,(BFE b"&&CC.1b"&&CC.1 
q	Bb--0]]1 FBb--0b--0 ""2&Ffa(%%b-IAvfa(r   c                     [        5       n U R                  nU R                  n[        UR                  S   S9nUR                  X5      u  pE[        XCR                  5        [        R                  " / SQ/ SQ/ SQ/5      n[        R                  " / SQ/ SQ/ SQ/5      n[        R                  " / S	Q/ S
Q/ SQ/5      n[        R                  " / S	Q/ S
Q/ SQ/5      n	[        [        R                  " UR                  5      [        R                  " U5      5        [        [        R                  " UR                  5      [        R                  " U5      5        [        [        R                  " UR                  5      [        R                  " U	5      5        [        [        R                  " UR                  5      [        R                  " U5      5        [        R                   " UR                  U-  5      n
[        R                   " UR                  U-  5      n[        R                   " UR                  U-  5      n[        R                   " UR                  U	-  5      n[        X5        [        X5        g )Nr    r!   ),6gbx+rNF?);0g&Կf_)@mпg<-bL?ȣȿ)gHgtϿrG   )gE` gt[Wm¿rI   )ggLM3?rK   )g?g+E!?g4Ӝ@?)gsYO)?g`{?gA'?)g;Ծgпgſ)r   r%   r&   r	   r'   fit_transformr   	x_scores_r   arrayr   absr-   r)   r.   r*   sign)r2   r3   r4   r5   X_transrB   expected_x_weightsexpected_x_loadingsexpected_y_weightsexpected_y_loadingsx_loadings_sign_flipx_weights_sign_flipy_weights_sign_flipy_loadings_sign_flips                 r    test_sanity_check_pls_regressionrZ   C   s    	A	A	A
QWWQZ
0C""1(JG
 G]]+232	
 ((232	
 113	
 ((113	
 bffS__5rvv>Q7RSbffS^^4bff=O6PQbffS__5rvv>Q7RSbffS^^4bff=O6PQ 773??5H#HI''#..3E"EF''#..3E"EF773??5H#HI2H2Hr   c                  `   [        5       n U R                  nU R                  nSUS S 2S4'   [        UR                  S   S9nUR                  X5        [        R                  " / SQ/ SQ/ SQ/5      n[        R                  " / SQ/ SQ/ S	Q/5      n[        R                  " / S
Q/ SQ/ SQ/5      n[        [        R                  " U5      [        R                  " UR                  5      5        [        [        R                  " U5      [        R                  " UR                  5      5        [        [        R                  " UR                  5      [        R                  " U5      5        [        [        R                  " UR                  5      [        R                  " U5      5        [        R                  " XSR                  -  5      n[        R                  " XCR                  -  5      n[        R                  " USS  UR                  SS  -  5      n	[        Xx5        [        USS  U	5        g )Nr    r   r!   )g͝Og(}?:F?)gqgqdvgѿ|N<)g1, ˿g7Ƚ?\ƿ)gCgBg<&.̿r\   )gBg5_/Er]   )gQggr9?r^   )        r_   r_   )g ?gXZ?ghC%d?)gVSg{sɂϿg$(E,ǿ)r   r%   r&   r	   r'   r(   r   rN   r   rO   r)   r-   r.   r*   rP   r   )
r2   r3   r4   r5   rR   rS   rU   rV   rW   rY   s
             r   2test_sanity_check_pls_regression_constant_column_yr`      s    	A	A	AAadG
QWWQZ
0CGGAM021	
 ((010	
 ((--0	
 bff%78"&&:PQbff%89266#//;RSbffS__5rvv>Q7RSbffS^^4bff=P6QR77#6#HI''"4~~"EF77#6qr#:S__QR=P#PQ+A+AB/1EFr   c                  j   [        5       n U R                  nU R                  n[        UR                  S   S9nUR                  X5        [        R                  " / SQ/ SQ/ SQ/5      n[        R                  " / SQ/ SQ/ SQ/5      n[        R                  " / S	Q/ S
Q/ SQ/5      n[        R                  " / SQ/ SQ/ SQ/5      n[        [        R                  " UR                  5      [        R                  " U5      5        [        [        R                  " UR                  5      [        R                  " U5      5        [        [        R                  " UR                  5      [        R                  " U5      5        [        [        R                  " UR                  5      [        R                  " U5      5        [        R                  " UR                  U-  5      n[        R                  " UR                  U-  5      n	[        R                  " UR                  U-  5      n
[        R                  " UR                  U-  5      n[        X5        [        X5        [        UR                  5        [        UR                  5        [        UR                   5        [        UR"                  5        g )Nr    r!   )rF   g{cd?gr	)rH   g?g>c?)rJ   gP,"Pgͺ@)rF   gCj?g#i)rH   g2Щ?gr?)rJ   go _g<:ο)c?gD}Ȇ??g5?)UҮ?gOgөeJo?).a#οgbM4gYV?)rb   gͱ?g[K?)rc   g=mBgo1S?)rd   gP.%lgq!?)r   r%   r&   r   r'   r(   r   rN   r   rO   x_rotations_r)   y_rotations_r*   rP   r   r+   r,   )r2   r3   r4   r5   rR   expected_x_rotationsrT   expected_y_rotationsx_rotations_sign_fliprW   y_rotations_sign_fliprX   s               r   test_sanity_check_pls_canonicalrk      s    	A	A	A
AGGAJ
/CGGAM213	
 88213	
 /22	
 88022	
 bffS%5%56?S8TUbffS^^4bff=O6PQbffS%5%56?S8TUbffS^^4bff=O6PQGGC$4$47K$KL''#..3E"EFGGC$4$47K$KL''#..3E"EF3I3IS^^,S^^,S]]+S]]+r   c                     Sn SnSn[        S5      nUR                  U S9nUR                  U S9n[        R                  " XDXU/5      R                  nXcR                  SU -  S9R                  U S45      -   nXcR                  SU -  S9R                  U S45      -   n[        R                  " XsR                  X-  S9R                  X5      4SS9n[        R                  " XR                  X -  S9R                  X5      4SS9n[        S	S
9n	U	R                  Xx5        [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n
[        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S Q/ S!Q/ S"Q/ S#Q/ S$Q/ S%Q/ S&Q/5      n[        R                  " / S'Q/ S(Q/ S)Q/ S*Q/ S+Q/ S,Q/ S-Q/ S.Q/ S/Q/	5      n[        R                  " / S0Q/ S1Q/ S2Q/ S3Q/ S4Q/ S5Q/ S6Q/ S7Q/ S8Q/	5      n[        [        R                  " U	R                  5      [        R                  " U5      5        [        [        R                  " U	R                  5      [        R                  " U
5      5        [        [        R                  " U	R                  5      [        R                  " U5      5        [        [        R                  " U	R                  5      [        R                  " U5      5        [        R                  " U	R                  U-  5      n[        R                  " U	R                  U
-  5      n[        R                  " U	R                  U-  5      n[        R                  " U	R                  U-  5      n[        X5        [        UU5        [!        U	R                  5        [!        U	R                  5        [!        U	R"                  5        [!        U	R$                  5        g )9N  
         size   r    axis   r!   )gqAS?ģƒ?g	K?)g܈m?gr[q?g֎ ÿ)gոqjP?gͱgS?)g$$?g('G_g.k^)g~gsg
?)gjh?gfrg>uRz?)g$¯&?g		lgpO/?)g}W[g~glìǿ)gWX>egj8H@Zg˔Br?)g).egw4DgoP^?)gvzgqg1GZg}r5.?)gzϳJg1?g?)gMI?g,)Ɣg [u)gei?g⊬[gQ>Oƿ)gmƫ?gE^?g0?)gB+
?g,?gi)gi*?g_(gb#k4?)g*Vh{O?g׍o}sg+Kl)gݩFgJ,c")g#'v?)g,a?g9qbgSLRW?)g]@[?gO~gkE?)ggpBgR ?g;ȿ)g-ݿp?g;O<gxgGtK?)g$U\ngE	g?)g@~_V?g,8(g.^?)g)^D_jg2i?gs6Cm?)g.f2?ggRu)g9Me?gX㰿g <ۿ)gONz '?gsVF?gul-a7?)g0?g]4?goБο)g:8%?g!Hgl?)g5z?gy0/gofy&,)g
C?g͢A}?g_%_?)g޵?gHֆ/gL:ܿ)gcIȂg$E!?gfD¹?)gϫg35ϧ?g`"ĕs?)g$t?gWe?gY)ݟ?)g#bJ$?gtdn?gx/RѸ?)g
Jn?g׷?gʏSϽ)g= ?gNfg7jN?)g]w?g(.g^i׌%)g}P
?gO3IogD'?)ghE-(g?g0֢p?gn)gzgIT4g7Ʃ1|?)gO)֠gkp2F$?gA-c?)g&?gkh?g!L?)r   normalr   rN   r   reshapeconcatenater   r(   r   rO   r-   r)   r.   r*   rP   r   r+   r,   )np_noiseq_noiserngl1l2latentsr3   r4   r5   rR   rS   rT   rU   rV   rW   rX   rY   s                     r   &test_sanity_check_pls_canonical_randomr      s    	AGG
R
 C		B		Bhh'(**G**!a%*(00!Q88A**!a%*(00!Q88A
::7;:7??KLSTUA
::7;:7??KLSTUA
A
&CGGAM00122/10212/22	
& ((/1112111121021	
& 011101110
	
 ((.0110/210
	
 bffS__5rvv>Q7RSbffS^^4bff=O6PQbffS__5rvv>Q7RSbffS^^4bff=O6PQ773??5H#HI''#..3E"EF''#..3E"EF773??5H#HI2H24GHS^^,S^^,S]]+S]]+r   c                      [        5       n U R                  nU R                  n[        UR                  S   SS9n[
        R                  " [        5         UR                  X5        S S S 5        g ! , (       d  f       g = f)Nr       r"   max_iter)	r   r%   r&   r   r'   pytestwarnsr   r(   )r2   r3   r4   
pls_nipalss       r   test_convergence_failr   Z  sT    A	A	A1771:BJ	(	)q 
*	)	)s   A//
A=Estc                    ^ [        5       nUR                  nUR                  nSmU " TS9nUR                  X#5        [	        U4S jUR
                  UR                  4 5       5      (       d   eg )Nr   r!   c              3   F   >#    U  H  oR                   S    T:H  v   M     g7f)r    N)r'   ).0attrr"   s     r   	<genexpr>(test_attibutes_shapes.<locals>.<genexpr>m  s       2R$

1%2Rs   !)r   r%   r&   r(   allr)   r*   )r   r2   r3   r4   r5   r"   s        @r   test_attibutes_shapesr   d  si     	A	A	AL
<
(CGGAM 36>>3>>2R    r   c                 .   [        5       nUR                  nUR                  nU " SS9nUR                  X#S S 2S4   5      R                  nUR                  X#S S 2S S24   5      R                  nUR
                  UR
                  :X  d   e[        XV5        g )Nr    r!   r   )r   r%   r&   r(   coef_r'   r   )r   r2   r3   r4   estone_d_coefftwo_d_coeffs          r   test_univariate_equivalencer   r  s     	A	A	A
1
C''!q!tW%++K''!q"1"uX&,,K 1 1111k7r   c           	         [        5       nUR                  nUR                  nUR                  5       nU " SS9R	                  X#5      n[        X$5        [        R                  " [        5         U " SS9R	                  X#5        [        X$5        S S S 5        U [        L a  g UR                  5       n[        R                  " [        5         UR                  X#SS9  [        X$5        S S S 5        UR                  5       n[        R                  " [        5         UR                  USS9  [        X$5        S S S 5        [        UR                  X#SS9UR                  UR                  5       UR                  5       SS95        [        UR                  USS9UR                  UR                  5       SS95        g ! , (       d  f       GN1= f! , (       d  f       N= f! , (       d  f       N= f)NTr/   F)r   r%   r&   r/   r(   r   r   raisesAssertionErrorr   r   r0   predict)r   r2   r3   r4   X_origr5   s         r   	test_copyr     sj    	A	A	AVVXF 4.

Q
"Cq! 
~	&A!!!, 
' f}VVXF	~	&a'!!, 
' VVXF	~	&AE"!!, 
'
 a&affhu(U AD!3;;qvvxe;#D+ 
'	& 
'	&
 
'	&s$   -!F8
G
G8
G

G
G)c               #   x  #    [         R                  R                  S5      n SnSnSnU R                  X#5      nU R                  X5      n[         R                  " XT5      SU R                  X5      -  -   S-   nUS-  nXe4v   [        SS9u  peS	US
S
2S4'   Xe4v   [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " SS/SS/SS/SS//5      nXe4v   SS/nU HK  n[         R                  R                  U5      n U R                  SS5      nU R                  SS5      nXe4v   MM     g
7f)z-Generate dataset for test_scale_and_stabilityr   i  ro   rn   r   r    T
return_X_y      ?N)r_   r_   r   )r   r_   r_   )       @r   r   )g      @g      @g      @g?gɿg?g?g@g@g'@g(@i  i  rs   rv   )r   randomRandomStaterandnr   r   rN   )	r}   	n_samples	n_targets
n_featuresr8   r4   r3   seedsseeds	            r   +_generate_test_scale_and_stability_datasetsr     s0     ))


"CIIJ		)(A		)'A
qq399Y;;;a?AIA
$J D)DAAaeH
$J
/?O_UVA
3+SzC:d|DEA
$J #JEii##D)IIaOIIaOd
	 s   D8D:zX, yc                     [        X5      tp4nU " SS9R                  X5      u  pgU " SS9R                  X45      u  p[        XSS9  [        XSS9  g)zscale=True is equivalent to scale=False on centered/scaled data
This allows to check numerical stability over platforms as wellTr#   Fg-C6?atolN)r
   rL   r   )
r   r3   r4   X_sy_srB   X_scorey_score	X_s_score	y_s_scores
             r   test_scale_and_stabilityr     sU     $A)LCq44Q:GU+99#CIIT2IT2r   	Estimatorc                 "   [         R                  R                  S5      nUR                  SS5      nUR                  SS5      nU " SS9nSn[        R
                  " [        US9   UR                  X#5        SSS5        g! , (       d  f       g= f)	zICheck the validation of `n_components` upper bounds for `PLS` regressors.r   rn   ro   rv   r!   zH`n_components` upper bound is .*. Got 10 instead. Reduce `n_components`.matchN)r   r   r   r   r   r   
ValueErrorr(   )r   r}   r3   r4   r   err_msgs         r   test_n_components_upper_boundsr     sl     ))


"C		"aA		"aA

$CXG	z	1 
2	1	1s   %B  
Bc                  (   [         R                  R                  S5      n U R                  SS5      nU R                  SS5      n[	        SS9nSn[
        R                  " [        US9   UR                  X5        S	S	S	5        g	! , (       d  f       g	= f)
zFCheck the validation of `n_components` upper bounds for PLSRegression.r      @   rv      r!   zH`n_components` upper bound is 20. Got 30 instead. Reduce `n_components`.r   N)	r   r   r   r   r	   r   r   r   r(   )r}   r3   r4   r   r   s        r   %test_n_components_upper_PLSRegressionr     sj    
))


"C		"bA		"aA
R
(CXG	z	1 
2	1	1s   (B
Bzn_samples, n_features)d   rn   )r      c                     [        XSUS9u  p4[        X4SS9u  pVn[        X45      u  p[        XV5        [        X5        Sn
[	        XXUR                  5       U
-  S9  [	        XiU	R                  5       U
-  S9  g )Nro   r   random_stateT)norm_y_weightsMbP?r   )r   r   r   r   r   max)r   r   global_random_seedr3   r4   u1v1rB   u2v2rtols              r   test_singular_value_helpersr     ss     9KDA 9dSIBA,Q2FBDBD1BD1r   c                 z   [        SSSU S9u  p[        SS9R                  X5      R                  U5      n[	        SS9R                  X5      R                  U5      n[        SS9R                  X5      R                  U5      nSn[        X4UR                  5       U-  S9  [        X5UR                  5       U-  S9  g )	Nr   rn   ro   r   r    r!   r   r   )r   r   r(   r0   r	   r   r   r   )r   r3   r4   svdreg	canonicalr   s          r   test_one_component_equivalencer      s     3a>PQDA
a
 
$
$Q
*
4
4Q
7C
Q
'
+
+A
1
;
;A
>C!,006@@CIDC3779t#34C4)?@r   c                  r   [         R                  " / SQ5      n [         R                  " / SQ5      n[        U R                  SS5      UR                  SS5      5      u  p#[	        X5        [        XR                  5       5        [        U / SQ5        [        XR                  5       5        [        U/ SQ5        g )N)r    r   )r    r   rv   r   r    )r   rs   )r   r   )r   rN   r   rx   r   r   ravel)uv
u_expected
v_expecteds       r   test_svd_flip_1dr     s    
A
A%aiiA&6		!R8HIJA'')*A{#A'')*A|$r   c                 f   [        SSSU S9u  p[        SSS9n[        R                  " 5          [        R                  " S[
        5        UR                  X5        SSS5        [        R                  " [        R                  " UR                  5      S	:  5      (       d   eg! , (       d  f       NM= f)
z8Test that CCA converges. Non-regression test for #19549.r   r   )r   r   r   r   rn   rm   r   errorNr    )r   r   warningscatch_warningssimplefilterr   r(   r   r   rO   r-   )r   r3   r4   ccas       r   test_loadings_convergesr     s    "ASDA 2
,C		 	 	"g'9: 
# 66"&&)A-.... 
#	"s   -B""
B0c                  ^   [         R                  R                  S5      n U R                  SS5      n[         R                  " S5      n[        5       nSn[        R                  " [        US9   UR                  X5        SSS5        [        UR                  S5        g! , (       d  f       N%= f)zAChecks warning when y is constant. Non-regression test for #19831*   r   rv   z#y residual is constant at iterationr   Nr   )r   r   r   randzerosr	   r   r   UserWarningr(   r   re   )r}   xr4   r5   msgs        r   test_pls_constant_yr   .  sx    
))


#CaA
A
/C
/C	k	- 
. C$$a( 
.	-s   -B
B,PLSEstimatorc                     [        5       nUR                  nUR                  nU " SS9R                  X#5      nUR                  S   UR                  S   peUR
                  R                  XV4:X  d   eg)zzCheck the shape of `coef_` attribute.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/12410
Tr   r    N)r   r%   r&   r(   r'   r   )r   r2   r3   r4   r5   r   r   s          r   test_pls_coef_shaper   =  sb     	A	A	A
D
!
%
%a
+CGGAJ
z99??y5555r   r$   TFc                 ^   [        5       nUR                  nUR                  nU " SUS9R                  X45      nUR	                  USS9nUR                  SS9nX3R                  SS9-
  n[        UR                  U5        [        XhUR                  R                  -  UR                  -   5        g)z/Check the behaviour of the prediction function.T)r/   r$   r   r   rt   N)
r   r%   r&   r(   r   meanr   
intercept_r   r   )	r   r$   r2   r3   r4   r5   y_predr<   rQ   s	            r   test_pls_predictionr   N  s     	A	A	A
D
.
2
21
8C[[[&FVVV^F&&a&. GCNNF+Fciikk1CNNBCr   Klassc                 T   [        SS9u  pU " 5       R                  X5      nUR                  5       nU R                  R	                  5       n[
        R                  " [        UR                  R                  S   5       Vs/ s H  oe U 3PM
     sn[        S9n[        XG5        gs  snf )z9Check `get_feature_names_out` cross_decomposition module.Tr   r    )dtypeN)r   r(   get_feature_names_out__name__lowerr   rN   ranger)   r'   objectr   )r   r3   r4   r   	names_outclass_name_loweriexpected_names_outs           r   test_pls_feature_names_outr  `  s     D)DA
'++a
C))+I~~++-+01E1Ea1H+IJ+IaaS	!+IJ y5 	Ks    B%c                 v   [         R                  " S5      n[        SSS9u  p#U " 5       R                  SS9R	                  X#5      nUR                  X#5      u  pV[        U[        R                  5      (       d   e[        XQR                  5      (       d   e[        UR                  UR                  5       5        g)z1Check `set_output` in cross_decomposition module.pandasT)r   as_frame)r0   N)r   importorskipr   
set_outputr(   r0   
isinstancer   ndarray	DataFramer   columnsr   )r   pdr3   r4   r   rQ   y_transs          r   test_pls_set_outputr  p  s     
		X	&BD48DA
'

x

0
4
4Q
:C}}Q*Ggrzz****g||,,,,w(A(A(CDr   c            	         [         R                  " SS/SS/SS/SS/SS/S	S
//5      n [         R                  " / SQ5      nUR                  5       n[        5       R	                  X5      nUR                  U 5      nUR                  UR                  :X  d   e[        5       R	                  X5      n[        SU4SU4/5      nUR	                  X5      R                  U 5      nUR                  UR                  :X  d   e[        XB5        g)zjCheck that when fitting with 1d `y`, prediction should also be 1d.

Non-regression test for Issue #26549.
r    r   rs   rv   	      ro         $   )r   r     r   r   r   lrplsrN)
r   rN   r/   r	   r(   r   r'   r   r   r   )r3   r4   expectedr  r   r  vrs          r   test_pls_regression_fit_1d_yr  }  s    
 	1a&1a&1a&1b'Ar7QGDEA
'(AvvxH?q$D\\!_F<<8>>))) 
				%B	4*vtn5	6BVVA\!!!$F<<8>>)))F%r   c                  0   [         R                  R                  S5      n U R                  SS9nU R	                  SSS9nX!R
                  -  n[        SSS	9R                  X#5      n[        UR                  U5        [        UR                  U5      U5        g
)zCheck that when using `scale=True`, the coefficients are using the std. dev. from
both `X` and `y`.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/27964
r   )rv   ro   rq   rn   )r   ro   )r$   rr   ro   T)r"   r$   N)r   r   r   uniformrw   r   r	   r(   r   r   r   )r}   coefr3   r4   r5   s        r    test_pls_regression_scaling_coefr"    s     ))


"C;;F;#D

'
*A	FF
A Qd
3
7
7
=CCIIt$ CKKNA&r   ):r   numpyr   r   numpy.testingr   r   r   sklearn.cross_decompositionr   r   r   r	    sklearn.cross_decomposition._plsr
   r   r   r   sklearn.datasetsr   r   sklearn.ensembler   sklearn.exceptionsr   sklearn.linear_modelr   sklearn.utilsr   sklearn.utils.extmathr   r   rD   rZ   r`   rk   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r"   r   r   <module>r0     s      X X P P  < , 1 1 , *6
%)P<I~/Gd;,|e,P  EF
 G
 c BC8 D8 c6 JK# L#L@ lM6 JK!L!NO
3 P L
3 v}lC&PQ R 09j2IJ2 K2"A%/") -s)KL6 M6  4-0-s)KLD M 1D  3|"LM6 N6 3|"LM	E N	E&*'r   