
    0Ph@             	       z!   d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZ d d	lmZmZmZmZm Z m!Z!m"Z" d d
l#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZA d dlBmCZCmDZDmEZEmFZFmGZGmHZH g dZIdZJdZK e
jL                    ZMeMjN        eMjO        cZPZQ ejR        ePjS        d                    ZTejU        V                    d           ZWeWX                    eT           eTdd         ZTePeT         eQeT         cZPZQ e
jY                    ZZeZjN        eZjO        cZ[Z\d Z]d Z^ ej_        ddg          d             Z`eja        b                    deI          eja        b                    ddd g          d!                         Zceja        b                    deI          eja        b                    ddd g          d"                         Zdeja        b                    deI          eja        b                    ddd g          d#                         Zeeja        b                    deI          eja        b                    ddd g          d$                         Zfeja        b                    deI          eja        b                    ddd g          d%                         Zgeja        b                    deI          eja        b                    ddd g          d&                         Zheja        b                    deI          eja        b                    ddd g          eja        b                    d'dgeFz             eja        b                    d(d)d*g          d+                                                 Zid, Zjd- Zkd. Zld/ Zmd0 Znd1 Zoeja        b                    d2g d3          eja        b                    d4eF          d5                         Zpeja        b                    d6g d7          eja        b                    d8dd g          eja        b                    d4eF          d9                                     Zqeja        b                    d6g d7          eja        b                    d8dd g          eja        b                    d4eF          d:                                     Zr	 	 	 	 	 	 	 	 	 	 	 	 ddAZseja        b                    dBdC  eg dDdgeFz             D                       eja        b                    dEg dF          eja        b                    dG ejR        dH                    dI                                     Zteja        b                    dJdKdLg          eja        b                    dMeju        geFz             eja        b                    dNdOdPg          eja        b                    ddd g          eja        b                    dQg dR          dS                                                             ZvdT Zweja        b                    dJdKdLg          eja        b                    dMeju        geFz             eja        b                    dUdVdWg          eja        b                    dXg dY          dZ                                                 Zxeja        b                    d'dgeFz             eja        b                    d[g d\          d]                         Zyd^ Zzd_ Z{eja        b                    d` ed a          ef ed a          efg          db             Z|eja        b                    d` e            ef e            efg          eja        b                    dcddHg          dd                         Z}de Z~df Zdg Zdh Zeja        b                    diddje]g          eja        b                    dcd e*dk          g          eja        b                    d'dgeFz             dl                                     Zeja        b                    dcd e*dk          g          eja        b                    d'dgeFz             dm                         Zdn Zdo Zeja        b                    dp e5                      eja        b                    dqeAege8r          eja        b                    ds edKt          ge8r          du                                     Zeja        b                    dv e6d w                    dx             Zeja        b                    dv ee2                    dy             Zeja        b                    dzeze{eeeef          eja        b                    d4eF          d{                         Zd| Zeja        b                    d}eef          d~             Zd Zeja        b                    didde^g          d             Zeja        b                    diddje]g          d             Zeja        b                    deeg          d             Zeja        b                    dcddHg          eja        b                    deeg          d                         Zd Zd Zeja        b                    dddHgdHdgg          eja        b                    d'eDeEz   eFz   eGz   eHz             d                         Zd Zeja        b                    deeg          eja        b                    dddiedfddiedfddiedfg          d                         Zeja        b                    deeg          d             Zd Zeja                            d          d             Zeja        b                    dg d          eja        b                    ddd g          eja        b                    d4eF          d                                     Zeja        b                    dg d          eja        b                    d4eF          d                         Zeja        b                    ddd g          eja        b                    d4eF          d                         Zeja        b                    dd dg          eja        b                    dd ej        d          g          eja        b                    dej        geFz             eja        b                    dg d          d                                                 Zeja        b                    dg d          d             Zd Zeja        b                    dg d          eja        b                    dG ed>                    d                         Zd Zeja        b                    dei fedcdifedcdHifg          d             Zeja        b                    dddg          eja        b                    ddd g          eja        b                    d(g d          d                                     Zeja        b                    ddd g          eja        b                    d(g d          d                         Zeja        b                    dg d          d             Zeja        b                    d(g d          d             Zeja        b                    d(g d          d             Zd Zeja        b                    dd dg          eja        b                    d'dgeFz             eja        b                    dddg          eja        b                    deIdgz             d                                                 Zd Zd Zeja        b                    dd dg          eja        b                    dd dg          eja        b                    dd>dg          d                                     Zd Zd Zeja        b                    deeg           e	d          d                         Zeja        b                    d e            ef e            efg           e	d          dĄ                         ZdS )    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)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)r8   r;   )r8   r9   r:   r;   r<      c                 2    t          j        | |k              S N)npmeany_testy_predkwargss      e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/linear_model/tests/test_ridge.py_accuracy_callablerG   X   s    76V#$$$    c                 6    | |z
  dz                                   S )N   )rA   )rC   rD   s     rF   _mean_squared_error_callablerK   \   s    f_"((***rH   longwide)paramsc                    |j         dk    rd\  }}nd\  }}t          ||          }t          j                            |           }t          ||||          }d|dddf<   t          j        |          \  }}}	t          j        |dk              sJ |ddd|f         |dd|df         }}
|	d|ddf         |	|dddf         }}|j         dk    r@|	                    d	d
|          }||z  }|||
                    ||z
            dz  z  z  }nB|	                    d	d
|          }|j        t          j        d|z            z  |
j        z  |z  }d}|t          j        |          z  }d|d<   t          j        |j        |z  |z   |j        |z            }|||z  z
  }|||z  z
  }t          j                            |          t          j                            |          k     sJ ||||fS )aD  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.
    rL   )      )rQ   rP   )	n_samples
n_featureseffective_rankrandom_state   NMbP?
   lowhighsizer^   rJ   r   )rW   rW   )paramminr@   randomRandomStater	   r   r7   alluniformnormalTdiagidentitysolvenorm)global_random_seedrequestrR   rS   krngXUsVtU1U2Vt1_coef_olsyalphad
coef_ridgeR_OLSR_Ridges                        rF   ols_ridge_datasetr   `   s,   > } %	:: %	:Iz""A
)

 2
