
    /Цi F             
          S SK r S SKJr  S SKrS SKrS SKJr  S SKJ	r	J
r
  S SKJr  S SKJrJrJrJr  S SKJr  S SKJrJrJrJrJrJr  S S	KJrJrJrJrJ r J!r!J"r"  S S
K#J$r$J%r%J&r&  S SK'J(r(J)r)J*r*J+r+J,r,  S SK-J.r.  S SK/J0r0  S SK1J2r2J3r3J4r4J5r5J6r6J7r7J8r8  S SK9J:r:  S SK;J<r<J=r=J>r>J?r?J@r@  S SKAJBrBJCrC  S SKDJErEJFrFJGrGJHrHJIrIJJrJ  / SQrKSrLSrM\
R                  " 5       rO\OR                  \OR                  srRrS\R                  " \RR                  S    5      rV\R                  R                  S 5      rY\YR                  \V5        \VSS rV\R\V   \S\V   srRrS\
R                  " 5       r\\\R                  \\R                  sr]r^S r_S r`\R                  " SS/S9S 5       rb\R                  R                  S\K5      \R                  R                  SSS /5      S! 5       5       re\R                  R                  S\K5      \R                  R                  SSS /5      S" 5       5       rf\R                  R                  S\K5      \R                  R                  SSS /5      S# 5       5       rg\R                  R                  S\K5      \R                  R                  SSS /5      S$ 5       5       rh\R                  R                  S\K5      \R                  R                  SSS /5      S% 5       5       ri\R                  R                  S\K5      \R                  R                  SSS /5      S& 5       5       rj\R                  R                  S\K5      \R                  R                  SSS /5      \R                  R                  S'S/\H-   5      \R                  R                  S(S)S*/5      S+ 5       5       5       5       rkS, rlS- rmS. rnS/ roS0 rpS1 rq\R                  R                  S2/ S3Q5      \R                  R                  S4\H5      S5 5       5       rr\R                  R                  S6/ S7Q5      \R                  R                  S8SS /5      \R                  R                  S4\H5      S9 5       5       5       rs\R                  R                  S6/ S7Q5      \R                  R                  S8SS /5      \R                  R                  S4\H5      S: 5       5       5       rt            SS< jru\R                  R                  S=S> \" / S?QS/\H-   5       5       5      \R                  R                  S@/ SAQ5      SB 5       5       rv\R                  R                  SCSDSE/5      \R                  R                  SF\R                  /\H-   5      \R                  R                  SGSHSI/5      \R                  R                  SSS /5      \R                  R                  SJ/ SKQ5      SL 5       5       5       5       5       rxSM ry\R                  R                  SCSDSE/5      \R                  R                  SF\R                  /\H-   5      \R                  R                  SNSOSP/5      \R                  R                  SQ/ SRQ5      SS 5       5       5       5       rz\R                  R                  S'S/\H-   5      \R                  R                  ST/ SUQ5      SV 5       5       r{SW r|SX r}\R                  R                  SY\" S SZ9\4\" S SZ9\4/5      S[ 5       r~\R                  R                  SY\" 5       \4\" 5       \4/5      \R                  R                  S\SS]/5      S^ 5       5       rS_ rS` rSa rSb r\R                  R                  ScSSd\_/5      \R                  R                  S\S\*" Se5      /5      \R                  R                  S'S/\H-   5      Sf 5       5       5       r\R                  R                  S\S\*" Se5      /5      \R                  R                  S'S/\H-   5      Sg 5       5       rSh r SSi jr\R                  R                  Sj\7" 5       \5Sk9\R                  R                  Sl\C\/\:Sk9\R                  R                  Sm\" SDSn9\" SDSn9\" 5       \" 5       /\:Sk9So 5       5       5       r\R                  R                  Sm\" SDSn9\" 5       /5      \R                  R                  Sp\7" 5       \5Sk9Sq 5       5       r\R                  R                  Sr\8" S Ss95      St 5       r\R                  R                  Sr\" \25      5      Su 5       r\R                  R                  Sv\|\}\\\\45      \R                  R                  S4\H5      Sw 5       5       rSx r\R                  R                  Sy\\45      Sz 5       rS{ r\R                  R                  ScSS|\`/5      S} 5       r\R                  R                  ScSSd\_/5      S~ 5       r\R                  R                  S\\/5      S 5       r\R                  R                  S\SS]/5      \R                  R                  S\\/5      S 5       5       rS rS r\R                  R                  SSS]/S]S//5      \R                  R                  S'\F\G-   \H-   \I-   \J-   5      S 5       5       rS r\R                  R                  S\\/5      \R                  R                  SSS0\S4SS0\S4SS0\S4/5      S 5       5       r\R                  R                  S\\/5      S 5       rS r\R                  GR=                  S5      S 5       r\R                  R                  S/ SQ5      \R                  R                  SSS /5      \R                  R                  S4\H5      S 5       5       5       r\R                  R                  S/ SQ5      \R                  R                  S4\H5      S 5       5       r\R                  R                  SSS /5      \R                  R                  S4\H5      S 5       5       r\R                  R                  SS S/5      \R                  R                  SS\GRF                  " S5      /5      \R                  R                  S\GRH                  /\H-   5      \R                  R                  S/ SQ5      S 5       5       5       5       r\R                  R                  S/ SQ5      S 5       rS r\R                  R                  S/ SQ5      \R                  R                  S\" S;5      5      S 5       5       rS r\R                  R                  S\0 4\S\S04\S\S]04/5      S 5       r\R                  R                  SSS/5      \R                  R                  SSS /5      \R                  R                  S(/ SQ5      S 5       5       5       r\R                  R                  SSS /5      \R                  R                  S(/ SQ5      S 5       5       r\R                  R                  S/ SQ5      S 5       r\R                  R                  S(/ SQ5      S 5       r\R                  R                  S(/ SQ5      S 5       rS r\R                  R                  SS S/5      \R                  R                  S'S/\H-   5      \R                  R                  SSS/5      \R                  R                  S\KS/-   5      S 5       5       5       5       r\R                  R                  SS S/5      \R                  R                  SS S/5      \R                  R                  SS;S/5      S 5       5       5       rS rS r\R                  R                  S\\/5      \	" SS9S 5       5       r\R                  R                  S\" 5       \4\" 5       \4/5      \	" SS9S 5       5       rg)    N)product)linalg)config_contextdatasets)clone)make_classificationmake_low_rank_matrixmake_multilabel_classificationmake_regression)ConvergenceWarning)LinearRegressionRidgeRidgeClassifierRidgeClassifierCVRidgeCVridge_regression)_check_gcv_mode	_RidgeGCV_solve_cholesky_solve_cholesky_kernel_solve_lbfgs
_solve_svd_X_CenterStackOp)
get_scorermake_scorermean_squared_error)GridSearchCV
GroupKFoldKFoldLeaveOneOutcross_val_predict)minmax_scale)check_random_state)_NUMPY_NAMESPACE_NAMES_atol_for_type_convert_to_numpy_get_namespace_device_dtype_ids_max_precision_float_dtype)yield_namespace_device_dtype_combinationsyield_namespaces)_get_check_estimator_ids)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalignore_warnings)_array_api_for_tests check_array_api_input_and_values)	_IS_32BITCOO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)svd	sparse_cgcholeskylsqrsagsaga)r:   r=   )r:   r;   r<   r=   r>      c                 2    [         R                  " X:H  5      $ N)npmeany_testy_predkwargss      d/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_ridge.py_accuracy_callablerI   Z   s    776#$$    c                 ,    X-
  S-  R                  5       $ )N   )rC   )rE   rF   s     rH   _mean_squared_error_callablerM   ^   s    _"((**rJ   longwide)paramsc                    UR                   S:X  a  Su  p#OSu  p#[        X#5      n[        R                  R	                  U 5      n[        X#XES9nSUSS2S4'   [        R                  " U5      u  pxn	[        R                  " US:  5      (       d   eUSS2SU24   USS2US24   pU	SU2SS24   XS2SS24   pUR                   S:X  a/  UR                  S	S
US9nXn-  nXUR                  X#-
  S9S-  -  -  nOGUR                  S	S
US9nUR                  [        R                  " SU-  5      -  U
R                  -  U-  nSnU[        R                  " U5      -  nSUS'   [        R                  " UR                  U-  U-   UR                  U-  5      nXU-  -
  nXU-  -
  n[        R                  R                  U5      [        R                  R                  U5      :  d   eXoUU4$ )a  Dataset with OLS and Ridge solutions, well conditioned X.

The construction is based on the SVD decomposition of X = U S V'.

Parameters
----------
type : {"long", "wide"}
    If "long", then n_samples > n_features.
    If "wide", then n_features > n_samples.

For "wide", we return the minimum norm solution w = X' (XX')^-1 y:

    min ||w||_2 subject to X w = y

Returns
-------
X : ndarray
    Last column of 1, i.e. intercept.
y : ndarray
coef_ols : ndarray of shape
    Minimum norm OLS solutions, i.e. min ||X w - y||_2_2 (with minimum ||w||_2 in
    case of ambiguity)
    Last coefficient is intercept.
coef_ridge : ndarray of shape (5,)
    Ridge solution with alpha=1, i.e. min ||X w - y||_2_2 + ||w||_2^2.
    Last coefficient is intercept.
rN   )      )rS   rR   )	n_samples
n_featureseffective_rankrandom_state   NMbP?
   lowhighsizer`   rL   r   )rY   rY   )paramminrB   randomRandomStater	   r   r9   alluniformnormalTdiagidentitysolvenorm)global_random_seedrequestrT   rU   krngXUsVtU1U2Vt1_coef_olsyalphad
coef_ridgeR_OLSR_Ridges                        rH   ols_ridge_datasetr   b   s   > }} %	: %	I"A
))

 2
3C1	A AaeHzz!}HA"66!d(q"1"uXqABxAY2q5	}};;3Rj;AL	#**)"8*9Q>>>KKCbyK9552771q5>)BDD014 EJ''AAfIaccAgk13373J HEj. G99>>% 299>>'#:::::%%rJ   solverfit_interceptTFc                    Uu  pEpgSn[        USU U S;   a  SOSUS9n	U[        R                  " U5      -
  n
XTU-  -
  nS[        R                  " US-  5      [        R                  " U
S-  5      -  -
  n[	        S0 U	D6nUS	S	2S	S
24   nU(       a  US
   nO%XDR                  SS9-
  nXUR                  5       -
  nSnUR                  XE5        US	S
 nUR                  [        R                  " U5      :X  d   e[        UR                  U5        UR                  XE5      [        R                  " U5      :X  d   e[	        S0 U	D6R                  XE[        R                  " UR                  S   5      S9nUR                  [        R                  " U5      :X  d   e[        UR                  U5        UR                  XE5      [        R                  " U5      :X  d   eUR                  U :X  d   eg	)zTest that Ridge converges for all solvers to correct solution.

We work with a simple constructed data set with known solution.
      ?Tr=   r>   V瞯<绽|=r|   r   r   tolrW   rX   rL   NrY   r   axissample_weight )dictrB   rC   sumr   fit
intercept_pytestapproxr,   coef_scoreonesshapesolver_)r   r   r   rn   rr   r{   ry   coefr|   rP   res_null	res_RidgeR2_Ridgemodel	intercepts                  rH   test_ridge_regressionr      s    &MA!E.EE'F 2771:~HHI266)Q,'"&&1*===HOFOE	!SbS&	AH	AL		IIaO9Dv}}Y7777EKK&;;qh 7777 OFOBGGAGGAJ4GHEv}}Y7777EKK&;;qh 7777==F"""rJ   c                 2   Uu  pEpgUR                   u  pSn
[        U
S-  UU U S;   a  SOSUS9nUSS2SS24   nS	[        R                  " XD4S
S9-  n[        R                  R                  U5      [        XS
-
  5      ::  d   eU(       a  US   nO%XDR                  SS9-
  nXUR                  5       -
  nSnUR                  XE5        USS nUR                  [        R                  " U5      :X  d   e[        UR                  [        R                  Xw4   SS9  g)zTest that Ridge converges for all solvers to correct solution on hstacked data.

We work with a simple constructed data set with known solution.
Fit on [X] with alpha is the same as fit on [X, X]/2 with alpha/2.
For long X, [X, X] is a singular matrix.
r   rL   r   r   r   r   NrY         ?rX   r   r   :0yE>atol)r   r   rB   concatenater   matrix_rankrc   rC   r   r   r   r   r,   r   r_r   r   r   rn   rr   r{   ry   r   rT   rU   r|   r   r   s                rH    test_ridge_regression_hstacked_Xr      s    &MA!GGIEai#.EE'E 	
!SbS&	AbnnaV!,,A99  #s91n'EEEEH	AL		IIaO9Dv}}Y7777 EKKtz!2>rJ   c                 *   Uu  pEpgUR                   u  pSn
[        SU
-  UU U S;   a  SOSUS9nUSS2SS24   n[        R                  " XD4S	S
9n[        R                  R                  U5      [        X5      ::  d   e[        R                  XU4   nU(       a  US   nO%XDR                  S	S
9-
  nXUR                  5       -
  nS	nUR                  XE5        USS nUR                  [        R                  " U5      :X  d   e[        UR                  USS9  g)a6  Test that Ridge converges for all solvers to correct solution on vstacked data.

We work with a simple constructed data set with known solution.
Fit on [X] with alpha is the same as fit on [X], [y]
                                            [X], [y] with 2 * alpha.
For wide X, [X', X'] is a singular matrix.
r   rL   r   r   r   r   NrY   r   r   r   r   )r   r   rB   r   r   r   rc   r   rC   r   r   r   r   r,   r   r   s                rH    test_ridge_regression_vstacked_Xr      s    &MA!GGIE%i#.EE'E 	
!SbS&	A
vA&A99  #s9'AAAA
adAH	AL		IIaO9Dv}}Y7777 EKKD1rJ   c                 N   Uu  pEpgUR                   u  pSn
[        U
UU U S;   a  SOSUS9n[        S
0 UD6nU(       a  USS2SS24   nUS   nUSS nOSnUR                  XE5        X:  d  U(       d=  UR                  [
        R                  " U5      :X  d   e[        UR                  U5        g[        UR                  U5      U5        [        XF-  U-   U5        [        R                  R                  [        R                  UR                  UR                  4   5      [        R                  R                  [        R                  X4   5      :  d   e[
        R                  " SS	9  UR                  [
        R                  " U5      :X  d   e[        UR                  U5        g)a
  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

We work with a simple constructed data set with known solution.
Note: This checks the minimum norm solution for wide X, i.e.
n_samples < n_features:
    min ||w||_2 subject to X w = y
r   r   r   r   r   NrY   1Ridge does not provide the minimum norm solution.reasonr   )r   r   r   r   r   r   r   r,   r   predictrB   r   rm   r   xfail)r   r   r   rn   rr   r{   r   ry   rT   rU   r|   rP   r   r   s                 rH   !test_ridge_regression_unpenalizedr   )  sq    &MA$GGIE#.EE'F OFOE a"fIH	CRy		IIaO
 ]6==#;;;;T* 	a(!,9,a0yy~~beeE$4$4ekk$ABCbiinnEE)/"G
 
 	
 
 	OP6==#;;;;T*rJ   c                 $   Uu  pEpgUR                   u  pSn
[        U
UU U S;   a  SOSUS9nU(       a  USS2SS24   nUS   nUSS nOSnS[        R                  " XD4S	S
9-  n[        R                  R                  U5      [        X5      ::  d   eUR                  XE5        X:  d  U(       dj  UR                  [        R                  " U5      :X  d   eU S:X  a  [        R                  " 5         [        UR                  [        R                  Xf4   5        g[        UR                  U5      U5        [        R                  R!                  [        R                  UR                  UR                  4   5      [        R                  R!                  [        R                  XU4   5      :  d   e[        R"                  " SS9  UR                  [        R                  " U5      :X  d   e[        UR                  [        R                  Xf4   5        g)aF  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

We work with a simple constructed data set with known solution.
OLS fit on [X] is the same as fit on [X, X]/2.
For long X, [X, X] is a singular matrix and we check against the minimum norm
solution:
    min ||w||_2 subject to min ||X w - y||_2
r   r   r   r   r   NrY   r   rX   r   r;   r   r   )r   r   rB   r   r   r   rc   r   r   r   r   skipr,   r   r   r   rm   r   r   r   r   rn   rr   r{   r   ry   rT   rU   r|   r   r   s                rH   ,test_ridge_regression_unpenalized_hstacked_Xr   `  s    &MA$GGIE#.EE'E a"fIH	CRy	bnnaV!,,A99  #s9'AAAA	IIaO]6==#;;;;ZKKMRUU4:%67
 	a(!,yy~~beeE$4$4ekk$ABCbiinnEE)4'(G
 
 	
 
 	OP6==#;;;;RUU4:%67rJ   c                    Uu  pEpgUR                   u  pSn