3
3C
1SV	 	 	A AaaaeHz!}}HAq"6!d(qqq"1"uXqABBxBAAAY122qqq5	C};;3Rj;AAL	R#**)j"8*99Q>>>KKCbyK995271q5>>)BD014 EJ'''AAfIacAgk13733J HE!j. G9>>%  29>>'#:#:::::a:%%rH   solverfit_interceptTFc                    |\  }}}}d}t          |d| | dv rdnd|          }	|t          j        |          z
  }
|||z  z
  }dt          j        |dz            t          j        |
dz            z  z
  }t	          di |	}|d	d	d	d
f         }|r	|d
         }n2||                    d          z
  }||                                z
  }d}|                    ||           |d	d
         }|j        t          j        |          k    sJ t          |j
        |           |                    ||          t          j        |          k    sJ t	          di |	                    ||t          j        |j        d                             }|j        t          j        |          k    sJ t          |j
        |           |                    ||          t          j        |          k    sJ |j        | k    sJ d	S )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瞯<绽|=rz   r   r   tolrU   rV   rJ   NrW   r   axissample_weight )dictr@   rA   sumr   fit
intercept_pytestapproxr*   coef_scoreonesshapesolver_)r   r   r   rl   rp   ry   rw   coefrz   rN   res_null	res_RidgeR2_Ridgemodel	intercepts                  rF   test_ridge_regressionr      s    &MAq!TE..EEE'  F 271::~HAHI26)Q,''"&1*=*===HOOFOOE	!!!SbS&	A H		AL		IIaOOO9Dv}Y777777EK&&&;;q!h 7 77777 OOFOO1BGAGAJ4G4GHHEv}Y777777EK&&&;;q!h 7 77777=F""""""rH   c                 n   |\  }}}}|j         \  }}	d}
t          |
dz  || | dv rdnd|          }|ddddf         }d	t          j        ||fd
          z  }t          j                            |          t          ||	d
z
            k    sJ |r	|d         }n2||                    d          z
  }||                                z
  }d}|                    ||           |dd         }|j	        t          j        |          k    sJ t          |j        t          j        ||f         d           dS )a  Test 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   rJ   r   r   r   r   NrW         ?rV   r   r   :0yE>atol)r   r   r@   concatenater   matrix_rankra   rA   r   r   r   r   r*   r   r_r   r   r   rl   rp   ry   rw   r   rR   rS   rz   r   r   s                rF    test_ridge_regression_hstacked_Xr      s_    &MAq!TGIzEai#..EEE'  E 	
!!!SbS&	AbnaV!,,,,A9  ##s9j1n'E'EEEEE H		AL		IIaOOO9Dv}Y777777 EKtTz!2>>>>>>rH   c                 f   |\  }}}}|j         \  }}	d}
t          d|
z  || | dv rdnd|          }|ddddf         }t          j        ||fd	
          }t          j                            |          t          ||	          k    sJ t          j        ||f         }|r	|d         }n2||                    d	
          z
  }||                                z
  }d	}|	                    ||           |dd         }|j
        t          j        |          k    sJ t          |j        |d           dS )aJ  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   rJ   r   r   r   r   NrW   r   r   r   r   )r   r   r@   r   r   r   ra   r   rA   r   r   r   r   r*   r   r   s                rF    test_ridge_regression_vstacked_Xr      sZ    &MAq!TGIzE%i#..EEE'  E 	
!!!SbS&	A
1vA&&&A9  ##s9j'A'AAAAA
adA H		AL		IIaOOO9Dv}Y777777 EKD111111rH   c                 N   |\  }}}}|j         \  }}	d}
t          |
|| | dv rdnd|          }t          d
i |}|r!|ddddf         }|d         }|dd         }nd}|                    ||           ||	k    s|s6|j        t          j        |          k    sJ t          |j        |           dS t          |	                    |          |           t          ||z  |z   |           t          j                            t          j        |j        |j        f                   t          j                            t          j        ||f                   k    sJ t          j        d	           |j        t          j        |          k    sJ t          |j        |           dS )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   NrW   1Ridge does not provide the minimum norm solution.reasonr   )r   r   r   r   r   r   r   r*   r   predictr@   r   rk   r   xfail)r   r   r   rl   rp   ry   r   rw   rR   rS   rz   rN   r   r   s                 rF   !test_ridge_regression_unpenalizedr   '  s    &MAq$GIzE#..EEE'  F OOFOOE  aaa"fIH	CRCy		IIaOOO
 :]6=#;#;;;;;T***** 	a((!,,,D9,a000y~~beE$4ek$ABCCbinnE)T/"G
 G
 
 
 
 
 	OPPPP6=#;#;;;;;T*****rH   c                 "   |\  }}}}|j         \  }}	d}
t          |
|| | dv rdnd|          }|r!|ddddf         }|d         }|dd         }nd}dt          j        ||fd	
          z  }t          j                            |          t          ||	          k    sJ |                    ||           ||	k    s|sa|j        t          j
        |          k    sJ | dk    rt          j                     t          |j        t          j        ||f                    dS t          |                    |          |           t          j                            t          j        |j        |j        f                   t          j                            t          j        |||f                   k    sJ t          j        d           |j        t          j
        |          k    sJ t          |j        t          j        ||f                    dS )a^  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   NrW   r   rV   r   r9   r   r   )r   r   r@   r   r   r   ra   r   r   r   r   skipr*   r   r   r   rk   r   r   r   r   rl   rp   ry   r   rw   rR   rS   rz   r   r   s                rF   ,test_ridge_regression_unpenalized_hstacked_Xr   ^  s    &MAq$GIzE#..EEE'  E  aaa"fIH	CRCy	bnaV!,,,,A9  ##s9j'A'AAAAA	IIaOOO:]6=#;#;;;;;ZKMMMRU4:%677777
 	a((!,,,y~~beE$4ek$ABCCbinnE)T4'(G
 G
 
 
 
 
 	OPPPP6=#;#;;;;;RU4:%677777rH   c                    |\  }}}}|j         \  }}	d}
t          |
|| | dv rdnd|          }|r!|ddddf         }|d         }|dd         }nd}t          j        ||fd          }t          j                            |          t          ||	          k    sJ t          j        ||f         }|                    ||           ||	k    s|s6|j	        t          j        |          k    sJ t          |j        |           dS t          |                    |          |           t          j                            t          j        |j	        |j        f                   t          j                            t          j        ||f                   k    sJ t          j        d	
           |j	        t          j        |          k    sJ t          |j        |           dS )a  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   NrW   r   r   r   )r   r   r@   r   r   r   ra   r   r   r   r   r   r*   r   r   rk   r   r   s                rF   ,test_ridge_regression_unpenalized_vstacked_Xr     s    &MAq$GIzE#..EEE'  E  aaa"fIH	CRCy	
1vA&&&A9  ##s9j'A'AAAAA
adA	IIaOOO:]6=#;#;;;;;T*****
 	a((!,,,y~~beE$4ek$ABCCbinnE)T/"G
 G
 
 
 
 
 	OPPPP6=#;#;;;;;T*****rH   sparse_containerrz   r   {Gz?c                    |=|r| t           vrt          j                     n|s| t          vrt          j                     |\  }}}}	|j        \  }
}t
                              dd|
          }t          ||| | dv rdndd|	          }|dddd
f         }t          j	        ||fd          }t          j
        ||f         }t          j
        |d|z
  f         |z  }|r	|	d
         }n2||                    d          z
  }||                                z
  }d}| ||          }|                    |||           |	dd
         }	|j        t          j        |          k    sJ t          |j        |	           dS )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   rV   r[   r   r   r   順 )rz   r   r   r   max_iterrU   rW   r   r   )SPARSE_SOLVERS_WITH_INTERCEPTr   r    SPARSE_SOLVERS_WITHOUT_INTERCEPTr   ro   re   r   r@   r   r   rA   r   r   r   r*   r   )r   r   r   rz   r   rl   rp   ry   rw   r   rR   rS   swr   r   s                  rF   $test_ridge_regression_sample_weightsr     s   $ # 	V+HHHKMMMM 	61Q#Q#QKMMM%MAq!TGIz		3	3B#..EEE'  E 	
!!!SbS&	A
1vA&&&A
adA	r1r6z	U	"B H		AL	#Q	IIa"I%%%9Dv}Y777777EK&&&&&rH   c                  B   t                               dd          } t          t          | dg          }t	          j        t          t          j                  }t          || dg          }t	          j        t          j        |          j        }t          ||           d S )NrW   rV   r   rz   )	
y_diabetesreshaper   
X_diabetesr@   dotrg   r   r,   )ry   r   K	dual_coefcoef2s        rF   test_primal_dual_relationshipr     s    2q!!A:q777D
z:<((A&q!D6:::IF:<++-EdE*****rH   c            
      2   t           j                            d          } |                     d          }|                     dd          }d}t	          j        t          |          5  t          ||dddd d	
           d d d            d S # 1 swxY w Y   d S )Nr      rZ   z3sparse_cg did not converge after [0-9]+ iterations.matchr   r8           rV   )rz   r   r   r   verbose)r@   rb   rc   randnr   warnsr   r   )ro   ry   rp   warning_messages       rF   &test_ridge_regression_convergence_failr     s    
)


"
"C		!A		!RAPO	(	@	@	@ 
 
qKS4QR	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   (BBBc                      t           j                            d          } d\  }}|                     ||          }|                     |          }|d d t           j        f         }t           j        |d|z   f         }t                      }|                    ||           |j        j	        |fk    sJ |j
        j	        dk    sJ t          |j        t           j                  sJ t          |j
        t                    sJ |                    ||           |j        j	        |fk    sJ |j
        j	        dk    sJ t          |j        t           j                  sJ t          |j
        t           j                  sJ |                    ||           |j        j	        d|fk    sJ |j
        j	        dk    sJ t          |j        t           j                  sJ t          |j
        t           j                  sJ d S )Nr   r   rZ   rV   r   rV   rJ   )rJ   )r@   rb   rc   r   newaxisc_r   r   r   r   r   
isinstancendarrayfloat)ro   rR   rS   rp   ry   Y1Yridges           rF   test_ridge_shapes_typer     s   
)


"
"C!Iz		)Z((A		)A	
111bj=	B
aQhAGGE	IIaOOO;----!R''''ek2:.....e&.....	IIa;----!T))))ek2:.....e&
33333	IIaOOO;J////!T))))ek2:.....e&
3333333rH   c                     t           j                            d          } d\  }}|                     ||          }|                     |          }t           j        |d|z   f         }t                      }|                    ||           |j        }|                    ||           t          |j        d         |           t          |j        d         |dz              d S )Nr   r   r   rV   )	r@   rb   rc   r   r   r   r   r   r+   )ro   rR   rS   rp   ry   r   r   r   s           rF   test_ridge_interceptr   4  s    
)


"
"C!Iz		)Z((A		)A
aqjAGGE	IIaOOO I	IIaOOO(+Y777(+Y_=====rH   c                     t           j                            d          } d\  }}|                     |          }|                     ||          }t	          dd          }t          d          }|                    ||           |                    ||           t          |j        |j                   |                    ||           |                    ||           t          |j        |j                   d S )Nr   )r   rQ   r   Frz   r   r   )	r@   rb   rc   r   r   r   r   r+   r   )ro   rR   rS   ry   rp   r   olss          rF   test_ridge_vs_lstsqr   F  s     )


"
"C Iz		)A		)Z((A5111E

/
/
/C	IIaOOOGGAqMMMSY///	IIaOOOGGAqMMMSY/////rH   c                  N  	
 t           j                            d          } d\  }}}|                     ||          	|                     ||          t          j        |          
t          j        	fdt          
j                  D                       }	
fddD             }|D ]}t          ||           t          
d d                   }d}t          j        t          |	          5  |                    	           d d d            d S # 1 swxY w Y   d S )
N*   )   rZ   r   c                 j    g | ]/\  }}t          |d                               |          j        0S )r9   rz   r   r   r   r   ).0rz   targetrp   s      rF   
<listcomp>z3test_ridge_individual_penalties.<locals>.<listcomp>g  sM     	
 	
 	
v j11155a@@F	
 	
 	
rH   c                 f    g | ]-}t          |d                                         j        .S )-q=)rz   r   r   r   )r   r   rp   	penaltiesry   s     rF   r   z3test_ridge_individual_penalties.<locals>.<listcomp>m  sK        	If%888<<QBBH  rH   )r7   r8   r:   r9   r;   r<   rW   r   zCNumber of targets and number of penalties do not correspond: 4 != 5r   )r@   rb   rc   r   arangearrayziprg   r,   r   r   raises
ValueErrorr   )ro   rR   rS   	n_targetscoef_choleskycoefs_indiv_pencoef_indiv_penr   err_msgrp   r   ry   s            @@@rF   test_ridge_individual_penaltiesr   [  s    )


#
#C'0$Iz9		)Z((A		)Y''A	)$$IH	
 	
 	
 	
!$Y!4!4	
 	
 	
 M     M  O * A A!-@@@@ 	#2#'''ESG	z	1	1	1  		!Q                 s   6DD!Dn_col)r   r   )   csr_containerc                    t           j                            d          }|                    dd          }|                    d          }|                    t	          |                    } |j        dg| R  } |j        dg| R  }t           ||          ||          }t          j        ||d d d f         |z  z
  |d d d f         g          }	t          |	                    |          |                    |                     t          |	j	                            |          |j	                            |                     d S )Nr         	   )