[        U
UU U S;   a  SOSUS9nU(       a  USS2SS24   nUS   nUSS nOSn[        R                  " XD4SS9n[        R                  R                  U5      [        X5      ::  d   e[        R                  XU4   nUR                  XE5        X:  d  U(       d=  UR                  [        R                  " U5      :X  d   e[        UR                  U5        g[        UR                  U5      U5        [        R                  R                  [        R                  UR                  UR                  4   5      [        R                  R                  [        R                  X4   5      :  d   e[        R                   " S	S
9  UR                  [        R                  " U5      :X  d   e[        UR                  U5        g)al  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

We work with a simple constructed data set with known solution.
OLS fit on [X] is the same as fit on [X], [y]
                                     [X], [y].
For wide X, [X', X'] is a singular matrix and we check against the minimum norm
solution:
    min ||w||_2 subject to X w = y
r   r   r   r   r   NrY   r   r   r   )r   r   rB   r   r   r   rc   r   r   r   r   r   r,   r   r   rm   r   r   s                rH   ,test_ridge_regression_unpenalized_vstacked_Xr     s    &MA$GGIE#.EE'E a"fIH	CRy	
vA&A99  #s9'AAAA
adA	IIaO]6==#;;;;T*
 	a(!,yy~~beeE$4$4ekk$ABCbiinnEE)/"G
 
 	
 
 	OP6==#;;;;T*rJ   sparse_containerr|   r   {Gz?c           	         UbM  U(       a   U [         ;  a  [        R                  " 5         O&U(       d  U [        ;  a  [        R                  " 5         Uu  pgpUR                  u  p[
        R                  SSU
S9n[        UUU U S;   a  SOSSUS	9nUSS2SS
24   n[        R                  " Xf4SS9n[        R                  Xw4   n[        R                  USU-
  4   U-  nU(       a  U	S
   nO%XfR                  SS9-
  nXwR                  5       -
  nSnUb  U" U5      nUR                  XgUS9  U	SS
 n	UR                  [        R                  " U5      :X  d   e[        UR                   U	5        g)zTest that Ridge with sample weights gives correct results.

We use the following trick:
    ||y - Xw||_2 = (z - Aw)' W (z - Aw)
for z=[y, y], A' = [X', X'] (vstacked), and W[:n/2] + W[n/2:] = 1, W=diag(W)
Nr   rX   r]   r   r   r   順 )r|   r   r   r   max_iterrW   rY   r   r   )SPARSE_SOLVERS_WITH_INTERCEPTr   r    SPARSE_SOLVERS_WITHOUT_INTERCEPTr   rq   rg   r   rB   r   r   rC   r   r   r   r,   r   )r   r   r   r|   r   rn   rr   r{   ry   r   rT   rU   swr   r   s                  rH   $test_ridge_regression_sample_weightsr     sU   $ #V+HHKKM61Q#QKKM%MA!GGI		3B#.EE'E 	
!SbS&	A
vA&A
adA	r1r6z	U	"BH	AL	#Q	IIa"I%9Dv}}Y7777EKK&rJ   c                  ,   [         R                  SS5      n [        [        U S/S9n[        R
                  " [        [        R                  5      n[        X S/S9n[        R
                  " [        R                  U5      R                  n[        X5        g )NrY   rX   r   r|   )	
y_diabetesreshaper   
X_diabetesrB   dotri   r   r.   )r{   r   K	dual_coefcoef2s        rH   test_primal_dual_relationshipr     sh    2q!A:q7D
z:<<(A&qD6:IFF:<<+--Ed*rJ   c                     [         R                  R                  S5      n U R                  S5      nU R                  SS5      nSn[        R
                  " [        US9   [        X!SSSS S	S
9  S S S 5        g ! , (       d  f       g = f)Nr      r\   z3sparse_cg did not converge after [0-9]+ iterations.matchr   r:           rX   )r|   r   r   r   verbose)rB   rd   re   randnr   warnsr   r   )rq   r{   rr   warning_messages       rH   &test_ridge_regression_convergence_failr     sj    
))


"C		!A		!RALO	(	@KS4QR	
 
A	@	@s   A66
Bc                     [         R                  R                  S5      n Su  pU R                  X5      nU R                  U5      nUS S 2[         R                  4   n[         R
                  USU-   4   n[        5       nUR                  X45        UR                  R                  U4:X  d   eUR                  R                  S:X  d   e[        UR                  [         R                  5      (       d   e[        UR                  [        5      (       d   eUR                  X55        UR                  R                  U4:X  d   eUR                  R                  S:X  d   e[        UR                  [         R                  5      (       d   e[        UR                  [         R                  5      (       d   eUR                  X65        UR                  R                  SU4:X  d   eUR                  R                  S:X  d   e[        UR                  [         R                  5      (       d   e[        UR                  [         R                  5      (       d   eg )Nr   r   r\   rX   r   rX   rL   )rL   )rB   rd   re   r   newaxisc_r   r   r   r   r   
isinstancendarrayfloat)rq   rT   rU   rr   r{   Y1Yridges           rH   test_ridge_shapes_typer     s   
))


"C!I		)(A		)A	
1bjj=	B
aQhAGE	IIaO;;---!!R'''ekk2::....e&&....	IIa;;---!!T)))ekk2::....e&&

3333	IIaO;;J///!!T)))ekk2::....e&&

3333rJ   c                     [         R                  R                  S5      n Su  pU R                  X5      nU R                  U5      n[         R                  USU-   4   n[        5       nUR                  X45        UR                  nUR                  X55        [        UR                  S   U5        [        UR                  S   US-   5        g )Nr   r   r   rX   )	rB   rd   re   r   r   r   r   r   r-   )rq   rT   rU   rr   r{   r   r   r   s           rH   test_ridge_interceptr   6  s    
))


"C!I		)(A		)A
aqjAGE	IIaO  I	IIaO((+Y7((+Y_=rJ   c                     [         R                  R                  S5      n Su  pU R                  U5      nU R                  X5      n[	        SSS9n[        SS9nUR                  XC5        UR                  XC5        [        UR                  UR                  5        UR                  XC5        UR                  XC5        [        UR                  UR                  5        g )Nr   )r   rS   r   Fr|   r   r   )	rB   rd   re   r   r   r   r   r-   r   )rq   rT   rU   r{   rr   r   olss          rH   test_ridge_vs_lstsqr   H  s     ))


"C I		)A		)(A51E

/C	IIaOGGAMSYY/	IIaOGGAMSYY/rJ   c                     [         R                  R                  S5      n Su  pnU R                  X5      nU R                  X5      n[         R                  " U5      n[         R
                  " [        XeR                  5       VVs/ s H(  u  px[        USS9R                  XH5      R                  PM*     snn5      n	S V
s/ s H&  n
[        XjSS9R                  XE5      R                  PM(     nn
U H  n[        X5        M     [        US S S	9nS
n[        R                  " [        US9   UR                  XE5        S S S 5        g s  snnf s  sn
f ! , (       d  f       g = f)N*   )   r\   r   r;   r|   r   )r9   r:   r<   r;   r=   r>   -q=)r|   r   r   rY   r   zCNumber of targets and number of penalties do not correspond: 4 != 5r   )rB   rd   re   r   arangearrayzipri   r   r   r   r.   r   raises
ValueError)rq   rT   rU   	n_targetsrr   r{   	penaltiesr|   targetcoef_choleskyr   coefs_indiv_pencoef_indiv_penr   err_msgs                  rH   test_ridge_individual_penaltiesr   ]  s4    ))


#C'0$I9		)(A		)'A		)$IHH "%Y!4	
!4 j155a@FF!4	
M NMF 	I%8<<QBHHM   *!-@ * 	#2'ESG	z	1		! 
2	1!	
 
2	1s   /E
 -E*E
En_col)r   r   )   csr_containerc                 R   [         R                  R                  S5      nUR                  SS5      nUR                  S5      nUR                  [	        U5      5      nUR                  " S/U Q76 nUR                  " S/U Q76 n[        U" U5      XE5      n[         R                  " X5S S 2S 4   U-  -
  US S 2S 4   /5      n	[        U	R                  U5      UR                  U5      5        [        U	R                  R                  U5      UR                  R                  U5      5        g )Nr         	   )
rB   rd   re   r   lenr   hstackr,   r   ri   )
r   r   rq   rr   X_msqrt_swr   Aoperatorreference_operators
             rH   test_X_CenterStackOpr  }  s     ))


"C		"aA
))A,CiiAG		"uA		!eAa 0#?HA4(83(>$>4@P#QR&**1-x||A?&((,,Q/1BCrJ   r   ))r\   rX   )   r  )r      )rL   rL   )r   r   uniform_weightsc                    [         R                  R                  S5      nUR                  " U 6 nU(       a$  [         R                  " UR
                  S   5      nOUR                  SU S   5      n[         R                  " U5      n[         R                  " USUS9nXG-
  US S 2S 4   -  nUR                  UR                  5      n	U" XFS S 2S 4   -  5      n
[        SS9nUR                  X5      u  p[        X}5        [        X5        g Nr   rX   )r   weightsTr   )rB   rd   re   r   r   r   	chisquaresqrtaverager   ri   r   _compute_gramr,   )r   r  r   rq   rr   r   r  X_mean
X_centered	true_gramX_sparsegcvcomputed_gramcomputed_means                 rH   test_compute_gramr    s     ))


"C		5AWWQWWQZ ]]1eAh'ggbkGZZ2.F*4 00Jz||,IQD!112H
$
'C#&#4#4X#G MF*I-rJ   c                    [         R                  R                  S5      nUR                  " U 6 nU(       a$  [         R                  " UR
                  S   5      nOUR                  SU S   5      n[         R                  " U5      n[         R                  " USUS9nXG-
  US S 2S 4   -  nUR                  R                  U5      n	U" XFS S 2S 4   -  5      n
[        SS9nUR                  X5      u  p[        X}5        [        X5        g r  )rB   rd   re   r   r   r   r  r  r  ri   r   r   _compute_covariancer,   )r   r  r   rq   rr   r   r  r  r  true_covariancer  r  computed_covr  s                 rH   test_compute_covariancer"    s     ))


"C		5AWWQWWQZ ]]1eAh'ggbkGZZ2.F*4 00J ll&&z2OQD!112H
$
'C"%"9"9("LLF*O2rJ   rX   c                    [        U UUUUUUSUS9	u  pnUS:X  a  [        R                  " U/5      nX-  n[        R                  R	                  U5      R                  SX,R                  5      S:  nUR                  5       nSX) '   SUU'   UUR                  U5      -  nU
(       aF  XR                  [        R                  " U5      S-   U-
  5      -  n[        R                  " U5      S-   nUS:X  a  US   nU	(       a  XU4$ X4$ )NT)	rT   rU   n_informativer   biasnoiseshuffler   rW   rX   r   r   )
r   rB   asarrayrd   re   binomialr   copyr   abs)rT   rU   proportion_nonzeror$  r   r%  X_offsetr&  r'  r   positiverW   rr   r{   cmask	removed_Xs                    rH   _make_sparse_offset_regressionr2    s    #!
GA! QJJsOMA
		l+44Q8JGGTWXX 	 IAeHIdOq	A	UU266!9q=1$%%FF1IMQaDQw4KrJ   zsolver, sparse_containerc              #   B   #    U  H  u  pUb  US;   d  M  X4v   M     g 7f)N)r:   ridgecvr   ).0r   r   s      rH   	<genexpr>r6    s3      +
&V #v1I'I 	#"+
s   
)r;   r=   r:   r<   r>   r4  z"n_samples,dtype,proportion_nonzero))r   float32皙?)(   r7  r   )r   float64皙?c           	         SnUS:  a  SOSn[        SSUUUUS9u  p[        U5      n[        SUS	9R                  X5      n
UR	                  US
S9nU	R	                  US
S9n	Ub  U" U5      nU S:X  a  [        U/S9nO,U R                  S5      (       a  SnSnOSnS n[        UU UUUS9nUR                  X5        [        UR                  U
R                  SSS9  [        UR                  U
R                  SSS9  g )Nr   g?g      I@g     @@r\      )r%  rU   r,  r&  rW   rT   r9   )r   r|   F)r*  r4  alphasr=   gHz>r   r   )r|   r   r   r   rW   rZ   r   rtol)
r2  r"   r   r   astyper   
startswithr,   r   r   )r   r,  rT   dtyper   rn   r|   r&  rr   r{   	svd_ridger   r   r   s                 rH   test_solver_consistencyrF    s   $ E&,D%E)-'DA 	QAU%044Q:I	U#A	U#A#Qw'U##CHCH+
 
IIaOEKKt$GE$$i&:&:DQrJ   gcv_moder9   eigenX_containerX_shape)r  r  )r  r   zy_shape, noise))r  r   )r  rX         >@)r  r        b@c           
         Uu  pg[        U5      S:X  a  US   OSn[        UUUSSUSS9u  pU
R                  U5      n
/ SQn[        UUUS	S
9n[        U UUS9nUR	                  X5        U" U	5      nUR	                  X5        UR
                  [        R                  " UR
                  5      :X  d   e[        UR                  UR                  SS9  [        UR                  UR                  SS9  g )NrL   rY   rX   r   Fr   rT   rU   r   rW   r'  r&  r$  rZ   r8  r         $@g     @@neg_mean_squared_errorcvr   r?  scoring)rG  r   r?  rZ   rA  )r  r2  r   r   r   alpha_r   r   r,   r   r   )rG  rI  rJ  y_shaper   r&  rT   rU   r   rr   r{   r?  	loo_ridge	gcv_ridgeX_gcvs                  rH   test_ridge_gcv_vs_ridge_loo_cvr^     s     $I"7|q0aI)DA 	
		'A(F#(	I #I MM!NEMM%v}}Y-=-=>>>>IOOY__4@I(()*>*>TJrJ   c            
         Sn Su  pSn[        UUUSSSSS9u  pE/ SQn[        US	X`S
9n[        S	X`S9nUR                  XE5        UR                  XE5        UR                  [        R
                  " UR                  5      :X  d#   SUR                  < SUR                  < 35       e[        UR                  UR                  SS9  [        UR                  UR                  SS9  g )Nexplained_variance)r\   r   rX   r   Fr   rQ  rR  TrU  )r   r?  rW  zgcv_ridge.alpha_=z, loo_ridge.alpha_=rZ   rX  )	r2  r   r   rY  r   r   r,   r   r   )	rW  rT   rU   r   rr   r{   r?  r[  r\  s	            rH   test_ridge_loo_cv_asym_scoringra  S  s    "G!II)DA )FDI d6KIMM!MM!v}}Y-=-=>> 9
1	 0 023> IOOY__4@I(()*>*>TJrJ   rU   r  r   zy_shape, fit_intercept, noise))rK  Tr   )rL  Tg      4@)rN  TrO  )rN  FrM  c           	      &   / SQn[         R                  R                  S5      n[        U5      S:X  a  US   OSn[	        SUUSSUS9u  pU
R                  U5      n
S	UR                  [        U	5      5      -  nXR                  5       -
  S-   R                  [        5      n[         R                  " [         R                  " U	R                  S   5      U5      nUR                  [        5      nX   X   p[        U	R                  S   S
9nUR                  XUS9n[!        UUSUS9nUR#                  X5        [%        UR&                  US9nUR                  XUS9n[)        UXUS9nUR                  UR                  :w  a  UR                  UR                  5      nUU-
  S-  n[         R                  " U	R                  S   5       Vs/ s H  n[         R*                  " UUU:H     SS9PM      nn[         R,                  " U5      nU" U	5      n[!        USU US9nUR#                  UXS9  [        U5      S:X  a0  UR.                  S S 2S S 2UR1                  UR&                  5      4   nO,UR.                  S S 2UR1                  UR&                  5      4   nUR&                  [2        R4                  " UR&                  5      :X  d   e[7        UUSS9  [7        UR8                  UR8                  SS9  [7        UR:                  UR:                  SS9  g s  snf )NrR  r   rL   rY   rX   r  F)rT   rU   r   rW   r'  r&  r   )n_splits)groupsrT  )r?  rV  rW  r   r   rV  r   T)r?  store_cv_resultsrG  r   r   rZ   rX  )rB   rd   re   r  r2  r   r   rc   rB  intrepeatr   r   r   r   splitr   r   r   rY  r!   r   r(  cv_results_indexr   r   r,   r   r   )rG  rI  r   rU   rZ  r&  r?  rq   r   rr   r{   r   indicesX_tiledy_tiledrV  splitskfold	ridge_regpredictionskfold_errorsir]  r\  
gcv_errorss                            rH   test_ridge_gcv_sample_weightsrv  s  s    )F
))


"C"7|q0aI)DA 	
		'A		#a&))M"%6%6%881<DDSIMii		!''!*-}=G!((/Mz1:W	QWWQZ	(BXXgwX7F(#	E 
IIgELLFIXXgwX7F#IwFKKGMM)!))'--8k)a/L<>IIaggaj<Q<Qq|GqL)2<Q   ::l+LNE#	I MM%M8
7|q**1aell1K+KL
**1fll5<<.H+HI
<<6==)9)9::::J48IOOU[[t<I((%*:*:F+s   %Lz2mode, mode_n_greater_than_p, mode_p_greater_than_n))Nr9   rH  )autor9   rH  )rH  rH  rH  )r9   r9   r9   c                     [        SSS9u  pEU b  U " U5      n[        XA5      U:X  d   e[        UR                  U5      U:X  d   eg )Nr   rL   )rT   rU   )r   r   ri   )r   modemode_n_greater_than_pmode_p_greater_than_nrr   ry   s         rH   test_check_gcv_mode_choicer|    sP     Q15DA#Q1#'<<<<133%)>>>>rJ   c                    [         R                  S   n/ nU c  [         SpCOU " [         5      SpC[        US9nUR                  U[        5        UR
                  nUR                  U5        [        n[        [        SS9n[        SUS9n	U" U	R                  5      " U[        5        U	R
                  [        R                  " U5      :X  d   eS n
[        U
5      n[        SUS9nU" UR                  5      " U[        5        UR
                  [        R                  " U5      :X  d   e[        S5      n[        SUS9nUR                  U[        5        UR
                  [        R                  " U5      :X  d   eU cO  UR                  U[        [        R                  " U5      S	9  UR
                  [        R                  " U5      :X  d   e[        R                   " [        [        45      R"                  nUR                  X>5        UR%                  U5      nUR                  U[        5        UR%                  U5      n['        [        R                   " UU45      R"                  US
S9  U$ )Nr   TFr   )greater_is_better)r   rW  c                     [        X5      * $ rA   )r   )xr{   s     rH   func_test_ridge_loo.<locals>.func  s    "1(((rJ   rT  r   h㈵>rX  )r   r   r   r   r   rY  appendr0   r   r   r   r   r   r   rB   r   vstackri   r   r,   )r   rT   retrr   r   	ridge_gcvrY  frW  
ridge_gcv2r  
ridge_gcv3scorer
ridge_gcv4r   Y_predrF   s                    rH   _test_ridge_loor    s     #I
C%t=+J7=6I MM!Z FJJv 	A,FGug>Jjnna$f 5555) $Gug>Jjnna$f 5555 01Fuf=JNN1j!f 5555 a27793EF6==#8888 			:z*+--AMM!q!FMM!Z q!FBIIvv./116EJrJ   c                 F   U c  [         OU " [         5      n[        5       nUR                  U[        5        UR	                  U5        [        UR                  R                  5      S:X  d   e[        UR                  5      [        R                  L d   e[        S5      nUR                  US9  UR                  U[        5        UR	                  U5        [        UR                  R                  5      S:X  d   e[        UR                  5      [        R                  L d   eg )NrX   r   re  )r   r   r   r   r   r  r   r   typer   rB   r:  r   
set_params)r   rr   ridge_cvrV  s       rH   _test_ridge_cvr  
  s    &.
4DZ4PAyHLLJQx~~##$)))##$

222	qB2LLJQx~~##$)))##$

222rJ   zridge, make_dataset)rf  c                 t    U" SSS9u  p#[        U 5      n U R                  X#5        [        U S5      (       a   eg )N   r   rT   rW   rj  )r   r   hasattr)r   make_datasetrr   r{   s       rH   $test_ridge_gcv_cv_results_not_storedr    s<     !"5DA%LE	IIaOum,,,,,rJ   rV  r   c                     U" SSS9u  p4[        U 5      n U R                  SUS9  U R                  X45        [        U S5      (       d   e[	        U R
                  [        5      (       d   eg )Nr  r   r  F)rf  rV  best_score_)r   r  r   r  r   r  r   )r   r  rV  rr   r{   s        rH   test_ridge_best_scorer  +  se     !"5DA%LE	e3	IIaO5-((((e''////rJ   c            	      x   [         R                  R                  S5      n Su  pnU R                  X5      n[         R                  " US S 2S/4   [         R
                  " SU45      5      [         R                  " US S 2S/4   S[         R
                  " SU45      -  5      -   [         R                  " US S 2S/4   S[         R
                  " SU45      -  5      -   U R                  X5      -   nSnUR                   Vs/ s H%  n[        US	9R                  XW5      R                  PM'     nn[        US
S9R                  XT5      n	[        XR                  5        [        [        U	R                  S9R                  XT5      R                  U	R                  5        [        US
S
S9R                  XT5      n	U	R                  R                  U4:X  d   eU	R                  R                  U4:X  d   eU	R                   R                  U[#        U5      U4:X  d   e[        SS
S
S9R                  XT5      n	U	R                  R                  U4:X  d   eU	R                  R                  U4:X  d   eU	R                   R                  XS4:X  d   e[        US
S
S9R                  XTS S 2S4   5      n	[         R$                  " U	R                  5      (       d   e[         R$                  " U	R                  5      (       d   eU	R                   R                  U[#        U5      4:X  d   e[        US
SS9R                  XT5      n	[        XR                  5        [        [        U	R                  S9R                  XT5      R                  U	R                  5        [        U['        5       S
S9n	Sn
[(        R*                  " [,        U
S9   U	R                  XT5        S S S 5        [        USS
S9n	[(        R*                  " [,        U
S9   U	R                  XT5        S S S 5        g s  snf ! , (       d  f       NR= f! , (       d  f       g = f)Nr   )r   r   r   r   rX   g?rL   rZ   )rX   d     r>  T)r?  alpha_per_targetr   )r?  r  rf  r2)r?  r  rW  )r?  rV  r  z3cv!=None and alpha_per_target=True are incompatibler   r  )rB   rd   re   r   r   r   ri   r   r   rY  r/   r.   r   r   r   r  rj  r  isscalarr    r   r   r   )rq   rT   rU   r   r{   rr   r?  r   optimal_alphasr  msgs              rH   "test_ridge_cv_individual_penaltiesr  :  s    ))


#C (0$I9		)'A
qQCy"''1j/23
&&1qc6D277Az?#;;
<	=
&&1qc6EBGGQ
O$<<
=	> ))I
*	+  F RSQTQTUQTvgV,00;BBQTNU ft<@@FH~7 HOO$((.44hnn
 ftdSWW	H ??  YL000%%)555%%)S[))LLLL a$NRRSTXH??  YL000%%)555%%))BBBB ftdSWW	QT7H ;;x'''';;x++,,,,%%)S[)AAAA ftTJNNqTH~7HOO$((.44hnn fNH
?C	z	-Q 
.fTBH	z	-Q 
.	-a VZ 
.	- 
.	-s   ?,P<P:P+
P(+
P9c                     U c  [         OU " [         5      n[        SS9nUR                  U[        5        [        R
                  " UR                  U[        5      S5      $ )NFr   r   )r   r   r   r   rB   roundr   )r   rr   r   s      rH   _test_ridge_diabetesr    sH    &.
4DZ4PA&E	IIa88EKK:.22rJ   c                    U c  [         OU " [         5      n[        R                  " [        [        45      R                  n[         R
                  S   n[        SS9nUR                  X5        UR                  R
                  SU4:X  d   eUR                  U5      nUR                  U[        5        UR                  U5      n[        [        R                  " Xf45      R                  USS9  g )NrX   Fr   rL   r   decimal)r   rB   r  r   ri   r   r   r   r   r   r.   )r   rr   r   rU   r   r  rF   s          rH   _test_multi_ridge_diabetesr    s    &.
4DZ4PA
		:z*+--A!!!$J&E	IIaO;;J///]]1F	IIa]]1Fbii(89;;VQOrJ   c                 b   [         R                  " [        5      R                  S   n[        R                  S   nU c  [        OU " [        5      n[        5       [        5       4 Hj  nUR                  U[        5        UR                  R                  X4:X  d   eUR                  U5      n[         R                  " [        U:H  5      S:  a  Mj   e   [        S5      n[        US9nUR                  U[        5        UR                  U5      n[         R                  " [        U:H  5      S:  d   eg )Nr   rX   gHzG?r   re  g?)rB   uniquey_irisr   X_irisr   r   r   r   r   rC   r   )r   	n_classesrU   rr   regrF   rV  s          rH   _test_ridge_classifiersr    s    		&!''*IaJ"*0@0HA!#4#676yy9"9999Qwwv'(4///	 8 
qB
r
"CGGAv[[^F776V#$+++rJ   rW  accuracyr   c                     U c  [         OU " [         5      n[        U5      (       a  [        U5      OUn[        XBS9nUR	                  U[
        5      R                  U5        g )N)rW  rV  )r  callabler   r   r   r  r   )r   rW  rV  rr   scoring_clfs         rH   "test_ridge_classifier_with_scoringr    sO     #*0@0HA'/'8'8{7#gH
H
4CGGAvq!rJ   c                 R   S nU c  [         OU " [         5      n[        R                  " SSSS9n[        U[	        U5      US9nUR                  U[        5        UR                  [        R                  " S5      :X  d   eUR                  [        R                  " US   5      :X  d   eg )	Nc                     g)NzG?r   rD   s      rH   _dummy_score:test_ridge_regression_custom_scoring.<locals>._dummy_score  s    rJ   rL   r   )num)r?  rW  rV  r  r   )r  rB   logspacer   r   r   r  r  r   r   rY  )r   rV  r  rr   r?  r  s         rH   $test_ridge_regression_custom_scoringr    s     #*0@0HA[[QA&F
6;|3LQS
TCGGAv??fmmD1111::vay1111rJ   c                    U c  [         OU " [         5      n[        SSS9nUR                  U[        5        UR	                  U[        5      n[        SSS9nUR                  U[        5        UR	                  U[        5      nX5:  d   eg )Nr  F)r   r   rZ   )r   r   r   r   r   )r   rr   r   r   ridge2score2s         rH   _test_tolerancer    sr    &.
4DZ4PAd%0E	IIaKK:&Et51F
JJq*\\!Z(F??rJ   c           	         [        X#5      n[        R                  U5      n[        R                  U5      nUR	                  XsS9n	UR	                  XS9n
UR                  Xx5        UR                  nUR                  n[        SS9   [        U5      R                  X5      nUR                  nUR                  UR                  :X  d   eUR                  U	R                  :X  d   e[        [        XS9UU[        U5      S9  UR                  nUR                  UR                  :X  d   eUR                  U	R                  :X  d   e[        [        XS9UU[        U5      S9  S S S 5        g ! , (       d  f       g = f)NdeviceTarray_api_dispatchxprA  r   )r1   r  rB  r  r(  r   r   r   r   r   r   rD  r,   r&   r%   )name	estimatorarray_namespacer  
dtype_namerA  r  	X_iris_np	y_iris_np	X_iris_xp	y_iris_xpcoef_npintercept_npestimator_xpcoef_xpintercept_xps                   rH   check_array_api_attributesr    sE    
o	6Bj)Ij)I

9
4I

9
4IMM)'ooG''L	4	0Y'++IA$$}}---}}	///g-
+		
 $..!!\%7%7777!!Y__444l2
+		
! 
1	0	0s   CE**
E8z#array_namespace, device, dtype_name)idscheckr  r   c                     U R                   R                  n0 n[        X#5      nSU;   a'  U[        L a  [	        Xs5      UR
                  :X  a  SUS'   U" XPU4X4S.UD6  g )NCVrZ   rA  )r  r  )	__class____name__r1   r  r(   r7  )r  r  r  r  r  r  tolsr  s           rH   test_ridge_array_api_compliancer    sm    . ''DD	o	6B//&r2bjj@
 V	17RVrJ   z$array_namespace, device_, dtype_namec                    [        X5      n[        SS9u  pVUR                  U5      nUR                  U5      nU R                  Xx5      n	U	R	                  U5      n
[        SS9   UR                  XrS9UR                  XS9pU R                  X5      nUR	                  U5      nUR                  U
R                  s=:X  a  UR                  :X  d   e   e[        [        XS9U
5        S S S 5        g ! , (       d  f       g = f)Nr   rW   Tr  r  r  )
r1   r
   rB  r   r   r   r(  r   r,   r&   )r  r  device_r  r  rr   r{   X_npy_npridge_nppred_npX_xpy_xpridge_xppred_xps                  rH   *test_ridge_classifier_multilabel_array_apir  &  s     
o	7B)q9DA88JD88JD}}T(Ht$G	4	0ZZZ5rzz$z7Wd==,""4(}}888888)'97C 
1	0	0s   $BC00
C>r  )include_numpy_namespacesc                    [        U S S9nUR                  [        S S 5      nUR                  [        S S 5      n[        R
                  S   S   R                  nUSS1-
   Hg  n[	        XUS:H  S9nS	UR                   S
U S3n[        R                  " [        US9   [        SS9   UR                  X#5        S S S 5        S S S 5        Mi     [	        SSS9nSUR                   S3n[        R                  " [        US9   [        SS9   UR                  X#5        S S S 5        S S S 5        [	        5       nSUR                   S3n[        R                  " [        US9   [        SS9   UR                  X#5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       GMK  = f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N]= f! , (       d  f       g = f)Nr  r   r   r   rw  r9   lbfgsr   r.  z Array API dispatch to namespace z" only supports solver 'svd'. Got 'z'.r   Tr  zYThe solvers that support positive fitting do not support Array API dispatch to namespace zc. Please either disable Array API dispatch, or use a numpy-like namespace, or set `positive=False`.z&Using Array API dispatch to namespace z with `solver='auto'` will result in using the solver 'svd'. The results may differ from those when using a Numpy array, because in that case the preferred solver would be cholesky. Set `solver='svd'` to suppress this warning.)r1   r(  r  r  r   _parameter_constraintsoptionsr  r   r   r   r   r   r   UserWarning)r  r  r  r  available_solversr   r   expected_msgs           rH   6test_array_api_error_and_warnings_for_solver_parameterr  ?  s    
od	;B

6"1:&I

6"1:&I44X>qAII#vuo5V.?@.r{{m <""(- 	
 ]]:\:48		)/ 9 ;: 6 $/E	++-;;- 8.	.  
z	6t4IIi+ 5 
7 GE
0 >D 	D  
k	6t4IIi+ 5 
7	6- 98 ;: 54 
7	6 54 
7	6sl   
F'F9F 
G
F0G
G#)G;G#
FF
F-	0
F>	:G
G
G 	G##
G1c                    [        U S S9nUR                  [        S S 5      nUR                  [        S S 5      n[	        5       nSn[
        R                  " 5          [
        R                  " SU[        S9  [        SS9   UR                  X#5        S S S 5        S S S 5        [        SS9   [	        SSS	9R                  X#5        S S S 5        g ! , (       d  f       NB= f! , (       d  f       NK= f! , (       d  f       g = f)
Nr  r   zkResults might be different than when Array API dispatch is disabled, or when a numpy-like namespace is usederror)messagecategoryTr  rw  r  )r1   r(  r  r  r   warningscatch_warningsfilterwarningsr  r   r   )r  r  r  r  r   r  s         rH   )test_array_api_numpy_namespace_no_warningr  l  s    	od	;B

6"1:&I

6"1:&IGE	; 
 
	 	 	"Tt4IIi+ 5 
# 
4	0Vd+//	E 
1	0 54 
#	" 
1	0s0   $C CC+C0
C	C
C-0
C>	test_funcc                 H    U " S 5      nU " U5      nUb  Ub  [        X#SS9  g g g )Nr   r  )r.   )r  r   	ret_dense
ret_sparses       rH   test_dense_sparser    s4     $I=)J!7!)C "8rJ   c                     [         R                  " SS/SS/SS/SS/SS//5      n / SQn[        S S9nUR                  X5        [	        UR                  SS//5      [         R                  " S	/5      5        [        S	S
0S9nUR                  X5        [	        UR                  SS//5      [         R                  " S/5      5        [        SS9nUR                  X5        [	        UR                  SS//5      [         R                  " S	/5      5        [         R                  " SS/SS/SS/SS//5      n / SQn[        S S9nUR                  X5        [        SS9nUR                  X5        [        UR                  5      S:X  d   e[        UR                  UR                  5        [        UR                  UR                  5        g )N      r   皙r   r   rX   rX   rX   rY   rY   class_weightr;  rX   rZ   rY   balanced)rX   rX   rY   rY   rL   )rB   r   r   r   r/   r   r  classes_r.   r   r   )rr   r{   r  regas       rH   test_class_weightsr    sy   
4,q	D$<#sc3ZPQAA
t
,CGGAMs{{S$K=1288QC=A 5z
2CGGAM s{{S$K=1288RD>B z
2CGGAMs{{S$K=1288QC=A 	4,q	D$<#sDEAA
t
,CGGAM
3DHHQNt}}"""cii4cnndoo>rJ   r  c                    U " 5       nUR                  [        R                  [        R                  5        U " SS9nUR                  [        R                  [        R                  5        [	        UR
                  UR
                  5        [        R                  " [        R                  R                  5      nU[        R                  S:H  ==   S-  ss'   SSSS.nU " 5       nUR                  [        R                  [        R                  U5        U " US9nUR                  [        R                  [        R                  5        [	        UR
                  UR
                  5        U " 5       nUR                  [        R                  [        R                  US-  5        U " US9nUR                  [        R                  [        R                  U5        [	        UR
                  UR
                  5        g	)
z5Check class_weights resemble sample_weights behavior.r  r  rX   r  r   g      Y@)r   rX   rL   rL   N)	r   irisdatar   r-   r   rB   r   r   )r  reg1reg2r   r  s        rH   "test_class_weight_vs_sample_weightr    s=   
 5DHHTYY$J'DHHTYY$

DJJ/ GGDKK--.M$++"#s*#u-L5DHHTYY]3L)DHHTYY$

DJJ/ 5DHHTYY]A%56L)DHHTYY]3

DJJ/rJ   c                  4   [         R                  " SS/SS/SS/SS/SS//5      n / SQn[        S / SQS9nUR                  X5        [        S	S
0/ SQS9nUR                  X5        [	        UR                  SS//5      [         R                  " S/5      5        g )Nr
  r   r  r   r   r  )r   r8  rX   )r  r?  rX   rZ   )r   r8  rX   r\   gɿrL   rY   )rB   r   r   r   r/   r   )rr   r{   r  s      rH   test_class_weights_cvr    s    
4,q	D$<#sc3ZPQAA
n
ECGGAM !U<N
OCGGAMs{{T1I;/2$@rJ   rT  c                 |   [         R                  R                  S5      nSnSnUR                  X#5      n/ SQn[	        U5      n[        U 5      (       a  [        U 5      OU n[        US SUS9nUR                  U5      n	UR                  XI5        UR                  R                  X&4:X  d   eSn
UR                  X*5      n	UR                  XI5        UR                  R                  X*U4:X  d   e[        SSU S9n[        R                  " [        S	S
9   UR                  XI5        S S S 5        g ! , (       d  f       g = f)Nr   r  r   r8  r   rS  Tr?  rV  rf  rW  r   )rV  rf  rW  zcv!=None and store_cv_resultsr   )rB   rd   re   r   r  r  r   r   r   rj  r   r   r   r   )rW  rq   rT   rU   r  r?  n_alphasr  rr{   r   s              rH   test_ridgecv_store_cv_resultsr     s    ))


#CIJ		)(AF6{H'/'8'8{7#gHv$xPA 			)AEE!K==9"7777 I		)'AEE!K==9"BBBB1tW=A	z)H	I	a 
J	I	Is   D--
D;c                 D   [         R                  " SS/SS/SS/SS/SS//5      n[         R                  " / SQ5      nUR                  S   n/ SQn[        U5      n[	        U 5      (       a  [        U 5      OU n[        US SUS	9nS
nUR                  X5        UR                  R                  X8U4:X  d   e[         R                  " / SQ/ SQ/ SQ/5      R                  5       nUR                  S
   nUR                  X5        UR                  R                  X8U4:X  d   eg )Nr
  r   r  r   r   r  r  Tr  rX   )rX   rY   rX   rY   rX   )rY   rY   rX   rY   rY   )
rB   r   r   r  r  r   r   r   rj  	transpose)	rW  r  r{   rT   r?  r  r  r  r   s	            rH   )test_ridge_classifier_cv_store_cv_resultsr#  	  s   
4,q	D$<#sc3ZPQA
"#A
IF6{H'/'8'8{7#gH$x	A
 IEE!K==9"BBBB 		-/BC	ik  
IEE!K==9"BBBBrJ   	Estimatorc                    [         R                  R                  S5      nSnSu  p4U [        L a  UR	                  U5      nOUR                  SSU5      nUR	                  X45      nU " US9nUR                  UL d   SU R                   S35       eUR                  Xe5        [        UR                  [         R                  " U5      5        g )Nr   r  r   r   rL   r>  z`alphas` was mutated in `z
.__init__`)rB   rd   re   r   r   randintr?  r  r   r/   r(  )r$  rq   r?  rT   rU   r{   rr   	ridge_ests           rH   test_ridgecv_alphas_conversionr)  &  s    
))


"CF IGIIi KK1i(		)(A(Iv% 
#I$6$6#7zB% MM!y''F);<rJ   c                    [         R                  R                  S5      nSnSu  pEU[        L a  UR	                  U5      nOUR                  SSU5      nUR	                  XE5      nU" X0S9nU c4  [        R                  " [        SS9   UR                  Xv5        SSS5        gUR                  Xv5        g! , (       d  f       g= f)	z1Check alpha=0.0 raises error only when `cv=None`.r   )r   r   rS  r&  rL   r?  rV  Nz"alphas\[0\] == 0.0, must be > 0.0.r   )
rB   rd   re   r   r   r'  r   r   r   r   )	rV  r$  rq   r?  rT   rU   r{   rr   r(  s	            rH   test_ridgecv_alphas_zeror,  ;  s     ))


"CF IGIIi KK1i(		)(A/I	z]]:-RSMM! TS 	a TSs   B44
Cc                     [         R                  R                  S5      n SnS H  u  p#U R                  U5      nU R                  X#5      nSU R	                  U5      -   n[        S5      n[        XS9nUR                  XTUS9  SU0n	[        [        5       XS	9n
U
R                  XTUS9  UR                  U
R                  R                  :X  d   e[        UR                  U
R                  R                  5        M     g )
Nr   r  )r  r   r   r   r   r+  r   r|   re  )rB   rd   re   r   randr   r   r   r   r   rY  best_estimator_r|   r.   r   )rq   r?  rT   rU   r{   rr   r   rV  r4  
parametersgss              rH   test_ridgecv_sample_weightr3  Q  s    
))


"CF "3	IIi IIi,chhy111X/A6 v&
%':5
q=1~~!3!3!9!9999!'--1C1C1I1IJ "3rJ   c                    ^^^^^ SS/n SS/n[         R                  R                  S5      n[        X5       GH  u  p4UR	                  X45      mUR	                  U5      mUR	                  U5      S-  S-   nSnSnUS S 2[         R
                  4   mU[         R
                  S S 24   m[        SS9mTR                  TTU5        TR                  TTU5        TR                  TTU5        UUUU4S jnUUUU4S	 jn	S
n
[        R                  " [        U
S9   U" 5         S S S 5        S
n
[        R                  " [        U
S9   U	" 5         S S S 5        GM     g ! , (       d  f       N?= f! , (       d  f       GMB  = f)NrL   r   r   rX   r   g       @r   c                  ,   > TR                  T TT5        g rA   r   )rr   r   sample_weights_not_OKr{   s   rH   fit_ridge_not_okStest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok  s    IIa12rJ   c                  ,   > TR                  T TT5        g rA   r6  )rr   r   sample_weights_not_OK_2r{   s   rH   fit_ridge_not_ok_2Utest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok_2  s    IIa34rJ   z)Sample weights must be 1D array or scalarr   )rB   rd   re   r   r   r   r   r   r   r   r   )
n_samplessn_featuressrq   rT   rU   sample_weights_OKsample_weights_OK_1sample_weights_OK_2r8  r<  r   rr   r   r7  r;  r{   s              @@@@@rH   9test_raises_value_error_if_sample_weights_greater_than_1drC  i  sK    QJa&K
))


#C!$Z!=	IIi,IIi IIi0A59!! 1!RZZ- @"3BJJM"BA 			!Q)*		!Q+,		!Q+,	3 	3	5 	5 >]]:W5 6 >]]:W5  657 ">. 65 65s   EE*
E'	*
E:	zn_samples,n_featuresrL   c                 j   [         R                  R                  S5      n[        SSS9n[        SSS9nUR	                  X5      nUR	                  U 5      nUR	                  U 5      S-  S-   nU" U5      n	UR                  XUS9  UR                  XgUS9  [        UR                  UR                  SS	9  g )
Nr   r   Fr   rL   rX   r   r  r  )rB   rd   re   r   r   r   r.   r   )
rT   rU   r   rq   sparse_ridgedense_ridgerr   r{   sample_weightsr  s
             rH   &test_sparse_design_with_sample_weightsrH    s     ))


#Cs%8Lc7K		)(A		)AYYy)Q.2N"HX?OOAO7l00+2C2CQOrJ   c                      [         R                  " SS/SS/SS/SS/SS//5      n / SQn[        SS9nUR                  X5        g )	Nr
  r   r  r   r   r  )rX   r\   r  r>  )rB   r   r   r   )rr   r{   r   s      rH   test_ridgecv_int_alphasrJ    sK    
4,q	D$<#sc3ZPQAA <(E	IIaOrJ   zparams, err_type, err_msgr?  )rX   rY   iz alphas\[1\] == -1, must be > 0.0)gr
  g      $z"alphas\[0\] == -0.1, must be > 0.0)rX   r   1z1alphas\[2\] must be an instance of float, not strc                     Su  pE[         R                  XE5      n[         R                  SSU5      n[        R                  " X#S9   U " S0 UD6R                  Xg5        SSS5        g! , (       d  f       g= f)z?Check the `alphas` validation in RidgeCV and RidgeClassifierCV.r&  r   rL   r   Nr   )rq   r   r'  r   r   r   )r$  rP   err_typer   rT   rU   rr   r{   s           rH   test_ridgecv_alphas_validationrN    sZ    ( !I		)(AAq)$A	x	/F% 
0	/	/s   A&&
A4c                     Su  p[         R                  X5      nU [        L a  [         R                  U5      nO[         R                  SSU5      nU " SS9R	                  X45        g)zCheck the case when `alphas` is a scalar.
This case was supported in the past when `alphas` where converted
into array in `__init__`.
We add this test to ensure backward compatibility.
r&  r   rL   rX   r>  N)rq   r   r   r'  r   )r$  rT   rU   rr   r{   s        rH   test_ridgecv_alphas_scalarrP    sU     !I		)(AGIIi KK1i(QA!rJ   c                      [        SSS9n U R                  [        [        5        U R                  R
                  S   [        R
                  S   :X  d   eg )Nr:   rX   )r   r   r   )r   r   r   r   r   r   )r  s    rH   test_sparse_cg_max_iterrR    sB    
{Q
/CGGJ
#99??1!1!1!!4444rJ   z-ignore::sklearn.exceptions.ConvergenceWarningc            	         Sn [         [        p![        R                  " X S45      R                  n[        SS5       HQ  nS HH  n[        XTSS9nUR                  X5        [        UR                  [        R                  " X@5      5        MJ     MS     S H.  n[        USSS9nUR                  X5        UR                  c  M.   e   g )	NrL   rX   rS   )r=   r>   r<   r   )r   r   r   )r:   r9   r;   r8  )
r   r   rB   tileri   ranger   r   r/   n_iter_)r   rr   r{   y_nr   r   r  s          rH   test_n_iterrX    s     Izq
''!^
$
&
&C!QK-FveDCGGAOs{{BGGH,HI .   36A48{{""" 3rJ   )r<   r:   r  rw  with_sample_weightc                    U S:H  n[        SX$S9u  pVSnU(       a>  [        R                  R                  U5      nSUR	                  UR
                  S   S9-   nU S:X  a  S	OU n	[        U	S
US9n
[        U S
US9nU
R                  XVUS9  UR                  U" U5      XgS9  [        U
R                  UR                  5        [        U
R                  UR                  SS9  g)a  Check that ridge finds the same coefs and intercept on dense and sparse input
in the presence of sample weights.

For now only sparse_cg and lbfgs can correctly fit an intercept
with sparse X with default tol and max_iter.
'sag' is tested separately in test_ridge_fit_intercept_sparse_sag because it
requires more iterations and should raise a warning if default max_iter is used.
Other solvers raise an exception, as checked in
test_ridge_fit_intercept_sparse_error
r  r   )rU   rW   r.  Nr   r   ra   rw  r:   r   )r   r   r.  r   gƠ>rX  )r2  rB   rd   re   rg   r   r   r   r,   r   r   )r   rY  rn   r   r.  rr   r{   r   rq   dense_solverrF  rE  s               rH   test_ridge_fit_intercept_sparser\    s       H)$6DA Mii##$67ckkqwwqzk:: #)F"2;L|JKEHELOOAO6]1%qFK**L,C,CDK%%|'9'9ErJ   )r>   r9   r;   c                     [        SSS9u  p#U" U5      n[        U S9nSR                  U 5      n[        R                  " [
        US9   UR                  XC5        S S S 5        g ! , (       d  f       g = f)Nr   r   )rU   rW   r  zsolver='{}' does not supportr   )r2  r   formatr   r   r   r   )r   r   rr   r{   X_csrrE  r   s          rH   %test_ridge_fit_intercept_sparse_errorr`    s^     *RaHDA!E'L,33F;G	z	1" 
2	1	1s   A##
A1c                    [        SSUSS9u  p4U (       a?  [        R                  R                  U5      nSUR	                  UR
                  S   S9-   nOS nU" U5      n[        SSS	S
SS9n[        S0 UD6n	[        S0 UD6n
U	R                  X4US9  [        R                  " 5          [        R                  " S[        5        U
R                  XtUS9  S S S 5        [        U	R                  U
R                  SS9  [        U	R                  U
R                  SS9  [         R"                  " [        SS9   [        SS	SS S9R                  Xt5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   r   g      @)rU   rT   rW   r-  r   r   ra   r=   Tr   r   )r|   r   r   r   r   r   r  -C6?rX  z"sag" solver requires.*r   rZ   )r   r   r   r   r   )r2  rB   rd   re   rg   r   r   r   r   r   r  simplefilterr  r,   r   r   r   r   )rY  rn   r   rr   r{   rq   r   r_  rP   rF  rE  s              rH   #test_ridge_fit_intercept_sparse_sagrd  *  sG   
 *1CcDA ii##$67ckkqwwqzk::!E%tF /&/K?6?LOOAO6		 	 	"g{3? 
# K**L,C,C$OK%%|'9'9E	k)B	CU$D4HLLUV 
D	C 
#	"
 
D	Cs   ',E2E(
E%(
E6return_interceptr   r  	container)rw  r:   r;   r<   r=   r>   r  c                    [        S5      nUR                  SS5      n/ SQn[        R                  " XV5      nSnU (       a  SnXx-  nU" U5      n	Su  p[        (       a  SOS	nUS
:H  nUS;  a:  U (       a3  [
        R                  " [        SS9   [        U	UU
UUU UUS9  SSS5        g[        U	UU
UUUU US9nU (       a  Uu  nn[        XSUS9  [        UUSUS9  g[        XSUS9  g! , (       d  f       g= f)z=check if all combinations of arguments give valid estimationsr   r  r   )rX   rL   r8  r   g     @)rZ   ư>rZ   rb  r  )r=   rw  zIn Ridge, only 'sag' solverr   )r|   r   r   re  r.  r   N)r|   r   r   r.  re  r   r   r  )
r#   r/  rB   r   r3   r   r   r   r   r,   )re  r   rf  r   rq   rr   
true_coefsr{   true_intercept	X_testingr|   r   r   r.  outr   r   s                    rH   .test_ridge_regression_check_arguments_validityrm  H  s    R
 CqAJ
qAN A!IJE94$D H_$)9]]:-JK+!1!	 L 	
	#)	C iqt<	>Ead;; LK 	s   C''
C5)r9   r:   r;   r<   r=   r>   r  c                 v   [         R                  R                  S5      nSnU S:H  nSu  pEUR                  XE5      nUR                  U5      nUR	                  [         R
                  5      nUR	                  [         R
                  5      n	S[         R                  " [         R
                  5      R                  -  n
[        X SXS9nUR                  X5        UR                  n[        X SXS9nUR                  Xg5        UR                  nUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  U5      R                  UR                  :X  d   eUR                  U5      R                  UR                  :X  d   e[        UR                  UR                  SS	S
9  g )Nr   r   r  r.  rL     )r|   r   r   r   r.  rb  gMb@?r  )rB   rd   re   r   rB  r7  finfo
resolutionr   r   r   rD  r   r,   )r   rq   r|   r.  rT   rU   X_64y_64X_32y_32r   ridge_32coef_32ridge_64coef_64s                  rH   test_dtype_matchrz    sh    ))


"CE H I99Y+D99YD;;rzz"D;;rzz"D
bhhrzz"--
-CScH LLnnG ScH LLnnG ==DJJ&&&==DJJ&&&D!''4::555D!''4::555HNNHNNDIrJ   c                  2   [         R                  R                  S5      n [         R                  " SS/5      nSu  p#nU R	                  X#5      nU R	                  X$5      nUR                  [         R                  5      nUR                  [         R                  5      n[        USS9n	U	R                  Xx5        U	R                  n
[        USS9nUR                  XV5        UR                  nU
R                  UR                  :X  d   eUR                  UR                  :X  d   eU	R                  U5      R                  UR                  :X  d   eUR                  U5      R                  UR                  :X  d   e[        U	R                  UR                  SS9  g )	Nr   r   r   )r  r  rL   r;   r   r   r  )rB   rd   re   r   r   rB  r7  r   r   r   rD  r   r-   )rq   r|   rT   rU   n_targetrr  rs  rt  ru  rv  rw  rx  ry  s                rH   test_dtype_match_choleskyr}    sB    ))


"CHHc3Z E&-#I899Y+D99Y)D;;rzz"D;;rzz"D 54HLLnnG 54HLLnnG ==DJJ&&&==DJJ&&&D!''4::555D!''4::555BrJ   )r9   r;   r<   r:   r=   r>   r  seedc                    [         R                  R                  U5      nSu  p4UR                  X45      nUR                  U5      n[         R                  " XV5      SUR                  U5      -  -   nSnU S:H  n	[        5       n
U S:X  a  SOSn[         R                  [         R                  4 H6  n[        UR                  U5      UR                  U5      UU US U	SS	S
S
S9X'   M8     U
[         R                     R                  [         R                  :X  d   eU
[         R                     R                  [         R                  :X  d   e[        U
[         R                     U
[         R                     US9  g )Nr.  r   r   r  r:   rZ   r  ro  r   F)	r|   r   rW   r   r.  r   r   return_n_iterre  r   )rB   rd   re   r   r   r   r7  r:  r   rB  rD  r,   )r   r~  rW   rT   rU   rr   r   r{   r|   r.  resultsr   current_dtypes                rH   %test_ridge_regression_dtype_stabilityr    sA   
 99((.L I91Aj)D
q$!3!3I!>>>AE HfG [(4dD**bjj1!1HH]#HH]#%""
 2 2::$$

2222::$$

222GBJJ')<4HrJ   c                      [        SS9u  p[        R                  " U 5      n U S S S2S S 24   n US S S2   n[        SS9R	                  X5        g )Nr   r  rL   r=   r  )r   rB   asfortranarrayr   r   )rr   r{   s     rH   test_ridge_sag_with_X_fortranr    sO    +DA
!A	#A#q&	A	#A#A	A!rJ   zClassifier, paramsc                 X   [        SSS9u  p#UR                  SS5      n[        R                  " X3/SS9nU " S	0 UD6R	                  X$5      nUR                  U5      nUR                  UR                  :X  d   e[        USS2S4   USS2S4   5        [        SS9R	                  X#5        g)
zNCheck that multilabel classification is supported and give meaningful
results.rX   r   )r  rW   rY   r   Nr=   r  r   )	r
   r   rB   r   r   r   r   r/   r   )
ClassifierrP   rr   r{   r   r  r  s          rH   test_ridgeclassifier_multilabelr    s     *AAFDA			"aA
vA&A

v

"
"1
(C[[^F<<177"""vad|VAqD\2	A!rJ   rw  r  )rZ   r   r8  r   c                 b   [         R                  " SS/SS/SS/SS//5      n[         R                  " SS	/5      nU(       a  S
nUR                  U5      U-   nOUR                  U5      n[        USXS9nUR	                  X65        [         R
                  " UR                  S:  5      (       d   eg)z:Test that positive Ridge finds true positive coefficients.rX   rL   r   rS   r   r  r  r  r[   r   Tr|   r.  r   r   r   N)rB   r   r   r   r   rf   r   )r   r   r|   rr   r   r   r{   r   s           rH   #test_ridge_positive_regression_testr    s    
 	1a&1a&1a&1a&12A88QHD	EE$K)#EE$Kd6E 
IIaO66%++"####rJ   c                    [         R                  R                  S5      nUR                  SS5      nUR	                  SSUR
                  S   S9nU (       a
  SnX4-  U-   nOX4-  nXbR                  UR
                  S   S9S	-  -  n/ nS
 H8  n[        XU SS9n	UR                  U	R                  X65      R                  5        M:     [        USSS.6  g)zTest that Ridge w/wo positive converges to the same solution.

Ridge with positive=True and positive=False must give the same
when the ground truth coefs are all positive.
r   ,  r  r8  r   rX   ra   r   r   )TFr   )r|   r.  r   r   rh  r@  N)rB   rd   re   r   rg   r   rh   r   r  r   r   r,   )
r   r|   rq   rr   r   r   r{   r  r.  r   s
             rH   %test_ridge_ground_truth_positive_testr     s     ))


#C		#sA;;sCaggaj;1D	Hy H	$t	++AG!-U
 	uyy,,-	 "
 W4a0rJ   )r9   r;   r<   r:   r=   r>   c           
         Sn[         R                  " SS/SS//5      n[         R                  " SS/5      nX#-  n[        USU SS	9n[        R                  " [
        S
S9   UR                  X$5        SSS5        [        R                  " [
        SS9   [        X$USU SS9u    nSSS5        g! , (       d  f       NA= f! , (       d  f       g= f)z5Test input validation for positive argument in Ridge.r8  rX   rL   r   rS   rY   TFr  zdoes not support positiver   Nzonly 'lbfgs' solver can be used)r.  r   re  )rB   r   r   r   r   r   r   r   )r   r|   rr   r   r{   r   ry   s          rH   test_ridge_positive_error_testr  ;  s    
 E
1a&1a&!"A88QGD	AV5QE	z)D	E		! 
F 
z)J	K%$v
1 
L	K 
F	E 
L	Ks    B-B>-
B;>
Cc                   ^ ^	^
 [        SSSS9u  m	m
Sm SnSU	U U
4S jjn[        T S9R                  T	T
5      n[        T S	S
9R                  T	T
5      nU" U5      nU" U5      nXV::  d   e[        U5       H  nU" XGS9nXh::  a  M   e   g)z?Check ridge loss consistency when positive argument is enabled.r  r   rT   rU   rW   r8  r  Nc                 f  > U R                   nUbQ  [        R                  R                  U5      nU R                  UR                  SX R                  R                  S9-   nOU R                  nS[        R                  " TTU-  -
  U-
  S-  5      -  ST-  [        R                  " US-  5      -  -   $ )Nr   ra   r   rL   )r   rB   rd   re   r   rg   r   r   )	r   rW   noise_scaler   rq   r   rr   r|   r{   s	         rH   
ridge_loss,test_positive_ridge_loss.<locals>.ridge_lossV  s    $$	#))''5C;;Q++BSBS!TTD;;DRVVQT\I5!;<<sU{RVV!GN
 @
 
 	
rJ   r   T)r|   r.  r  )Nr   )r   r   r   rU  )r|   n_checksr  r   model_positivelossloss_positiverW   loss_perturbedrr   r{   s   `        @@rH   test_positive_ridge_lossr  O  s     SSrJDAqEH

 

 ""1a(E6::1a@N
 eD~.M    h#NN... (rJ   c                     [        SSSS9u  p[        R                  " US5      n[        R                  " U /5      n SSSS.n[	        XU 40 UD6n[        XU 5      n[        XES	S
S9  g)zETest that LBGFS gets almost the same coef of svd when positive=False.r  r   r  rX   FgؗҜ<i  )r.  r   r   rb  r   r@  N)r   rB   expand_dimsr(  r   r   r,   )r|   rr   r{   config
coef_lbfgsr   s         rH   test_lbfgs_solver_consistencyr  u  so     SSrJDA
q!AJJwEF aE4V4JqU+MJDqArJ   c            	         [         R                  " SS/SS//5      n [         R                  " SS/5      n[        SSSSS	SS
9n[        R                  " [
        SS9   UR                  X5        SSS5        g! , (       d  f       g= f)z1Test that LBFGS solver raises ConvergenceWarning.rX   rY   g    _g    _Br   r  Fr   T)r|   r   r   r   r.  r   zlbfgs solver did not converger   N)rB   r   r   r   r   r   r   )rr   r{   r   s      rH   test_lbfgs_solver_errorr    su    
1b'Aq6"#A
%AE 
(0O	P		! 
Q	P	Ps   A77
Br  tallc           	      r   Ub)  US:X  d  US;   a  U (       a  [         R                  " S5        [        R                  R	                  S5      nSnUS:X  a  US-  nOUS-  nUR                  Xg5      nUR                  U5      n	Ub  U" U5      n[        U S	UUS
:H  USS9n
[        S0 U
D6R                  XSS9nUR                  R                  5       nU (       a  UR                  n[        R                  " U	5      nUR                  XUS9  [        UR                  USS9  U (       a  [        UR                  W5        UR                  SSUR                  S   S9nSUSS& U	SS=== S-  sss& UR                  XUS9  UR                  R                  5       nU (       a  UR                  nUR                  USS2SS24   U	SS USS S9  [        UR                  USS9  U (       a  [        UR                  W5        [        S0 U
D6R!                  [        R"                  U
S   -  S9nUR                  X[        R"                  U-  S9  US;   a!  U (       d  [         R$                  " SU S35        [        UR                  USS9  U (       a  [        UR                  W5        Ub  UR'                  5       n[        R(                  " XSUS-   /SS9n[        R(                  " XSUS-   /5      nUR                  5       nUSUS-  === S-  sss& [        R(                  " XSUS-   /SS9nUb  U" U5      nU" U5      n[        S0 U
D6R                  XUS9n[        S0 U
D6R                  UUUS9n[        UR                  UR                  5        U (       a!  [        UR                  UR                  5        gg)zTest that the impact of sample_weight is consistent.

Note that this test is stricter than the common test
check_sample_weight_equivalence alone.
Nr9   )r;   r>   zunsupported configurationr   rR   r  rL   r   r  r   )r   r|   r   r.  rW   r   r   rh  rX  r   r   r]   r  r|   r   r   zSolver z- does fail test for scaling of sample_weight.r   r   )r   r   rB   rd   re   r/  r   r   r   r   r*  r   	ones_liker,   rg   r   r  pir   toarrayr   )r   r   r  r   rn   rq   rT   rU   rr   r{   rP   r  r   r   r   r  X2y2sample_weight_1sample_weight_2r  s                        rH   $test_ridge_sample_weight_consistencyr    si    #U?v)==-KK34
 ))


#CIv~!^
]
'AA#Q#G#'F /&/

a$

7C99>>DNN	LLOMGGAG.CIIt$/	2
 KKDqqwwqzKBMM"#bcFdNFGGAG.99>>DNN	GGAcrc1fIq"v]3B-?G@CIIt$/	2 ?6?%%BEEF7O,C%DDHHQ!6H7 wvh&STUDJJ403 #IIK	.	Q/0q	9B	.	Q/0	1B#((*O$i1n%*%nn	&6	Q78qO #Qb!?6?q?CD?6?r2_EDDJJ

+9 rJ   r   c                 >   [        SSUSS9u  p4[        R                  " UR                  S   4S9nU (       a  SUSSS2'   S	n[	        US
USS9nUR                  X4US9  [        R                  " / UR                  Q[        U5      P7S9n[        5       n	[        U5       He  u  p[        U	R                  X45      5       HB  u  nu  p[        XS9nUR                  X=   XM   X]   5        UR                  X>   5      XSU
4'   MD     Mg     [        UR                  U5        g)aN  Check that the predictions stored in `cv_results_` are on the original scale.

The GCV approach works on scaled data: centered by an offset and scaled by the
square root of the sample weights. Thus, prior to computing scores, the
predictions need to be scaled back to the original scale. These predictions are
the ones stored in `cv_results_` in `RidgeCV`.

In this test, we check that the internal predictions stored in `cv_results_` are
equivalent to a naive LOO-CV grid search with a `Ridge` estimator.

Non-regression test for:
https://github.com/scikit-learn/scikit-learn/issues/13998
r  r\   r   )rT   rU   r   rW   r   r   NrL   r  rT  T)r?  rW  r   rf  r   r   .)r   rB   r   r   r   r   emptyr  r    	enumerateri  r   r   r,   rj  )rY  r   r   rr   r{   r   r?  r  rr  rV  	alpha_idxr|   idx	train_idxtest_idxr   s                   rH   !test_ridge_cv_results_predictionsr    s   " "	DA GG1771:-0M ccF (#	H LL]L3 ((!8177!8CK!89K	B%f-	*3BHHQN*C&C&)CEIIalAL-2JK/4}}Q[/IKS)+, +D .
 H((+6rJ   c                    [        SU S9u  p[        R                  " UR                  S   4S9n[	        SSS9nUR                  XUS9  [        5       n[        UR                  S	9n[        R                  " UR                  U5       VVs/ s H-  u  pxUR                  X   X'   X7   S9R                  X   5      PM/     snn5      n	[        UR                  [        X)5      * 5        g
s  snnf )zCheck that `RidgeCV` works properly with multioutput and sample_weight
when `scoring != None`.

We check the error reported by the RidgeCV is close to a naive LOO-CV using a
Ridge estimator.
rL   r   rW   r   r  rT  T)rW  rf  r   r   N)r   rB   r   r   r   r   r    r   rY  squeezeri  r   r,   r  r   )
rn   rr   r{   r   r  rV  r   traintest
y_pred_loos
             rH   'test_ridge_cv_multioutput_sample_weightr  (	  s     Q5GHDAGG1771:-0M7$OHLL]L3	B(E
  "xx{		
  + IIah8LIMUU  +		
J H((+=a+L*LM	
s   
4C'
c                    ^	 [        SSS9u  pS m	U	4S jn[        US9nUR                  X5        [        5       n[	        UR
                  S9n[        R                  " UR                  U 5       VVs/ s H,  u  pgUR                  X   X   5      R                  X   5      PM.     snn5      n[        UR                  T	" X5      * 5        gs  snnf )	zECheck that `RidgeCV` works properly with a custom multioutput scorer.rL   r   r  c                     X-
  S-  n[         R                  " USS9nUR                  S:X  a  [         R                  " USS/S9* $ U* $ )NrL   r   r   rX   )r  )rB   rC   ndimr  )y_truerF   errorsmean_errorss       rH   custom_error=test_ridge_cv_custom_multioutput_scorer.<locals>.custom_errorF	  sN    /a'ggf1-q JJ{QF;;; |rJ   c                 4   > T" X R                  U5      5      * $ )zGMultioutput score that give twice more importance to the second target.)r   )r  rr   r{   r  s      rH   custom_multioutput_scorerJtest_ridge_cv_custom_multioutput_scorer.<locals>.custom_multioutput_scorerP	  s    Q 1 1! 4555rJ   )rW  r   N)r   r   r   r    r   rY  rB   r  ri  r   r,   r  )
rr   r{   r  r  rV  r   r  r  r  r  s
            @rH   'test_ridge_cv_custom_multioutput_scorerr  B	  s    QQ7DA6 89HLL	B(EKM88TU;W;KE18QX	&	.	.qw	7;WJ H((<+F*FG 	Xs   23C
metaestimator)enable_metadata_routingc                 .    U " 5       R                  5         g)zTest that `RidgeCV` or `RidgeClassifierCV` with default `scoring`
argument (`None`), don't enter into `RecursionError` when metadata is routed.
N)get_metadata_routing)r  s    rH   *test_metadata_routing_with_default_scoringr  d	  s     O((*rJ   zmetaestimator, make_datasetc                     U" SSSS9u  p#[        U 5      n U R                  X#[        R                  " UR                  S   5      S9  g)zTest that `set_score_request` is set within `RidgeCV.fit()` and
`RidgeClassifierCV.fit()` when using the default scoring and no
UnsetMetadataPassedError is raised. Regression test for the fix in PR #29634.r  r   r   r  r   r   N)r   r   rB   r   r   )r  r  rr   r{   s       rH   +test_set_score_request_with_default_scoringr  m	  sB     #!"EDA-(Ma"''!''!**=>rJ   )r  r  r   r\   rX   g      *@rM  rM  TFFNrA   )r   	itertoolsr   numpyrB   r   scipyr   sklearnr   r   sklearn.baser   sklearn.datasetsr   r	   r
   r   sklearn.exceptionsr   sklearn.linear_modelr   r   r   r   r   r   sklearn.linear_model._ridger   r   r   r   r   r   r   sklearn.metricsr   r   r   sklearn.model_selectionr   r   r   r    r!   sklearn.preprocessingr"   sklearn.utilsr#   sklearn.utils._array_apir$   r%   r&   r'   r(   r)   r*   -sklearn.utils._test_common.instance_generatorr+   sklearn.utils._testingr,   r-   r.   r/   r0   sklearn.utils.estimator_checksr1   r2   sklearn.utils.fixesr3   r4   r5   r6   r7   r8   SOLVERSr   r   load_diabetesdiabetesr  r   r   r   r   r   indrd   re   rq   r'  	load_irisr  r  r  rI   rM   fixturer   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r"  r2  rF  r(  r^  ra  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  sortedr  r  r  r  r  r   r#  r)  r,  r3  rC  rH  rJ  r   	TypeErrorrN  rP  rR  r  rX  r\  r`  rd  r   r   rm  rz  r}  rU  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rJ   rH   <module>r     sd        ,   2    H G  / ,   S   B 4 #S  !!#! 
Jii
  #$iiA C 	$3i#C*S/ 
JDKK%+ '(C& )C&L 7+4-8)# 9 ,)#X 7+4-8#? 9 ,#?L 7+4-8%2 9 ,%2P 7+4-82+ 9 ,2+j 7+4-828 9 ,28j 7+4-82+ 9 ,2+j 7+4-8+dVn-DE3+./' / F 9 ,/'d+
4<>$0*@ "23.9
D : 4
D "NO*T5M:.9. : ; P.$ "NO*T5M:.93 : ; P3& 	
	*Z *1GF^#+

 (F+R	
+R\ eW%56~(EFWh$784-8$K 9 9 G 7$KNK@ eW%56~(EF2w/#;G 0 G 7;G| +dVn-DE8? F?6r3$ 	%	(/:	E	24GH-- i!$5$79L#MN ay)0 *	
0DN3P,$ T:7I$JKeAh/0+dVn-DE" F 1 L" eAh/0+dVn-DE2 F 12  @D$
N )-/'  
 %'AB   
 Uu%		 	!  		(( //1B1DE *-/'  
DD" 'G',',T *F3I,JKF LF. "
 .9D :
D ?F 2C DE0 F08A .0LM: T:7I$JKC LC8 w0A&BC= D=( ay)w0A&BC D *(K0$!N /1a&1a&1AB^#n4~EVP	 C
P" w0A&BC
M	"J0ST*+1	
 }%@	
 &! D"& w0A&BC" D""5 KL# M#$ #IJ-e}=.9#F : > K#FL #>?.9# : @# -e}=.9W : >W8 +eT];4*?@rxxj>&ABO4< C A <4<n NJJDC< N q*I +I@" 	"	T4L)	T1I&"" FG#454-8"89$ : 9 6$" 4-8"891 : 912 E

" "89"/ :"/J "89B :B " 5$-8+dVn-DE&&!127gY#67\: 8 3 F 9\:~ -t}=5$-8q!f-(7 . 9 >(7VN4HD 74E*FG-+ . H+ !	O$		12 -? .?rJ   