r@   rb   rc   r   lenr   hstackr*   r   rg   )
r   r  ro   rp   X_msqrt_swr   Aoperatorreference_operators
             rF   test_X_CenterStackOpr  {  s7    )


"
"C		"aA
))A,,CiiAG	"uA	!eAa 0 0#w??HA4(83(>$>4@P#QRR&**1--x||A???&(,,Q//1B1BCCCCCrH   r   ))rZ   rV   )   r  )r     )rJ   rJ   )r   r   uniform_weightsc                 D   t           j                            d          } |j        |  }|r t          j        |j        d                   }n|                    d| d                   }t          j        |          }t          j        |d|          }||z
  |d d d f         z  }|	                    |j
                  }	 |||d d d f         z            }
t          d          }|                    |
|          \  }}t          ||           t          |	|           d S Nr   rV   )r   weightsTr   )r@   rb   rc   r   r   r   	chisquaresqrtaverager   rg   r   _compute_gramr*   )r   r  r  ro   rp   r   r
  X_mean
X_centered	true_gramX_sparsegcvcomputed_gramcomputed_means                 rF   test_compute_gramr     s    )


"
"C	5A (WQWQZ  ]]1eAh''gbkkGZ2...Ff*4 00Jz|,,I}QD!1122H
$
'
'
'C#&#4#4Xw#G#G M=FM***I}-----rH   c                 D   t           j                            d          } |j        |  }|r t          j        |j        d                   }n|                    d| d                   }t          j        |          }t          j        |d|          }||z
  |d d d f         z  }|j	        
                    |          }	 |||d d d f         z            }
t          d          }|                    |
|          \  }}t          ||           t          |	|           d S r  )r@   rb   rc   r   r   r   r  r  r  rg   r   r   _compute_covariancer*   )r   r  r  ro   rp   r   r
  r  r  true_covariancer  r  computed_covr  s                 rF   test_compute_covariancer%    s!    )


"
"C	5A (WQWQZ  ]]1eAh''gbkkGZ2...Ff*4 00J l&&z22O}QD!1122H
$
'
'
'C"%"9"9(G"L"LL-FM***O\22222rH   d   r   rZ   rV         *@      >@c                 &   t          | ||||||d|	  	        \  }}}|dk    rt          j        |g          }||z  }t          j                            |                              d||j                  dk    }|                                }d|| <   d||<   ||                    |          z  }|
rG||                    t          j	        |          dz   |z
            z  }t          j	        |          dz   }|dk    r|d         }|	r|||fS ||fS )NT)	rR   rS   n_informativer   biasnoiseshuffler   rU   rV   r   r   )
r   r@   asarrayrb   rc   binomialr   copyr   abs)rR   rS   proportion_nonzeror*  r   r+  X_offsetr,  r-  r   positiverU   rp   ry   cmask	removed_Xs                    rF   _make_sparse_offset_regressionr8    s6    #!
 
 
GAq! QJsOOMA
	l++44Q8JAGTTWXX 	 IAteHIdOq		A 	QUU26!99q=1$%%%F1IIMQaD !Qwa4KrH   zsolver, sparse_containerc              #   0   K   | ]\  }}||dv ||fV  d S )N)r8   ridgecvr   )r   r   r   s      rF   	<genexpr>r;    sO        &V% #v1I'I'I 
!"
 (J'I'I'I rH   )r9   r;   r8   r:   r<   r:  z"n_samples,dtype,proportion_nonzero))r   float32皙?)(   r<  r   )r   float64皙?seedr  c                     d}|dk    rdnd}t          dd||||          \  }}	t          |          }t          d|	                              ||	          }
|                    |d
          }|	                    |d
          }	| ||          }| dk    rt          |g          }nt          | d|          }|                    ||	           t          |j        |
j        dd           t          |j        |
j        dd           d S )Nr   g?g      I@g     @@rZ      )r+  rS   r2  r,  rU   rR   r7   )r   rz   F)r0  r:  alphasr   )r   r   rz   rX   r   rtol)	r8  r"   r   r   astyper   r*   r   r   )r   r2  rR   dtyper   rA  rz   r,  rp   ry   	svd_ridger   s               rF   test_solver_consistencyrK    s7   & E&,,DD%E)-  DAq 	QAU%00044Q::I	U##A	U##A#Qw'''Ve<<<	IIaOOOEKt$GGGGE$i&:DQQQQQQrH   gcv_moder7   eigenX_containerX_shape)r  r  )r  r   zy_shape, noise))r  r   )r  rV   r(  )r  r       b@c           	         |\  }}t          |          dk    r|d         nd}t          |||dd|d          \  }	}
|
                    |          }
g d}t          |||d	
          }t          | ||          }|                    |	|
            ||	          }|                    ||
           |j        t          j        |j                  k    sJ t          |j	        |j	        d           t          |j
        |j
        d           d S )NrJ   rW   rV   r   Fr   rR   rS   r   rU   r-  r,  r*  rX   r=  r         $@g     @@neg_mean_squared_errorcvr   rE  scoring)rL  r   rE  rX   rG  )r  r8  r   r   r   alpha_r   r   r*   r   r   )rL  rN  rO  y_shaper   r,  rR   rS   r   rp   ry   rE  	loo_ridge	gcv_ridgeX_gcvs                  rF   test_ridge_gcv_vs_ridge_loo_cvrb    sG    $Iz"7||q00aI)  DAq 	
		'A(((F#(	  I #  I MM!QKNNEMM%v}Y-=>>>>>>IOY_4@@@@I()*>TJJJJJJrH   c            	         d} d\  }}d}t          |||dddd          \  }}g d}t          |d	|| 
          }t          d	||           }|                    ||           |                    ||           |j        t	          j        |j                  k    sJ d|j        d|j                    t          |j        |j        d           t          |j        |j        d           d S )Nexplained_variance)rZ   r   rV   r   Fr   rU  rV  TrY  )r   rE  r[  zgcv_ridge.alpha_=z, loo_ridge.alpha_=rX   r\  )	r8  r   r   r]  r   r   r*   r   r   )	r[  rR   rS   r   rp   ry   rE  r_  r`  s	            rF   test_ridge_loo_cv_asym_scoringre  E  s8   "G!IzI)  DAq )((FD  I d67KKKIMM!QMM!Qv}      2)
22y/22   IOY_4@@@@I()*>TJJJJJJrH   rS   r  r   zy_shape, fit_intercept, noise))rP  Tr   )rQ  Tg      4@)rR  TrS  )rR  Fr(  c                    g d}t           j                            d          }t          |          dk    r|d         nd}t	          d||dd|          \  }	}
|
                    |          }
d	|                    t          |	                    z  }||                                z
  dz                       t                    }t          j
        t          j        |	j        d                   |          |                    t                    }|	         |
         }}t          |	j        d         
          }|                    ||          }t!          ||d|          }|                    ||           t%          |j        |          }|                    ||          }t)          ||||          }|j        |j        k    r|                    |j                  }||z
  dz  fdt          j        |	j        d                   D             t          j                   ||	          }t!          |d| |          }|                    ||
|           t          |          dk    r-|j        d d d d |                    |j                  f         }n)|j        d d |                    |j                  f         }|j        t1          j        |j                  k    sJ t5          |d           t5          |j        |j        d           t5          |j        |j        d           d S )NrV  r   rJ   rW   rV   r  F)rR   rS   r   rU   r-  r,  r  )n_splits)groupsrX  )rE  rZ  r[  r   r   rZ  c                 P    g | ]"}t          j        |k             d           #S )r   r   )r@   r   )r   iindiceskfold_errorss     rF   r   z1test_ridge_gcv_sample_weights.<locals>.<listcomp>  s>       78|GqL)222  rH   T)rE  store_cv_resultsrL  r   r   rX   r\  )r@   rb   rc   r  r8  r   r   ra   rH  intrepeatr   r   r   r   splitr   r   r   r]  r!   r.  cv_results_indexr   r   r*   r   r   )rL  rN  r   rS   r^  r,  rE  ro   r   rp   ry   r   X_tiledy_tiledrZ  splitskfold	ridge_regpredictionsra  r`  
gcv_errorsrl  rm  s                         @@rF   test_ridge_gcv_sample_weightsr{  e  sG    )((F
)


"
"C"7||q00aI)  DAq 	
		'A		#a&&)))M"]%6%6%8%881<DDSIIMi	!'!*--}==G!((//Mz1W:WG	QWQZ	(	(	(BXXgwwX77F(#	  E 
IIgwELFFFIXXgwwX77F#IwFKKKKGM))!))'-88k)a/L    <>Iagaj<Q<Q  L :l++LKNNE#	  I MM%-M888
7||q*111aaael1K1K+KL

*111fll5<.H.H+HI
<6=)9::::::J48888IOU[t<<<<I(%*:FFFFFFrH   z2mode, mode_n_greater_than_p, mode_p_greater_than_n))Nr7   rM  )autor7   rM  )rM  rM  rM  )r7   r7   r7   c                     t          dd          \  }}|  | |          }t          ||          |k    sJ t          |j        |          |k    sJ d S )Nr   rJ   )rR   rS   )r   r   rg   )r   modemode_n_greater_than_pmode_p_greater_than_nrp   rw   s         rF   test_check_gcv_mode_choicer    sp     Q1555DAq#Q1d##'<<<<<13%%)>>>>>>>rH   c                 <   t           j        d         }g }| 
t           d}}n | t                     d}}t          |          }|                    |t                     |j        }|                    |           t          }t          t          d          }t          d|          }	  ||	j                  |t                     |	j        t          j        |          k    sJ d }
t          |
          }t          d|          }  ||j                  |t                     |j        t          j        |          k    sJ t          d          }t          d|          }|                    |t                     |j        t          j        |          k    sJ | N|                    |t          t          j        |          	           |j        t          j        |          k    sJ t          j        t          t          f          j        }|                    ||           |                    |          }|                    |t                     |                    |          }t'          t          j        ||f          j        |d
           |S )Nr   TFr   )greater_is_better)r   r[  c                 $    t          | |           S r?   )r   )xry   s     rF   funcz_test_ridge_loo.<locals>.func  s    "1a((((rH   rX  r   h㈵>r\  )r   r   r   r   r   r]  appendr.   r   r   r   r   r   r   r@   r   vstackrg   r   r*   )r   rR   retrp   r   	ridge_gcvr]  fr[  
ridge_gcv2r  
ridge_gcv3scorer
ridge_gcv4r   Y_predrD   s                    rF   _test_ridge_loor    s|    #I
C%t=++J77=666I MM!Z   FJJv 	A,FFFGug>>>JAAjna$$$f 5 55555) ) ) $Gug>>>JAAjna$$$f 5 55555 011Fuf===JNN1j!!!f 5 55555 a2793E3EFFF6=#8#88888 		:z*++-AMM!Qq!!FMM!Z   q!!FBIvv.//16EEEEJrH   c                 b   | t           n | t                     }t                      }|                    |t                     |                    |           t          |j        j                  dk    sJ t          |j	                  t          j        u sJ t          d          }|                    |           |                    |t                     |                    |           t          |j        j                  dk    sJ t          |j	                  t          j        u sJ d S )NrV   r   ri  )r   r   r   r   r   r  r   r   typer   r@   r?  r   
set_params)r   rp   ridge_cvrZ  s       rF   _test_ridge_cvr    s   &.

4D4DZ4P4PAyyHLLJQx~#$$))))#$$
2222	qB2LLJQx~#$$))))#$$
222222rH   zridge, make_datasetrn  c                 v     |dd          \  }}|                      ||           t          | d          rJ d S )N   r   rR   rU   rr  )r   hasattr)r   make_datasetrp   ry   s       rF   $test_ridge_gcv_cv_results_not_storedr    sI     <!"555DAq	IIaOOOum,,,,,,,rH   rZ  c                      |dd          \  }}|                      d|           |                     ||           t          | d          sJ t          | j        t
                    sJ d S )Nr  r   r  F)rn  rZ  best_score_)r  r   r  r   r  r   )r   r  rZ  rp   ry   s        rF   test_ridge_best_scorer    s{     <!"555DAq	e333	IIaOOO5-(((((e'///////rH   c            	      F  	 t           j                            d          } d\  }}}|                     ||          }t          j        |d d dgf         t          j        d|f                    t          j        |d d dgf         dt          j        d|f          z            z   t          j        |d d dgf         dt          j        d|f          z            z   |                     ||          z   d		fd	|j        D             }t          	d
                              |          }t          ||j
                   t          t          |j
                                      |          j        |j                   t          	d
d
                              |          }|j
        j        |fk    sJ |j        j        |fk    sJ |j        j        |t#          	          |fk    sJ t          dd
d
                              |          }|j
        j        |fk    sJ |j        j        |fk    sJ |j        j        ||dfk    sJ t          	d
d
                              |d d df                   }t          j        |j
                  sJ t          j        |j                  sJ |j        j        |t#          	          fk    sJ t          	d
d                              |          }t          ||j
                   t          t          |j
                                      |          j        |j                   t          	t'                      d
          }d}t)          j        t,          |          5  |                    |           d d d            n# 1 swxY w Y   t          	dd
          }t)          j        t,          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nr   )r   r   r  r   rV   g?rJ   rX   )rV   r&    c                 b    g | ]+}t                                         |          j        ,S )rD  )r   r   r]  )r   r   rp   rE  s     rF   r   z6test_ridge_cv_individual_penalties.<locals>.<listcomp>=  s7    UUUvgV,,,00F;;BUUUrH   T)rE  alpha_per_targetr   )rE  r  rn  r2)rE  r  r[  )rE  rZ  r  z3cv!=None and alpha_per_target=True are incompatibler   r  )r@   rb   rc   r   r   r   rg   r   r   r-   r]  r,   r   r   r   r  rr  r  isscalarr    r   r   r   )
ro   rR   rS   r   ry   optimal_alphasr  msgrp   rE  s
           @@rF   "test_ridge_cv_individual_penaltiesr  *  s    )


#
#C (0$Iz9		)Y''A
qQCy"'1j/2233
&111qc6D27Az?#;#;;
<
<	=
&111qc6EBGQ
O$<$<<
=
=	> ))Iz
*
*	+  F VUUUUQRQTUUUN ft<<<@@AFFH~x777 HO$$$((A..4hn  
 ftdSSSWW	1 H ? YL0000%)5555%)S[[))LLLLL a$NNNRRSTVWXXH? YL0000%)5555%)Y)BBBBB ftdSSSWW	1QQQT7 H ;x''''';x+,,,,,%)S[[)AAAAA ftTJJJNNqRSTTH~x777HO$$$((A..4hn   fNNNH
?C	z	-	-	-  Q              fTBBBH	z	-	-	-  Q                 s$   N::N>N>2PPPc                     | t           n | t                     }t          d          }|                    |t                     t	          j        |                    |t                    d          S )NFr   r   )r   r   r   r   r@   roundr   )r   rp   r   s      rF   _test_ridge_diabetesr  q  s`    &.

4D4DZ4P4PA&&&E	IIa8EKK:..222rH   c                    | t           n | t                     }t          j        t          t          f          j        }t           j        d         }t          d          }|                    ||           |j        j        d|fk    sJ |	                    |          }|                    |t                     |	                    |          }t          t          j        ||f          j        |d           d S )NrV   Fr   rJ   r  decimal)r   r@   r  r   rg   r   r   r   r   r   r,   )r   rp   r   rS   r   r  rD   s          rF   _test_multi_ridge_diabetesr  x  s    &.

4D4DZ4P4PA
	:z*++-A!!$J&&&E	IIaOOO;J////]]1F	IIa]]1Fbi(899;VQOOOOOOrH   c                    t          j        t                    j        d         }t          j        d         }| t          n | t                    }t                      t                      fD ]i}|                    |t                     |j        j        ||fk    sJ |	                    |          }t          j
        t          |k              dk    sJ jt          d          }t          |          }|                    |t                     |	                    |          }t          j
        t          |k              dk    sJ d S )Nr   rV   gHzG?r   ri  g?)r@   uniquey_irisr   X_irisr   r   r   r   r   rA   r   )r   	n_classesrS   rp   regrD   rZ  s          rF   _test_ridge_classifiersr    s#   	&!!'*IaJ"*0@0@0H0HA!!#4#6#67 0 06y9j"99999Qwv'((4/////	qB
r
"
"
"CGGAv[[^^F76V#$$++++++rH   r[  accuracyr   c                     | t           n | t                     }t          |          rt          |          n|}t          ||          }|                    |t
                                        |           d S )N)r[  rZ  )r  callabler   r   r   r  r   )r   r[  rZ  rp   scoring_clfs         rF   "test_ridge_classifier_with_scoringr    sw     #*0@0@0H0HA'/'8'8E{7###gH
H
4
4
4CGGAvq!!!!!rH   c                 h   d }| t           n | t                     }t          j        ddd          }t          |t	          |          |          }|                    |t                     |j        t          j	        d          k    sJ |j
        t          j	        |d                   k    sJ d S )	Nc                     dS )NzG?r   rB   s      rF   _dummy_scorez:test_ridge_regression_custom_scoring.<locals>._dummy_score  s    trH   rJ   r   )num)rE  r[  rZ  r  r   )r  r@   logspacer   r   r   r  r  r   r   r]  )r   rZ  r  rp   rE  r  s         rF   $test_ridge_regression_custom_scoringr    s       #*0@0@0H0HA[QA&&&F
6;|3L3LQS
T
T
TCGGAv?fmD111111:vay11111111rH   c                 d   | t           n | t                     }t          dd          }|                    |t                     |                    |t                    }t          dd          }|                    |t                     |                    |t                    }||k    sJ d S )Nr  F)r   r   rX   )r   r   r   r   r   )r   rp   r   r   ridge2score2s         rF   _test_tolerancer    s    &.

4D4DZ4P4PAd%000E	IIaKK:&&Et5111F
JJq*\\!Z((FF??????rH   c                    t          ||          }t                              |          }t                              |          }|                    ||          }|                    ||          }	|                    ||           |j        }
|j        }t          d          5  t          |                              ||	          }|j        }|j
        dk    sJ |j        |j        k    sJ t          t          ||          |
t          |                     |j        }|j
        dk    sJ |j        |j        k    sJ t          t          ||          |t          |                     d d d            d S # 1 swxY w Y   d S )NdeviceTarray_api_dispatch)rQ   )xpr   r   )r/   r  rH  r  r.  r   r   r   r   r   r   rI  r*   r&   r%   )name	estimatorarray_namespacer  
dtype_namer  	X_iris_np	y_iris_np	X_iris_xp	y_iris_xpcoef_npintercept_npestimator_xpcoef_xpintercept_xps                  rF   check_array_api_attributesr    s   	ov	6	6Bj))Ij))I

9V
44I

9V
44IMM)Y'''oG'L	4	0	0	0 
 
Y''++IyAA$}$$$$}	////g"---
++	
 	
 	
 	

 $.!R''''!Y_4444lr222
++	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   'CF  FFz#array_namespace, device, dtype_namecheck)idsr  r   c                 >    | j         j        } ||| |||           d S )N)r  r  )	__class____name__)r  r  r  r  r  r  s         rF   test_ridge_array_api_compliancer    s0      'D	E$	?6jQQQQQQrH   r  )include_numpy_namespacesc                 V   t          | d           }|                    t          d d                   }|                    t          d d                   }t          j        d         d         j        }|ddhz
  D ]}t	          ||dk              }d	|j         d
| d}t          j	        t          |          5  t          d          5  |                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	          dd          }d|j         d}t          j	        t          |          5  t          d          5  |                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t	                      }d|j         d}t          j        t          |          5  t          d          5  |                    ||           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r   r   r   r|  r7   lbfgsr   r4  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.)r/   r.  r  r  r   _parameter_constraintsoptionsr  r   r   r   r   r   r   UserWarning)r  r  r  r  available_solversr   r   expected_msgs           rF   6test_array_api_error_and_warnings_for_solver_parameterr    s    
od	;	;	;B

6"1":&&I

6"1":&&I4X>qAI#vuo5 	0 	0Vf.?@@@-r{ - -"(- - - 	
 ]:\::: 	0 	04888 0 0		)Y///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 $///E	.+-;	. 	. 	.  
z	6	6	6 , ,t444 	, 	,IIi+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , , GGE	D 	D 	D 	D  
k	6	6	6 , ,t444 	, 	,IIi+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , , , , ,s   :DC."D.C22D5C26DD		D		FE<0F<F 	 FF 	FFFH#H:HH
	
HH
	HH"%H"c                 v   t          | d           }|                    t          d d                   }|                    t          d d                   }t	                      }d}t          j                    5  t          j        d|t                     t          d          5  |
                    ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d          5  t	          dd	          
                    ||           d d d            d S # 1 swxY w Y   d S )
Nr  r   zkResults might be different than when Array API dispatch is disabled, or when a numpy-like namespace is usederror)messagecategoryTr  r|  r  )r/   r.  r  r  r   warningscatch_warningsfilterwarningsr  r   r   )r  r  r  r  r   r  s         rF   )test_array_api_numpy_namespace_no_warningr  +  s   	od	;	;	;B

6"1":&&I

6"1":&&IGGE	; 
 
	 	"	" , ,TTTTt444 	, 	,IIi+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,, , , , , , , , , , , , , , , 
4	0	0	0 F FVd+++//	9EEEF F F F F F F F F F F F F F F F F FsH   9-C &C	=C 	C	C C	C  C$'C$;&D..D25D2	test_funcc                 f     | d           } | |          }||t          ||d           d S d S d S )Nr  r  )r,   )r  r  	ret_dense
ret_sparses       rF   test_dense_sparser  C  sT     	$I=))J!7!)ZCCCCCC !7!7rH   c                     t          j        ddgddgddgddgddgg          } g d}t          d           }|                    | |           t	          |                    ddgg          t          j        d	g                     t          d	d
i          }|                    | |           t	          |                    ddgg          t          j        dg                     t          d          }|                    | |           t	          |                    ddgg          t          j        d	g                     t          j        ddgddgddgddgg          } g d}t          d           }|                    | |           t          d          }|                    | |           t          |j                  dk    sJ t          |j	        |j	                   t          |j
        |j
                   d S )N      r   皙r   r   rV   rV   rV   rW   rW   class_weightr@  rV   rX   rW   balanced)rV   rV   rW   rW   rJ   )r@   r   r   r   r-   r   r  classes_r,   r   r   )rp   ry   r  regas       rF   test_class_weightsr  Y  s   
4,q	D$<#sc3ZPQQAA
t
,
,
,CGGAqMMMs{{S$K=1128QC==AAA 5z
2
2
2CGGAqMMM s{{S$K=1128RD>>BBB z
2
2
2CGGAqMMMs{{S$K=1128QC==AAA 	4,q	D$<#sDEEAA
t
,
,
,CGGAqMMM
333DHHQNNNt}""""ci444cndo>>>>>rH   r  c                     |             }|                     t          j        t          j                    | d          }|                     t          j        t          j                   t	          |j        |j                   t          j        t          j        j                  }|t          j        dk    xx         dz  cc<   dddd} |             }|                     t          j        t          j        |            | |          }|                     t          j        t          j                   t	          |j        |j                    |             }|                     t          j        t          j        |dz              | |          }|                     t          j        t          j        |           t	          |j        |j                   d	S )
z5Check class_weights resemble sample_weights behavior.r  r  rV   r&  r   g      Y@)r   rV   rJ   rJ   N)	r   irisdatar   r+   r   r@   r   r   )r  reg1reg2r   r  s        rF   "test_class_weight_vs_sample_weightr  |  s   
 355DHHTY$$$3J'''DHHTY$$$
DJ/// GDK-..M$+"###s*###u--L355DHHTY]3333L)))DHHTY$$$
DJ/// 355DHHTY]A%56663L)))DHHTY]333
DJ/////rH   c                  n   t          j        ddgddgddgddgddgg          } g d}t          d g d          }|                    | |           t          d	d
ig d          }|                    | |           t	          |                    ddgg          t          j        dg                     d S )Nr  r   r  r   r   r   )r   r=  rV   )r  rE  rV   rX   )r   r=  rV   rZ   gɿrJ   rW   )r@   r   r   r   r-   r   )rp   ry   r  s      rF   test_class_weights_cvr    s    
4,q	D$<#sc3ZPQQAA
nnn
E
E
ECGGAqMMM !U<N<N<N
O
O
OCGGAqMMMs{{T1I;//2$@@@@@rH   rX  c                    t           j                            d          }d}d}|                    ||          }g d}t	          |          }t          |           rt          |           n| }t          |d d|          }|                    |          }	|                    ||	           |j	        j
        ||fk    sJ d}
|                    ||
          }	|                    ||	           |j	        j
        ||
|fk    sJ t          dd|           }t          j        t          d	
          5  |                    ||	           d d d            d S # 1 swxY w Y   d S )Nr   r  r   r=  r   rW  TrE  rZ  rn  r[  r  )rZ  rn  r[  zcv!=None and store_cv_resultsr   )r@   rb   rc   r   r  r  r   r   r   rr  r   r   r   r   )r[  ro   rR   rS   r  rE  n_alphasr  rry   r   s              rF   test_ridgecv_store_cv_resultsr    s    )


#
#CIJ		)Z((AF6{{H'/'8'8E{7###gHv$xPPPA 			)AEE!QKKK=9h"77777 I		)Y''AEE!QKKK=9i"BBBBB1tW===A	z)H	I	I	I  	a                 s   /EEEc                 F   t          j        ddgddgddgddgddgg          }t          j        g d          }|j        d         }g d}t          |          }t	          |           rt          |           n| }t          |d d|	          }d
}|                    ||           |j        j        |||fk    sJ t          j        g dg dg dg          	                                }|j        d
         }|                    ||           |j        j        |||fk    sJ d S )Nr  r   r  r   r   r   r  Tr  rV   )rV   rW   rV   rW   rV   )rW   rW   rV   rW   rW   )
r@   r   r   r  r  r   r   r   rr  	transpose)	r[  r  ry   rR   rE  r  r  r  r   s	            rF   )test_ridge_classifier_cv_store_cv_resultsr    sV   
4,q	D$<#sc3ZPQQA
"""##A
IF6{{H'/'8'8E{7###gH$x	 	 	A
 IEE!QKKK=9i"BBBBB 				---/B/B/BC	 	ikk  
IEE!QKKK=9i"BBBBBBBrH   	Estimatorc                    t           j                            d          }d}d\  }}| t          u r|                    |          }n|                    dd|          }|                    ||          } | |          }|j        |u sJ d| j         d            |                    ||           t          |j        t          j
        |                     d S )Nr   r  r   r   rJ   rD  z`alphas` was mutated in `z
.__init__`)r@   rb   rc   r   r   randintrE  r  r   r-   r.  )r  ro   rE  rR   rS   ry   rp   	ridge_ests           rF   test_ridgecv_alphas_conversionr    s    
)


"
"CF IzGIIi  KK1i((		)Z((A	(((IF"""A9#5AAA 	#"" MM!Qy'F););<<<<<rH   c                    t           j                            d          }d}d\  }}|t          u r|                    |          }n|                    dd|          }|                    ||          } |||           }| Lt          j        t          d          5  |	                    ||           ddd           dS # 1 swxY w Y   dS |	                    ||           dS )	z1Check alpha=0.0 raises error only when `cv=None`.r   )r   r   rW  r  rJ   rE  rZ  Nz"alphas\[0\] == 0.0, must be > 0.0.r   )
r@   rb   rc   r   r   r  r   r   r   r   )	rZ  r  ro   rE  rR   rS   ry   rp   r  s	            rF   test_ridgecv_alphas_zeror     s1    )


"
"CF IzGIIi  KK1i((		)Z((A	B///I	z]:-RSSS 	  	 MM!Q	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	as   CCCc                  .   t           j                            d          } d}dD ]\  }}|                     |          }|                     ||          }d|                     |          z   }t          d          }t          ||          }|                    |||           d|i}	t          t                      |	|	          }
|
                    |||           |j
        |
j        j        k    sJ t          |j        |
j        j                   d S )
Nr   r  )r  r   r   r   r   r  r   rz   ri  )r@   rb   rc   r   randr   r   r   r   r   r]  best_estimator_rz   r,   r   )ro   rE  rR   rS   ry   rp   r   rZ  r:  
parametersgss              rF   test_ridgecv_sample_weightr'    s   
)


"
"CF "3 K K	:IIi  IIi,,chhy1111XXB///Aq666 v&
%'':"555
q!=111~!3!99999!'-1C1IJJJJK KrH   c                  @   ddg} ddg}t           j                            d          }t          | |          D ]_\  }}|                    ||          |                    |          |                    |          dz  dz   }d}d}|d d t           j        f         |t           j        d d f         t          d                              |                               |                               |           fd}fd	}	d
}
t          j	        t          |
          5   |             d d d            n# 1 swxY w Y   d
}
t          j	        t          |
          5   |	             d d d            n# 1 swxY w Y   ad S )NrJ   r  r   rV   r   g       @r   c                  6                                     d S r?   r   )rp   r   sample_weights_not_OKry   s   rF   fit_ridge_not_okzStest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok@  s     IIa122222rH   c                  6                                     d S r?   r*  )rp   r   sample_weights_not_OK_2ry   s   rF   fit_ridge_not_ok_2zUtest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok_2C  s     IIa344444rH   z)Sample weights must be 1D array or scalarr   )r@   rb   rc   r   r   r   r   r   r   r   r   )
n_samplessn_featuressro   rR   rS   sample_weights_OKsample_weights_OK_1sample_weights_OK_2r,  r/  r   rp   r   r+  r.  ry   s              @@@@@rF   9test_raises_value_error_if_sample_weights_greater_than_1dr5  (  ss    QJa&K
)


#
#C!$Z!=!= ! !	:IIi,,IIi  IIi00A59!! 1!!!RZ- @"3BJM"BA 			!Q)***		!Q+,,,		!Q+,,,	3 	3 	3 	3 	3 	3 	3 	3	5 	5 	5 	5 	5 	5 	5 	5 >]:W555 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 >]:W555 	! 	!   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!7! !s$   ;EE	E	:FF	F	zn_samples,n_featuresrJ   c                    t           j                            d          }t          dd          }t          dd          }|                    | |          }|                    |           }|                    |           dz  dz   } ||          }	|                    |	||           |                    |||           t          |j        |j        d	           d S )
Nr   r   Fr   rJ   rV   r   r  r  )r@   rb   rc   r   r   r   r,   r   )
rR   rS   r   ro   sparse_ridgedense_ridgerp   ry   sample_weightsr  s
             rF   &test_sparse_design_with_sample_weightsr:  O  s     )


#
#Cs%888Lc777K		)Z((A		)AYYy))Q.2N""HXq???OOAqO777l0+2CQOOOOOOrH   c                      t          j        ddgddgddgddgddgg          } g d}t          d          }|                    | |           d S )	Nr  r   r  r   r   r   )rV   rZ   r&  rD  )r@   r   r   r   )rp   ry   r   s      rF   test_ridgecv_int_alphasr<  e  sb    
4,q	D$<#sc3ZPQQAA <(((E	IIaOOOOOrH   zparams, err_type, err_msgrE  )rV   rW   iz alphas\[1\] == -1, must be > 0.0)gr  g      $z"alphas\[0\] == -0.1, must be > 0.0)rV   r   1z1alphas\[2\] must be an instance of float, not strc                    d\  }}t                               ||          }t                               dd|          }t          j        ||          5   | di |                    ||           ddd           dS # 1 swxY w Y   dS )z?Check the `alphas` validation in RidgeCV and RidgeClassifierCV.r  r   rJ   r   Nr   )ro   r   r  r   r   r   )r  rN   err_typer   rR   rS   rp   ry   s           rF   test_ridgecv_alphas_validationr@  n  s    ( !Iz		)Z((AAq)$$A	xw	/	/	/ & &	F1%%%& & & & & & & & & & & & & & & & & &s   A==BBc                    d\  }}t                               ||          }| t          u rt                               |          }nt                               dd|          } | d                              ||           dS )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   rJ   rV   rD  N)ro   r   r   r  r   )r  rR   rS   rp   ry   s        rF   test_ridgecv_alphas_scalarrB    s}     !Iz		)Z((AGIIi  KK1i((IQAq!!!!!rH   c                      t          dd          } |                     t          t                     | j        j        d         t          j        d         k    sJ d S )Nr8   rV   )r   r   r   )r   r   r   r   r   r   )r  s    rF   test_sparse_cg_max_iterrD    sP    
{Q
/
/
/CGGJ
###9?1!1!!4444444rH   z-ignore::sklearn.exceptions.ConvergenceWarningc            	         d} t           t          }}t          j        || df          j        }t          dd          D ]W}dD ]R}t          ||d          }|                    ||           t          |j	        t          j        ||                      SXdD ]3}t          |dd          }|                    ||           |j	        J 4d S )	NrJ   rV   rQ   )r;   r<   r:   r   )r   r   r   )r8   r7   r9   r=  )
r   r   r@   tilerg   ranger   r   r-   n_iter_)r   rp   ry   y_nr   r   r  s          rF   test_n_iterrJ    s     IzqA
'!i^
$
$
&C!QKK J J- 	J 	JFveDDDCGGAsOOOs{BGHi,H,HIIII	J
 3 # #6A48883{""""# #rH   )r:   r8   r  r|  with_sample_weightc                    | dk    }t          d||          \  }}d}|rCt          j                            |          }d|                    |j        d                   z   }| dk    rd	n| }	t          |	d
|          }
t          | d
|          }|
                    |||           |                     ||          ||           t          |
j	        |j	                   t          |
j
        |j
        d           dS )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   )rS   rU   r4  Nr   r   r_   r|  r8   r   )r   r   r4  r   gƠ>r\  )r8  r@   rb   rc   re   r   r   r   r*   r   r   )r   rK  rl   r  r4  rp   ry   r   ro   dense_solverr8  r7  s               rF   test_ridge_fit_intercept_sparserN    s"      H)$6  DAq M ;i##$677ckkqwqzk::: #)F"2"2;;L|JJJKEHEEELOOAqO666]]1%%qFFFK*L,CDDDK%|'9EEEEEErH   )r<   r7   r9   c                 "   t          dd          \  }} ||          }t          |           }d                    |           }t          j        t
          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr   r   )rS   rU   r  zsolver='{}' does not supportr   )r8  r   formatr   r   r   r   )r   r  rp   ry   X_csrr7  r   s          rF   %test_ridge_fit_intercept_sparse_errorrR    s     *RaHHHDAqM!E'''L,33F;;G	z	1	1	1 # #"""# # # # # # # # # # # # # # # # # #s    BBBc                 @   t          dd|d          \  }}| rDt          j                            |          }d|                    |j        d                   z   }nd } ||          }t          ddd	d
d          }t          di |}	t          di |}
|	                    |||           t          j
                    5  t          j        dt                     |
                    |||           d d d            n# 1 swxY w Y   t          |	j        |
j        d           t          |	j        |
j        d           t!          j        t          d          5  t          dd	dd                               ||           d d d            d S # 1 swxY w Y   d S )Nr   r   g      @)rS   rR   rU   r3  r   r   r_   r;   Tr   r   )rz   r   r   r   r   r   r  -C6?r\  z"sag" solver requires.*r   rX   )r   r   r   r   r   )r8  r@   rb   rc   re   r   r   r   r   r  r  simplefilterr  r*   r   r   r   r   )rK  rl   r  rp   ry   ro   r   rQ  rN   r8  r7  s              rF   #test_ridge_fit_intercept_sparse_sagrV    sb   
 *1Cc  DAq  i##$677ckkqwqzk:::M!E%t  F //&//K??6??LOOAqO666		 	"	" @ @g{333???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ K*L,C$OOOOK%|'9EEEE	k)B	C	C	C W WU$D4HHHLLUTUVVVW W W W W W W W W W W W W W W W W Ws$   3D  DD(FFFreturn_interceptr   r  	container)r|  r8   r9   r:   r;   r<   r  c                 0   t          d          }|                    dd          }g d}t          j        ||          }d}| rd}||z  } ||          }	d\  }
}t          rdnd	}|d
k    }|dvrN| rLt          j        t          d          5  t          |	||
||| ||           ddd           n# 1 swxY w Y   dS t          |	||
|||| |          }| r-|\  }}t          ||d|           t          ||d|           dS t          ||d|           dS )z=check if all combinations of arguments give valid estimationsr   r  r  )rV   rJ   r=  r   g     @)rX   ư>rX   rT  r  )r;   r|  zIn Ridge, only 'sag' solverr   )rz   r   r   rW  r4  r   N)rz   r   r   r4  rW  r   r   rG  r   )
r#   r#  r@   r   r1   r   r   r   r   r*   )rW  r   rX  r   ro   rp   
true_coefsry   true_intercept	X_testingrz   r   r   r4  outr   r   s                    rF   .test_ridge_regression_check_arguments_validityr`    s    R
 
 CqAJ
q*AN ! A	!IJE3&44$D H_$$)9$]:-JKKK 
	 
	+!1!	 	 	 	
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 	
	#)	 	 	C  <ijqt<<<<	>EEEEEEZad;;;;;;s   B00B47B4)r7   r8   r9   r:   r;   r<   r  c                 V   t           j                            d          }d}| dk    }d\  }}|                    ||          }|                    |          }|                    t           j                  }|                    t           j                  }	dt          j        t           j                  j        z  }
t          || d|
|          }|	                    ||	           |j
        }t          || d|
|          }|	                    ||           |j
        }|j        |j        k    sJ |j        |j        k    sJ |                    |          j        |j        k    sJ |                    |          j        |j        k    sJ t          |j
        |j
        dd	
           d S )Nr   r   r  r"  rJ     )rz   r   r   r   r4  rT  gMb@?r[  )r@   rb   rc   r   rH  r<  finfo
resolutionr   r   r   rI  r   r*   )r   ro   rz   r4  rR   rS   X_64y_64X_32y_32r   ridge_32coef_32ridge_64coef_64s                  rF   test_dtype_matchrm  D  s    )


"
"CE H Iz99Y
++D99YD;;rz""D;;rz""D
bhrz""-
-CFScH  H LLtnG FScH  H LLtnG =DJ&&&&=DJ&&&&D!!'4:5555D!!'4:5555HNHNDIIIIIIrH   c                     t           j                            d          } t          j        ddg          }d\  }}}|                     ||          }|                     ||          }|                    t           j                  }|                    t           j                  }t          |d          }	|	                    ||           |	j	        }
t          |d          }|                    ||           |j	        }|
j
        |j
        k    sJ |j
        |j
        k    sJ |	                    |          j
        |j
        k    sJ |                    |          j
        |j
        k    sJ t          |	j	        |j	        d           d S )	Nr   r   r   )r  r  rJ   r9   r   r   r  )r@   rb   rc   r   r   rH  r<  r   r   r   rI  r   r+   )ro   rz   rR   rS   n_targetre  rf  rg  rh  ri  rj  rk  rl  s                rF   test_dtype_match_choleskyrp  i  su    )


"
"CHc3Z  E&-#Iz899Y
++D99Y))D;;rz""D;;rz""D 5444HLLtnG 5444HLLtnG =DJ&&&&=DJ&&&&D!!'4:5555D!!'4:5555BBBBBBrH   )r7   r9   r:   r8   r;   r<   r  c                    t           j                            |          }d\  }}|                    ||          }|                    |          }t          j        ||          d|                    |          z  z   }d}| dk    }	t                      }
| dk    rdnd}t           j        t           j        fD ]E}t          |	                    |          |	                    |          || |d |	dd	d
d
          |
|<   F|
t           j                 j
        t           j        k    sJ |
t           j                 j
        t           j        k    sJ t          |
t           j                 |
t           j                 |           d S )Nr"  r   r   r  r8   rX   r  rb  r   F)	rz   r   rU   r   r4  r   r   return_n_iterrW  r   )r@   rb   rc   r   r   r   r<  r?  r   rH  rI  r*   )r   rA  rU   rR   rS   rp   r   ry   rz   r4  resultsr   current_dtypes                rF   %test_ridge_regression_dtype_stabilityru    sq   
 9((..L Iz9j11Aj))D
q$$!3!3I!>!>>>AE HffG [((44dD*bj1 
 
!1HH]##HH]##%""
 "
 "
 2:$
22222:$
2222GBJ')<4HHHHHHrH   c                      t          d          \  } }t          j        |           } | d d dd d f         } |d d d         }t          d                              | |           d S )Nr   rU   rJ   r;   r  )r   r@   asfortranarrayr   r   )rp   ry   s     rF   test_ridge_sag_with_X_fortranry    ss    +++DAq
!A	##A#qqq&	A	##A#A	Aq!!!!!rH   zClassifier, paramsc                    t          dd          \  }}|                    dd          }t          j        ||gd          } | d	i |                    ||          }|                    |          }|j        |j        k    sJ t          |dddf         |dddf                    t          d                              ||           dS )
zRCheck that multilabel classification is supported and give meaningful
    results.rV   r   )r  rU   rW   r   Nr;   r  r   )	r
   r   r@   r   r   r   r   r-   r   )
ClassifierrN   rp   ry   r   r  r  s          rF   test_ridgeclassifier_multilabelr|    s     *AAFFFDAq			"aA
1vA&&&A
*

v


"
"1a
(
(C[[^^F<17""""vaaad|VAAAqD\222	Aq!!!!!rH   r|  r  )rX   r   r=  r   c                 f   t          j        ddgddgddgddgg          }t          j        dd	g          }|rd
}|                    |          |z   }n|                    |          }t          |d| |          }|                    ||           t          j        |j        dk              sJ dS )z:Test that positive Ridge finds true positive coefficients.rV   rJ   r  rQ   r   r  r  r  rY   r   Trz   r4  r   r   r   N)r@   r   r   r   r   rd   r   )r   r   rz   rp   r   r   ry   r   s           rF   #test_ridge_positive_regression_testr    s    
 	1a&1a&1a&1a&122A8QHD 	EE$KK)#EE$KKd6  E 
IIaOOO6%+"#######rH   c                    t           j                            d          }|                    dd          }|                    dd|j        d                   }| rd}||z  |z   }n||z  }||                    |j        d                   d	z  z  }g }d
D ]C}t          ||| d          }	|                    |		                    ||          j
                   Dt          |ddd dS )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&  r=  r   rV   r_   r   r   )TFr   )rz   r4  r   r   rZ  rF  N)r@   rb   rc   r   re   r   rf   r   r  r   r   r*   )
r   rz   ro   rp   r   r   ry   rs  r4  r   s
             rF   %test_ridge_ground_truth_positive_testr    s    )


#
#C		#sA;;sCagaj;11D 	Hy H	$	$t	++AG! . .(-U
 
 
 	uyyA,----W4a000000rH   )r7   r9   r:   r8   r;   r<   c           	         d}t          j        ddgddgg          }t          j        ddg          }||z  }t          |d| d	          }t          j        t
          d
          5  |                    ||           ddd           n# 1 swxY w Y   t          j        t
          d          5  t          |||d| d          \  }}ddd           dS # 1 swxY w Y   dS )z5Test input validation for positive argument in Ridge.r=  rV   rJ   r  rQ   rW   TFr~  zdoes not support positiver   Nzonly 'lbfgs' solver can be used)r4  r   rW  )r@   r   r   r   r   r   r   r   )r   rz   rp   r   ry   r   rw   s          rF   test_ridge_positive_error_testr    st   
 E
1a&1a&!""A8QGD	DAV5QQQE	z)D	E	E	E  		!Q               
z)J	K	K	K 
 
q%$v
 
 
1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s$   &B		BB/CCCc                 j   	
 t          ddd          \  	
d d}d	 
fd	}t           	                              	
          }t           d
                              	
          } ||          } ||          }||k    sJ t          |          D ]} |||          }||k    sJ dS )z?Check ridge loss consistency when positive argument is enabled.r  r   rR   rS   rU   r=  r&  Nr   c                 :   | j         }|Jt          j                            |          }| j        |                    d|| j        j                  z   }n| j        }dt          j        |z  z
  |z
  dz            z  dz  t          j        |dz            z  z   S )Nr   r_   r   rJ   )r   r@   rb   rc   r   re   r   r   )	r   rU   noise_scaler   ro   r   rp   rz   ry   s	         rF   
ridge_lossz,test_positive_ridge_loss.<locals>.ridge_loss  s    $	#)''55C;Q%+BS!T!TTDD;DRVQT\I5!;<<<sU{RV!GN
 N
 @
 
 	
rH   r   T)rz   r4  rw  )Nr   )r   r   r   rG  )rz   n_checksr  r   model_positivelossloss_positiverU   loss_perturbedrp   ry   s   `        @@rF   test_positive_ridge_lossr    s    SSrJJJDAqEH

 

 

 

 

 

 

 

 ""1a((E666::1a@@N
 :eDJ~..M=     h / /#NNNN...../ /rH   c                     t          ddd          \  }}t          j        |d          }t          j        | g          } dddd}t	          ||| fi |}t          |||           }t          ||d	d
           dS )zETest that LBGFS gets almost the same coef of svd when positive=False.r  r   r  rV   FgؗҜ<i  )r4  r   r   rT  r   rF  N)r   r@   expand_dimsr.  r   r   r*   )rz   rp   ry   config
coef_lbfgsr   s         rF   test_lbfgs_solver_consistencyr  4  s     SSrJJJDAq
q!AJwE F aE44V44Jq!U++MJDqAAAAAArH   c                  $   t          j        ddgddgg          } t          j        ddg          }t          ddddd	d
          }t          j        t
          d          5  |                    | |           ddd           dS # 1 swxY w Y   dS )z1Test that LBFGS solver raises ConvergenceWarning.rV   rW   g    _g    _Br   r  Fr   T)rz   r   r   r   r4  r   zlbfgs solver did not converger   N)r@   r   r   r   r   r   r   )rp   ry   r   s      rF   test_lbfgs_solver_errorr  E  s    
1b'Aq6"##A
%A  E 
(0O	P	P	P  		!Q                 s   !BB	B	r	  tallc                    | |dk    s|dv r| rt          j        d           t          j                            d          }d}|dk    r|dz  }n|dz  }|                    ||          }|                    |          }	| ||          }t          | d	||d
k    |d          }
t          di |
                    ||	d          }|j	        
                                }| r|j        }t          j        |	          }|                    ||	|           t          |j	        |d           | rt          |j        |           |                    dd|j        d                   }d|dd<   |	ddxx         dz  cc<   |                    ||	|           |j	        
                                }| r|j        }|                    |ddddf         |	dd         |dd                    t          |j	        |d           | rt          |j        |           t          di |
                    t          j        |
d         z            }|                    ||	t          j        |z             |dv r| st          j        d| d           t          |j	        |d           | rt          |j        |           ||                                }t          j        ||d|dz           gd          }t          j        |	|	d|dz           g          }|
                                }|d|dz  xx         dz  cc<   t          j        ||d|dz           gd          }| ||          } ||          }t          di |
                    ||	|          }t          di |
                    |||          }t          |j	        |j	                   | rt          |j        |j                   dS dS )zTest that the impact of sample_weight is consistent.

    Note that this test is stricter than the common test
    check_sample_weight_equivalence alone.
    Nr7   )r9   r<   zunsupported configurationr   rP   r  rJ   r   r  r   )r   rz   r   r4  rU   r   r   rZ  r\  r   r   r[   r  rz   r   r   zSolver z- does fail test for scaling of sample_weight.r   r   )r   r   r@   rb   rc   r#  r   r   r   r   r0  r   	ones_liker*   re   r   r  pir   toarrayr   )r   r   r	  r   rl   ro   rR   rS   rp   ry   rN   r  r   r   r   r  X2y2sample_weight_1sample_weight_2r
  s                        rF   $test_ridge_sample_weight_consistencyr  V  su    #U??v)===-=K3444
 )


#
#CIv~~!^

]
J''AA#Q#G#'  F //&//

a$

7
7C9>>D #N	LOOMGGAqG...CIt$//// 3	222
 KKDqqwqzKBBMM"##bccFFFdNFFFGGAqG...9>>D #N	GGAcrc111fIq"v]3B3-?G@@@CIt$//// 3	222 ??6??%%BEF7O,C%DDDHHQ!6H777   TvTTTUUUDJ40000 4333 #IIKK	A.	Q./0q	9	9	9B	A.	Q./0	1	1B#((**O$i1n$%%%*%%%n	&6	Q&678q  O #Qb!!??6??q!?CCD??6??r2_EEDDJ
+++ :99999: :rH   c                     t          dd          \  } }t          d          }d}t          j        t          |          5  |                    | |           ddd           n# 1 swxY w Y   t          dd	          }d
}t          j        t          |          5  |                    | |           ddd           dS # 1 swxY w Y   dS )z-Check `store_cv_values` parameter deprecated.r  r   r  T)store_cv_valuesz'store_cv_values' is deprecatedr   N)rn  r  z2Both 'store_cv_values' and 'store_cv_results' were)r   r   r   r   FutureWarningr   r   r   rp   ry   r   r  s       rF   %test_ridge_store_cv_values_deprecatedr    sK   QR888DAqD)))E
+C	m3	/	/	/  		!Q               T4@@@E
>C	z	-	-	-  		!Q                 s$   A%%A),A)CC	Cc                      t          dd          \  } }t          d          }d}t          j        t          |          5  |                    | |           |j         ddd           dS # 1 swxY w Y   dS )	zCheck `cv_values_` deprecated.r  r   r  Tr  z$Attribute `cv_values_` is deprecatedr   N)r   r   r   r   r  r   
cv_values_r  s       rF   test_ridge_cv_values_deprecatedr    s    QR888DAqT***E
0C	m3	/	/	/  		!Q                 s   A--A14A1r   c                    t          dd|d          \  }}t          j        |j        d         f          }| rd|ddd<   d	}t	          |d
|d          }|                    |||           t          j        g |j        t          |          R           }t                      }	t          |          D ]\  }
}t          |	
                    ||                    D ]c\  }\  }}t          ||          }|                    ||         ||         ||                    |                    ||                   ||d|
f<   dt          |j        |           dS )ar  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&  rZ   r   )rR   rS   r   rU   r   r   NrJ   r  rX  T)rE  r[  r   rn  r   r   .)r   r@   r   r   r   r   emptyr  r    	enumeraterq  r   r   r*   rr  )rK  r   r   rp   ry   r   rE  r  ry  rZ  	alpha_idxrz   idx	train_idxtest_idxr   s                   rF   !test_ridge_cv_results_predictionsr    s   " "	  DAq G171:-000M ! cccF (#	  H LLA]L333 (!817!8CKK!8!8999K	B%f-- J J	5*3BHHQNN*C*C 	J 	J&C&)X]CCCEIIa	lAiL-	2JKKK/4}}Qx[/I/IKS)+,,	J H(+66666rH   c                    t          d|           \  t          j        j        d         f          t	          dd          }|                               t                      }t          |j        	          t          j	        fd
|
                              D                       }t          |j        t          |                      dS )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.
    rJ   r   rU   r   r  rX  T)r[  rn  r   r   c                     g | ]H\  }}                     |         |         |                                        |                   IS )r   r   r   )r   traintestrp   r   r   ry   s      rF   r   z;test_ridge_cv_multioutput_sample_weight.<locals>.<listcomp>	  se     	
 	
 	
 t IIah%e8LIMMUU$ 	
 	
 	
rH   N)r   r@   r   r   r   r   r    r   r]  squeezerq  r*   r  r   )rl   r  rZ  
y_pred_loorp   r   r   ry   s       @@@@rF   'test_ridge_cv_multioutput_sample_weightr  	  s     Q5GHHHDAqG171:-000M7$OOOHLLA]L333	B(((E	
 	
 	
 	
 	
 	
 	
  "xx{{		
 	
 	
 J H(+=a+L+L*LMMMMMrH   c                     t          dd          \  d fd} t          |           }|                               t                      }t	          |j                  t          j        fd|                              D                       }t          |j
         |                      d	S )
zECheck that `RidgeCV` works properly with a custom multioutput scorer.rJ   r   r  c                     | |z
  dz  }t          j        |d          }|j        dk    rt          j        |ddg           S | S )NrJ   r   r   rV   )r  )r@   rA   ndimr  )y_truerD   errorsmean_errorss       rF   custom_errorz=test_ridge_cv_custom_multioutput_scorer.<locals>.custom_error	  sX    6/a'gf1---q  J{QF;;;;; |rH   c                 D     ||                      |                     S )zGMultioutput score that give twice more importance to the second target.)r   )r  rp   ry   r  s      rF   custom_multioutput_scorerzJtest_ridge_cv_custom_multioutput_scorer.<locals>.custom_multioutput_scorer)	  s&    Q	 1 1! 4 45555rH   )r[  r   c                     g | ]@\  }}                     |         |                                       |                   AS r   r  )r   r  r  rp   r   ry   s      rF   r   z;test_ridge_cv_custom_multioutput_scorer.<locals>.<listcomp>3	  sE    WWWKE41U8QuX	&	&	.	.qw	7	7WWWrH   N)r   r   r   r    r   r]  r@   r  rq  r*   r  )r  r  rZ  r  rp   r  r   ry   s       @@@@rF   'test_ridge_cv_custom_multioutput_scorerr  	  s    QQ777DAq  6 6 6 6 6 8999HLLA	B(((EWWWWWW288TU;;WWW J H(<<:+F+F*FGGGGGrH   metaestimator)enable_metadata_routingc                 >     |                                               dS )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    rF   *test_metadata_routing_with_default_scoringr  =	  s"     MOO((*****rH   zmetaestimator, make_datasetc                      |ddd          \  }}|                      ||t          j        |j        d                              dS )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@   r   r   )r  r  rp   ry   s       rF   +test_set_score_request_with_default_scoringr  F	  sO     <#!"EEEDAqa"'!'!**=*=>>>>>rH   )r&  r&  r   rZ   rV   r'  r(  r(  TFFN)r  	itertoolsr   numpyr@   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(   -sklearn.utils._test_common.instance_generatorr)   sklearn.utils._testingr*   r+   r,   r-   r.   sklearn.utils.estimator_checksr/   r0   sklearn.utils.fixesr1   r2   r3   r4   r5   r6   SOLVERSr   r   load_diabetesdiabetesr	  r   r   r   r   r   indrb   rc   ro   r-  	load_irisr  r  r  rG   rK   fixturer   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r%  r8  rK  r.  rb  re  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   r'  r5  r:  r<  r   	TypeErrorr@  rB  rD  r  rJ  rN  rR  rV  r   r   r`  rm  rp  rG  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rH   rF   <module>r     s                     , , , , , , , ,                  2 1 1 1 1 1                                 H G G G G G G G G G              / . . . . . , , , , , ,              S R R R R R                                    B
A
A 4 #S  !8!##! 
Jbi
 #$$iA C   	$3$i#C*S/ 
JxDK% % %+ + + '(((C& C& )(C&L 7++4-88)# )# 98 ,+)#X 7++4-88#? #? 98 ,+#?L 7++4-88%2 %2 98 ,+%2P 7++4-882+ 2+ 98 ,+2+j 7++4-8828 28 98 ,+28j 7++4-882+ 2+ 98 ,+2+j 7++4-88+dVn-DEE3+../' /' /. FE 98 ,+/'d+ + +
 
 
4 4 4<> > >$0 0 0*  @ "2"2"233.99
D 
D :9 43
D "N"N"NOO*T5M::.99. . :9 ;: PO.$ "N"N"NOO*T5M::.993 3 :9 ;: PO3& 	
	* * * *Z  *1'GGGF^#+
 +
  
 
 (FFF  1..R R /.	 
 
 RB eW%566~(EFFWh$7884-88   $K $K  98 98 GF 76$KNK K K@ eW%566~(EFF2w//#   ;G ;G  0/ GF 76;G| +dVn-DEE8   ? ?  FE?6 6 6r3 3 3$ 	%	(	(	(/:		E	2	2	24GH - - - gii!$5$5$7$79L#MN  ay))0 0 *)	 
0D D DN3 3 3P P P, , ,$ T:7I$JKKeeAhh/00+dVn-DEE" " FE 10 LK" eeAhh/00+dVn-DEE2 2 FE 102    
  
  
F )+T+T+V+V  %'AB    
 
U%    
R R   R ''GGG ', ', ',T *FF3I,J,JKKF F LKF. "
 
 .99D D :9
 
D ?  ?  ?F 2C DEE0 0 FE08A A A .0LM   : T:7I$JKKC C LKC8 w0A&BCC= = DC=( ay))w0A&BCC  DC *)(K K K0$! $! $!N /1a&1a&1ABB^#n4~EV P P	  CB
P"   w0A&BCC
M	"J0ST*+1	
 }%@	
  & &!  DC"& w0A&BCC" " DC""5 5 5 KLL# # ML#$ #I#I#IJJ-e}==.99#F #F :9 >= KJ#FL #>#>#>??.99# # :9 @?# -e}==.99W W :9 >=W8 +eT];;4*?@@rxj>&ABBOOO 4< 4<  CB A@ <;4<n NNN J J JDC C C< NNN  q**I I +* I@" " " 	"	T4L)	T1I& " " " FG#4554-88"8"8"899$ $ :9 98 65$" 4-88"8"8"8991 1 :9 9812 EEE 
 
 
" "8"8"899"/ "/ :9"/J "8"8"899B B :9B   " 5$-88+dVn-DEE&&!1227gY#677\: \: 87 32 FE 98\:@     -t}==5$-88q!f--(7 (7 .- 98 >=(7VN N N4H H HD 74E*FGG---+ + .- HG+ !	O$				12  ---? ? .- ? ? ?rH   