Ë
    ÷Q(h®@ ã            	       óÈ  — 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
j˜                  «       ZMeMjœ                  eMjž                  cZPZQ ej¤                  ePj¦                  d    «      ZTejª                  j­                  d «      ZWeWj±                  eT«       eTdd ZTePeT   eQeT   cZPZQ e
j²                  «       ZZeZjœ                  eZjž                  cZ[Z\d„ Z]d„ Z^ ej¾                  ddg¬«      d„ «       Z`ejÂ                  jÅ                  deI«      ejÂ                  jÅ                  ddd g«      d!„ «       «       ZcejÂ                  jÅ                  deI«      ejÂ                  jÅ                  ddd g«      d"„ «       «       ZdejÂ                  jÅ                  deI«      ejÂ                  jÅ                  ddd g«      d#„ «       «       ZeejÂ                  jÅ                  deI«      ejÂ                  jÅ                  ddd g«      d$„ «       «       ZfejÂ                  jÅ                  deI«      ejÂ                  jÅ                  ddd g«      d%„ «       «       ZgejÂ                  jÅ                  deI«      ejÂ                  jÅ                  ddd g«      d&„ «       «       ZhejÂ                  jÅ                  deI«      ejÂ                  jÅ                  ddd g«      ejÂ                  jÅ                  d'dgeFz   «      ejÂ                  jÅ                  d(d)d*g«      d+„ «       «       «       «       Zid,„ Zjd-„ Zkd.„ Zld/„ Zmd0„ Znd1„ ZoejÂ                  jÅ                  d2g d3¢«      ejÂ                  jÅ                  d4eF«      d5„ «       «       ZpejÂ                  jÅ                  d6g d7¢«      ejÂ                  jÅ                  d8dd g«      ejÂ                  jÅ                  d4eF«      d9„ «       «       «       ZqejÂ                  jÅ                  d6g d7¢«      ejÂ                  jÅ                  d8dd g«      ejÂ                  jÅ                  d4eF«      d:„ «       «       «       Zr	 	 	 	 	 	 	 	 	 	 	 	 dÀd<„ZsejÂ                  jÅ                  d=d>„  eg d?¢dgeFz   «      D «       «      ejÂ                  jÅ                  d@g dA¢«      ejÂ                  jÅ                  dB ej¤                  dC«      «      dD„ «       «       «       ZtejÂ                  jÅ                  dEdFdGg«      ejÂ                  jÅ                  dHejê                  geFz   «      ejÂ                  jÅ                  dIdJdKg«      ejÂ                  jÅ                  ddd g«      ejÂ                  jÅ                  dLg dM¢«      dN„ «       «       «       «       «       ZvdO„ ZwejÂ                  jÅ                  dEdFdGg«      ejÂ                  jÅ                  dHejê                  geFz   «      ejÂ                  jÅ                  dPdQdRg«      ejÂ                  jÅ                  dSg dT¢«      dU„ «       «       «       «       ZxejÂ                  jÅ                  d'dgeFz   «      ejÂ                  jÅ                  dVg dW¢«      dX„ «       «       ZydY„ ZzdZ„ Z{ejÂ                  jÅ                  d[ ed ¬\«      ef ed ¬\«      efg«      d]„ «       Z|ejÂ                  jÅ                  d[ e«       ef e«       efg«      ejÂ                  jÅ                  d^ddCg«      d_„ «       «       Z}d`„ Z~da„ Zdb„ Z€dc„ Z�ejÂ                  jÅ                  ddddee]g«      ejÂ                  jÅ                  d^d e*df«      g«      ejÂ                  jÅ                  d'dgeFz   «      dg„ «       «       «       Z‚ejÂ                  jÅ                  d^d e*df«      g«      ejÂ                  jÅ                  d'dgeFz   «      dh„ «       «       Zƒdi„ Z„dj„ Z…ejÂ                  jÅ                  dk e5«       «      ejÂ                  jÅ                  dleAe…ge8¬m«      ejÂ                  jÅ                  dn edF¬o«      ge8¬m«      dp„ «       «       «       Z†ejÂ                  jÅ                  dq e6d ¬r«      «      ds„ «       Z‡ejÂ                  jÅ                  dq eˆe2«      «      dt„ «       Z‰ejÂ                  jÅ                  dueze{ee€e�e„f«      ejÂ                  jÅ                  d4eF«      dv„ «       «       ZŠdw„ Z‹ejÂ                  jÅ                  dxeef«      dy„ «       ZŒdz„ Z�ejÂ                  jÅ                  dddd{e^g«      d|„ «       ZŽejÂ                  jÅ                  ddddee]g«      d}„ «       Z�ejÂ                  jÅ                  d~eeg«      d„ «       Z�ejÂ                  jÅ                  d^ddCg«      ejÂ                  jÅ                  d~eeg«      d€„ «       «       Z‘d�„ Z’d‚„ Z“ejÂ                  jÅ                  dƒd„dCgdCd„gg«      ejÂ                  jÅ                  d'eDeEz   eFz   eGz   eHz   «      d…„ «       «       Z”d†„ Z•ejÂ                  jÅ                  d~eeg«      ejÂ                  jÅ                  d‡dˆd‰ie–dŠfdˆd‹ie–dŒfdˆd�ie—dŽfg«      d�„ «       «       Z˜ejÂ                  jÅ                  d~eeg«      d�„ «       Z™d‘„ ZšejÂ                  �j7                  d’«      d“„ «       ZœejÂ                  jÅ                  dg d”¢«      ejÂ                  jÅ                  d•dd g«      ejÂ                  jÅ                  d4eF«      d–„ «       «       «       Z�ejÂ                  jÅ                  dg d—¢«      ejÂ                  jÅ                  d4eF«      d˜„ «       «       ZžejÂ                  jÅ                  d•dd g«      ejÂ                  jÅ                  d4eF«      d™„ «       «       ZŸejÂ                  jÅ                  dšd dg«      ejÂ                  jÅ                  d›d e�j@                  dœ«      g«      ejÂ                  jÅ                  d�e�jB                  geFz   «      ejÂ                  jÅ                  dg dž¢«      dŸ„ «       «       «       «       Z¢ejÂ                  jÅ                  dg d ¢«      d¡„ «       Z£d¢„ Z¤ejÂ                  jÅ                  dg d£¢«      ejÂ                  jÅ                  dB e¥d;«      «      d¤„ «       «       Z¦d¥„ Z§ejÂ                  jÅ                  d¦ei fed^difed^dCifg«      d§„ «       Z¨ejÂ                  jÅ                  dd¨d©g«      ejÂ                  jÅ                  ddd g«      ejÂ                  jÅ                  d(g dª¢«      d«„ «       «       «       Z©ejÂ                  jÅ                  ddd g«      ejÂ                  jÅ                  d(g dª¢«      d¬„ «       «       ZªejÂ                  jÅ                  dg d­¢«      d®„ «       Z«ejÂ                  jÅ                  d(g dª¢«      d¯„ «       Z¬ejÂ                  jÅ                  d(g dª¢«      d°„ «       Z­d±„ Z®ejÂ                  jÅ                  dd dg«      ejÂ                  jÅ                  d'dgeFz   «      ejÂ                  jÅ                  d²d³dg«      ejÂ                  jÅ                  deId©gz   «      d´„ «       «       «       «       Z¯dµ„ Z°d¶„ Z±ejÂ                  jÅ                  d•d dg«      ejÂ                  jÅ                  dd dg«      ejÂ                  jÅ                  d·d;d„g«      d¸„ «       «       «       Z²d¹„ Z³dº„ Z´ejÂ                  jÅ                  d»eeg«       e	d¬¼«      d½„ «       «       ZµejÂ                  jÅ                  d¾ e«       ef e«       efg«       e	d¬¼«      d¿„ «       «       Z¶y)Áé    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      úc/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_ridge.pyÚ_accuracy_callablerG   X   s   € Ü�7‰7�6˜VÑ#Ó$Ð$ó    c                 ó.   — | |z
  dz  j                  «       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                  j	                  | «      }t        ||||¬«      }d|dd…df<   t        j                  |«      \  }}}	t        j                  |dkD  «      sJ ‚|dd…d|…f   |dd…|d…f   }}
|	d|…dd…f   |	|d…dd…f   }}|j                   dk(  r8|j                  d	d
|¬«      }||z  }|||j                  ||z
  ¬«      dz  z  z  }nI|j                  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                  j                  |«      t        j                  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é   Néÿÿÿÿçü©ñÒMbP?éöÿÿÿé
   ©Ú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ô  € ð> ‡}�}˜ÒØ %Ñˆ	‘:à %Ñˆ	�:ÜˆI�zÓ"€AÜ
�)‰)×
Ñ
Ð 2Ó
3€CÜØ¨
À1ÐSVô	€Að €A‚aˆ€e�HÜ�z‰z˜!‹}�H€A€qˆ"Ü�6‰6�!�d‘(ÔÐÐØŠq�"�1�"ˆu‰X�qš˜A™B˜‘xˆ€BØ���’A�‰Y˜˜1™2šq˜5™	ˆ€Cà‡}�}˜Òà—;‘; 3¨R°j�;ÓAˆØ�‰LˆØ	ˆR�#—*‘* )¨jÑ"8�*Ó9¸QÑ>Ñ>Ñ>‰à�K‰K˜C b¨yˆKÓ9ˆà—5‘5œ2Ÿ7™7 1 q¡5›>Ñ)¨B¯D©DÑ0°1Ñ4ˆð €EØ”—‘˜JÓ'Ñ'€AØ€A€f�IÜ—‘˜aŸc™c A™g¨™k¨1¯3©3°©7Ó3€Jð ��H‘Ñ€EØ�!�j‘.Ñ €GÜ�9‰9�>‰>˜%Ó ¤2§9¡9§>¡>°'Ó#:Ò:Ð:Ð:àˆ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
   }n*||j                  d¬«      z
  }||j                  «       z
  }d}|j                  ||«       |d	d
 }|j                  t        j                  |«      k(  sJ ‚t        |j                  |«       |j                  ||«      t        j                  |«      k(  sJ ‚t	        di |	¤Žj                  ||t        j                  |j                  d   «      ¬«      }|j                  t        j                  |«      k(  sJ ‚t        |j                  |«       |j                  ||«      t        j                  |«      k(  sJ ‚|j                  | k(  sJ ‚y	)zˆTest 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Å  € ð &�M€A€qˆ!ˆTØ€EÜØØØØ˜Ñ.‰E°EØ'ô€Fð ”2—7‘7˜1“:‰~€HØ�A˜‘H‘€IØ”2—6‘6˜) Q™,Ó'¬"¯&©&°¸1±Ó*=Ñ=Ñ=€Hä‰O�F‰O€EØ	Š!ˆSˆbˆSˆ&‰	€AÙØ˜‘H‰	à�—‘˜A�“ÑˆØ�—‘“‰LˆØˆ	Ø	‡I�Iˆa�„OØ��ˆ9€Dà×ÑœvŸ}™}¨YÓ7Ò7Ð7Ð7Ü�E—K‘K Ô&Ø�;‰;�q˜!Ó¤§¡¨hÓ 7Ò7Ð7Ð7ô ‰O�F‰O×Ñ  1´B·G±G¸A¿G¹GÀA¹JÓ4GÐÓH€EØ×ÑœvŸ}™}¨YÓ7Ò7Ð7Ð7Ü�E—K‘K Ô&Ø�;‰;�q˜!Ó¤§¡¨hÓ 7Ò7Ð7Ð7à�=‰=˜FÒ"Ð"Ñ"rH   c                 óF  — |\  }}}}|j                   \  }}	d}
t        |
dz  || | dv rdnd|¬«      }|dd…dd…f   }d	t        j                  ||fd
¬«      z  }t        j                  j                  |«      t        ||	d
z
  «      k  sJ ‚|r|d   }n*||j                  d¬«      z
  }||j                  «       z
  }d}|j                  ||«       |dd }|j                  t        j                  |«      k(  sJ ‚t        |j                  t        j                  ||f   d¬«       y)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   ç:Œ0âŽyE>©Ú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&  € ð &�M€A€qˆ!ˆTØŸG™GÑ€IˆzØ€EäØ�a‰iØ#ØØ˜Ñ.‰E°EØ'ô€Eð 	
Š!ˆSˆbˆSˆ&‰	€AØŒb�n‰n˜a ˜V¨!Ô,Ñ,€AÜ�9‰9× Ñ  Ó#¤s¨9°jÀ1±nÓ'EÒEÐEÐEÙØ˜‘H‰	à�—‘˜A�“ÑˆØ�—‘“‰LˆØˆ	Ø	‡I�Iˆa�„OØ��ˆ9€Dà×ÑœvŸ}™}¨YÓ7Ò7Ð7Ð7ô �E—K‘K¤§¡ t¨T zÑ!2¸Ö>rH   c                 ó>  — |\  }}}}|j                   \  }}	d}
t        d|
z  || | dv rdnd|¬«      }|dd…dd…f   }t        j                  ||fd	¬
«      }t        j                  j                  |«      t        ||	«      k  sJ ‚t        j                  ||f   }|r|d   }n*||j                  d	¬
«      z
  }||j                  «       z
  }d	}|j                  ||«       |dd }|j                  t        j                  |«      k(  sJ ‚t        |j                  |d¬«       y)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«   ý   s!  € ð &�M€A€qˆ!ˆTØŸG™GÑ€IˆzØ€EäØ�%‰iØ#ØØ˜Ñ.‰E°EØ'ô€Eð 	
Š!ˆSˆbˆSˆ&‰	€AÜ
�‰˜˜1�v AÔ&€AÜ�9‰9× Ñ  Ó#¤s¨9°jÓ'AÒAÐAÐAÜ
�‰ˆa�ˆd‰€AÙØ˜‘H‰	à�—‘˜A�“ÑˆØ�—‘“‰LˆØˆ	Ø	‡I�Iˆa�„OØ��ˆ9€Dà×ÑœvŸ}™}¨YÓ7Ò7Ð7Ð7ô �E—K‘K ¨DÖ1rH   c                 óB  — |\  }}}}|j                   \  }}	d}
t        |
|| | dv rdnd|¬«      }t        d
i |¤Ž}|r|dd…dd…f   }|d   }|dd }nd}|j                  ||«       ||	kD  s|s;|j                  t        j                  |«      k(  sJ ‚t        |j                  |«       yt        |j                  |«      |«       t        ||z  |z   |«       t        j                  j                  t        j                  |j                  |j                  f   «      t        j                  j                  t        j                  ||f   «      kD  sJ ‚t        j                  d¬	«       |j                  t        j                  |«      k(  sJ ‚t        |j                  |«       y)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  € ð &�M€A€qˆ$�ØŸG™GÑ€IˆzØ€EÜØØ#ØØ˜Ñ.‰E°EØ'ô€Fô ‰O�F‰O€Eñ ØŠa��"�ˆf‰IˆØ˜‘Hˆ	Ø�C�Rˆy‰àˆ	Ø	‡I�Iˆa�„Oð
 �:Ò¡]Ø×Ñ¤6§=¡=°Ó#;Ò;Ð;Ð;Ü˜Ÿ™ TÕ*ô 	˜Ÿ™ aÓ(¨!Ô,Ü˜˜D™ 9Ñ,¨aÔ0ä�y‰y�~‰~œbŸe™e E×$4Ñ$4°e·k±kÐ$AÑBÓCÄbÇiÁiÇnÁnÜ�E‰E�)˜T�/Ñ"óG
ò 
ð 	
ð 
ô 	�‰ÐOÕ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                  j                  |«      t        ||	«      k  sJ ‚|j                  ||«       ||	kD  s|sg|j                  t        j                  |«      k(  sJ ‚| dk(  rt        j                  «        t        |j                  t        j                  ||f   «       yt        |j                  |«      |«       t        j                  j!                  t        j                  |j                  |j                  f   «      t        j                  j!                  t        j                  |||f   «      kD  sJ ‚t        j"                  d¬«       |j                  t        j                  |«      k(  sJ ‚t        |j                  t        j                  ||f   «       y)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È  € ð &�M€A€qˆ$�ØŸG™GÑ€IˆzØ€EäØØ#ØØ˜Ñ.‰E°EØ'ô€Eñ ØŠa��"�ˆf‰IˆØ˜‘Hˆ	Ø�C�Rˆy‰àˆ	ØŒb�n‰n˜a ˜V¨!Ô,Ñ,€AÜ�9‰9× Ñ  Ó#¤s¨9°jÓ'AÒAÐAÐAØ	‡I�Iˆa�„Oà�:Ò¡]Ø×Ñ¤6§=¡=°Ó#;Ò;Ð;Ð;Ø�ZÒä�K‰KŒMÜ˜Ÿ™¤R§U¡U¨4°¨:Ñ%6Õ7ô
 	˜Ÿ™ aÓ(¨!Ô,ä�y‰y�~‰~œbŸe™e E×$4Ñ$4°e·k±kÐ$AÑBÓCÄbÇiÁiÇnÁnÜ�E‰E�)˜T 4Ð'Ñ(óG
ò 
ð 	
ð 
ô 	�‰ÐOÕPØ×Ñ¤6§=¡=°Ó#;Ò;Ð;Ð;Ü˜Ÿ™¤R§U¡U¨4°¨:Ñ%6Õ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                  j                  |«      t        ||	«      k  sJ ‚t        j                  ||f   }|j                  ||«       ||	kD  s|s;|j                  t        j                  |«      k(  sJ ‚t        |j                  |«       yt        |j                  |«      |«       t        j                  j                  t        j                  |j                  |j                  f   «      t        j                  j                  t        j                  ||f   «      kD  sJ ‚t        j                   d	¬
«       |j                  t        j                  |«      k(  sJ ‚t        |j                  |«       y)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¦  € ð &�M€A€qˆ$�ØŸG™GÑ€IˆzØ€EäØØ#ØØ˜Ñ.‰E°EØ'ô€Eñ ØŠa��"�ˆf‰IˆØ˜‘Hˆ	Ø�C�Rˆy‰àˆ	Ü
�‰˜˜1�v AÔ&€AÜ�9‰9× Ñ  Ó#¤s¨9°jÓ'AÒAÐAÐAÜ
�‰ˆa�ˆd‰€AØ	‡I�Iˆa�„Oà�:Ò¡]Ø×Ñ¤6§=¡=°Ó#;Ò;Ð;Ð;Ü˜Ÿ™ TÕ*ô
 	˜Ÿ™ aÓ(¨!Ô,ä�y‰y�~‰~œbŸe™e E×$4Ñ$4°e·k±kÐ$AÑBÓCÄbÇiÁiÇnÁnÜ�E‰E�)˜T�/Ñ"óG
ò 
ð 	
ð 
ô 	�‰ÐOÕPØ×Ñ¤6§=¡=°Ó#;Ò;Ð;Ð;Ü˜Ÿ™ TÕ*rH   Úsparse_containerrz   rƒ   ç{®Gáz„?c                 óÒ  — |�=|r| t         vrt        j                  «        n|s| t        vrt        j                  «        |\  }}}}	|j                  \  }
}t
        j                  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
   }n*||j                  d¬«      z
  }||j                  «       z
  }d}|� ||«      }|j                  |||¬«       |	dd
 }	|j                  t        j                  |«      k(  sJ ‚t        |j                   |	«       y)zÝTest 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Á   Ì  se  € ð$ Ð#Ù˜VÔ+HÑHÜ�K‰K�MÙ 6Ô1QÑ#QÜ�K‰KŒMØ%�M€A€qˆ!ˆTØŸG™GÑ€IˆzÜ	�‰˜ ¨ˆÓ	3€BäØØ#ØØ˜Ñ.‰E°EØØ'ô€Eð 	
Š!ˆSˆbˆSˆ&‰	€AÜ
�‰˜˜1�v AÔ&€AÜ
�‰ˆa�ˆd‰€AÜ	�‰ˆr�1�r‘6ˆzÑ	˜UÑ	"€BÙØ˜‘H‰	à�—‘˜A�“ÑˆØ�—‘“‰LˆØˆ	ØÐ#Ù˜QÓˆØ	‡I�Iˆa� "€IÔ%Ø��ˆ9€Dà×ÑœvŸ}™}¨YÓ7Ò7Ð7Ð7Ü�E—K‘K Õ&rH   c                  ó8  — t         j                  dd«      } t        t        | dg¬«      }t	        j
                  t        t        j                  «      }t        || dg¬«      }t	        j
                  t        j                  |«      j                  }t        ||«       y )NrW   rV   rº   ©rz   )	Ú
y_diabetesÚreshaper   Ú
X_diabetesr@   Údotrg   r   r,   )ry   r™   ÚKÚ	dual_coefÚcoef2s        rF   Útest_primal_dual_relationshiprË     sl   € Ü×Ñ˜2˜qÓ!€AÜœ: q°°Ô7€DÜ
�‰Œzœ:Ÿ<™<Ó(€AÜ& q¨!°D°6Ô:€IÜ�F‰F”:—<‘< Ó+×-Ñ-€EÜ˜d EÕ*rH   c            
      ó  — t         j                  j                  d«      } | j                  d«      }| j                  dd«      }d}t	        j
                  t        |¬«      5  t        ||dddd d	¬
«       d d d «       y # 1 sw Y   y xY w)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Õ     st   € Ü
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!‹€AØ�	‰	�!�RÓ€AØP€OÜ	�‰Ô(°Ô	@ñ 
ÜØˆq˜ K°SÀ4ÐQRõ	
÷
÷ 
ñ 
ús   Á A<Á<Bc                  óp  — t         j                  j                  d«      } d\  }}| j                  ||«      }| j                  |«      }|d d …t         j                  f   }t         j
                  |d|z   f   }t        «       }|j                  ||«       |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                  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                  j                  d|fk(  sJ ‚|j                  j                  dk(  sJ ‚t        |j                  t         j                  «      sJ ‚t        |j                  t         j                  «      sJ ‚y )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Ø!Ñ€IˆzØ�	‰	�)˜ZÓ(€AØ�	‰	�)Ó€AØ	
Š1Œb�j‰jˆ=Ñ	€BÜ
�‰ˆa��Q‘ˆh‰€Aä‹G€Eà	‡I�Iˆa�„OØ�;‰;×Ñ  Ò-Ð-Ð-Ø×Ñ×!Ñ! RÒ'Ð'Ð'Ü�e—k‘k¤2§:¡:Ô.Ð.Ð.Ü�e×&Ñ&¬Ô.Ð.Ð.à	‡I�Iˆa�ÔØ�;‰;×Ñ  Ò-Ð-Ð-Ø×Ñ×!Ñ! TÒ)Ð)Ð)Ü�e—k‘k¤2§:¡:Ô.Ð.Ð.Ü�e×&Ñ&¬¯
©
Ô3Ð3Ð3à	‡I�Iˆa�„OØ�;‰;×Ñ  J Ò/Ð/Ð/Ø×Ñ×!Ñ! TÒ)Ð)Ð)Ü�e—k‘k¤2§:¡:Ô.Ð.Ð.Ü�e×&Ñ&¬¯
©
Ô3Ð3Ñ3rH   c                  ó   — t         j                  j                  d«      } d\  }}| j                  ||«      }| j                  |«      }t         j                  |d|z   f   }t        «       }|j                  ||«       |j                  }|j                  ||«       t        |j                  d   |«       t        |j                  d   |dz   «       y )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Ø!Ñ€IˆzØ�	‰	�)˜ZÓ(€AØ�	‰	�)Ó€AÜ
�‰ˆa��q‘ˆjÑ€Aä‹G€Eà	‡I�Iˆa�„OØ× Ñ €Ià	‡I�Iˆa�„OÜ˜×(Ñ(¨Ñ+¨YÔ7Ü˜×(Ñ(¨Ñ+¨Y¸©_Õ=rH   c                  óÔ  — t         j                  j                  d«      } d\  }}| j                  |«      }| j                  ||«      }t	        dd¬«      }t        d¬«      }|j                  ||«       |j                  ||«       t        |j                  |j                  «       |j                  ||«       |j                  ||«       t        |j                  |j                  «       y )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à Ñ€IˆzØ�	‰	�)Ó€AØ�	‰	�)˜ZÓ(€Aä˜¨5Ô1€EÜ
¨Ô
/€Cà	‡I�Iˆa�„OØ‡G�GˆAˆq„MÜ˜Ÿ™ S§Y¡YÔ/à	‡I�Iˆa�„OØ‡G�GˆAˆq„MÜ˜Ÿ™ S§Y¡YÕ/rH   c            
      óÎ  — t         j                  j                  d«      } d\  }}}| j                  ||«      }| j                  ||«      }t        j                  |«      }t        j
                  t        ||j                  «      D ��cg c],  \  }}t        |d¬«      j                  ||«      j                  ‘Œ. c}}«      }	dD �
cg c]*  }
t        ||
d¬«      j                  ||«      j                  ‘Œ, }}
|D ]  }t        |	|«       Œ t        |d d ¬	«      }d
}t        j                  t        |¬«      5  |j                  ||«       d d d «       y c c}}w c c}
w # 1 sw Y   y xY w)Né*   )é   rZ   rÍ   r9   ©rz   r€   )r7   r8   r:   r9   r;   r<   çê-�™—q=)rz   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”   r,   r’   ÚraisesÚ
ValueError)ro   rR   rS   Ú	n_targetsrp   ry   Ú	penaltiesrz   ÚtargetÚcoef_choleskyr€   Úcoefs_indiv_penÚcoef_indiv_penrà   Úerr_msgs                  rF   Útest_ridge_individual_penaltiesrú   [  sP  € ô �)‰)×
Ñ
 Ó
#€Cà'0Ñ$€Iˆz˜9Ø�	‰	�)˜ZÓ(€AØ�	‰	�)˜YÓ'€Aä—	‘	˜)Ó$€Iä—H‘Hô "% Y°·±Ó!4÷	
á��vô ˜ jÔ1×5Ñ5°a¸Ó@×FÓFó	
ó€Mð Nöàô 	�I f°%Ô8×<Ñ<¸QÀÓB×HÓHð€Oð ð *ò AˆÜ! -°Õ@ðAô ˜	 # 2˜Ô'€EØS€GÜ	�‰”z¨Ô	1ñ Ø�	‰	�!�QŒ÷ð ùó!	
ùò÷ð ús   Â1E
Ã/EÄ4EÅE$Ún_col)r�   rØ   )é   Úcsr_containerc                 óT  — t         j                  j                  d«      }|j                  dd«      }|j                  d«      }|j                  t	        |«      «      } |j                  dg| ¢­Ž } |j                  dg| ¢­Ž }t         ||«      ||«      }t        j                  ||d d …d f   |z  z
  |d d …d f   g«      }	t        |	j                  |«      |j                  |«      «       t        |	j                  j                  |«      |j                  j                  |«      «       y )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	  {  sû   € ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�"�aÓ€AØ
�)‰)�A‹,€CØ�i‰iœ˜A›Ó€GØˆ�	‰	�"Ð�uÒ€AØˆ�	‰	�!Ð�eÒ€AÜ¡¨aÓ 0°#°wÓ?€HÜŸ™ A¨²°4°Ñ(8¸3Ñ(>Ñ$>ÀÊÈ4ÈÑ@PÐ#QÓRÐÜÐ&×*Ñ*¨1Ó-¨x¯|©|¸A«Ô?ÜÐ&×(Ñ(×,Ñ,¨QÓ/°·±·±ÀÓ1BÕCrH   r—   ))rZ   rV   )é   r  )rü   é   )rJ   rJ   )rë   rë   Úuniform_weightsc                 ó  — t         j                  j                  d«      } |j                  | Ž }|r#t        j                  |j
                  d   «      }n|j                  d| d   «      }t        j                  |«      }t        j                  |d|¬«      }||z
  |d d …d f   z  }|j                  |j                  «      }	 |||d d …d f   z  «      }
t        d¬«      }|j                  |
|«      \  }}t        ||«       t        |	|«       y ©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ÙÜ�W‰W�Q—W‘W˜Q‘ZÓ ‰à�]‰]˜1˜e A™hÓ'ˆÜ�g‰g�b‹k€GÜ�Z‰Z˜ ¨2Ô.€FØ�f‘* ª¨4¨Ñ 0Ñ0€JØ—‘˜zŸ|™|Ó,€IÙ˜Q ª¨D¨Ñ!1Ñ1Ó2€HÜ
 $Ô
'€CØ#&×#4Ñ#4°X¸wÓ#GÑ €M�=Ü�F˜MÔ*Ü�I˜}Õ-rH   c                 ó  — t         j                  j                  d«      } |j                  | Ž }|r#t        j                  |j
                  d   «      }n|j                  d| d   «      }t        j                  |«      }t        j                  |d|¬«      }||z
  |d d …d f   z  }|j                  j                  |«      }	 |||d d …d f   z  «      }
t        d¬«      }|j                  |
|«      \  }}t        ||«       t        |	|«       y 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ÙÜ�W‰W�Q—W‘W˜Q‘ZÓ ‰à�]‰]˜1˜e A™hÓ'ˆÜ�g‰g�b‹k€GÜ�Z‰Z˜ ¨2Ô.€FØ�f‘* ª¨4¨Ñ 0Ñ0€JØ —l‘l×&Ñ& zÓ2€OÙ˜Q ª¨D¨Ñ!1Ñ1Ó2€HÜ
 $Ô
'€CØ"%×"9Ñ"9¸(ÀGÓ"LÑ€L�-Ü�F˜MÔ*Ü�O \Õ2rH   rV   c                 ó  — t        | ||||||d|¬«	      \  }}}|dk(  rt        j                  |g«      }||z  }t        j                  j	                  |«      j                  d||j                  «      dkD  }|j                  «       }d|| <   d||<   ||j                  |«      z  }|
rE||j                  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_regressionr0  ´  s  € ô ØØØ#ØØØØØØ!ô
�G€A€qˆ!ð �Q‚Ü�J‰J˜�s‹OˆØˆ�M€Aä
�	‰	×Ñ˜lÓ+×4Ñ4°QÐ8JÈAÏGÉGÓTÐWXÑXð 	ð —‘“€IØ€A€t€e�HØ€Iˆd�OØˆ�‰�qÓ	Ñ€AÙØ	ˆQ�U‰U”2—6‘6˜!“9˜q‘= 1Ñ$Ó%Ñ%ˆÜ�F‰F�1‹I˜‰MˆØ�Q‚Øˆa‰DˆÙØ�!�QˆwˆØˆaˆ4€KrH   zsolver, sparse_containerc              #   ó6   K  — | ]  \  }}|�|dv r||f–— Œ y ­w)N)r8   Úridgecvr�   )Ú.0r€   r¹   s      rF   ú	<genexpr>r4  ã  s3   è ø€ ò á&ˆVÐ%ð Ð# vÐ1IÑ'Ið 
Ð!Ô"ñùs   ‚)r9   r;   r8   r:   r<   r2  z"n_samples,dtype,proportion_nonzero))rë   Úfloat32çš™™™™™¹?)é(   r5  rƒ   )rë   Úfloat64çš™™™™™É?Úseedrü   c                 óä  — d}|dkD  rdnd}t        dd||||¬«      \  }}	t        |«      }t        d|¬	«      j                  ||	«      }
|j	                  |d
¬«      }|	j	                  |d
¬«      }	|� ||«      }| dk(  rt        |g¬«      }nt        | d|¬«      }|j                  ||	«       t        |j                  |
j                  dd¬«       t        |j                  |
j                  dd¬«       y )Nrƒ   gÍÌÌÌÌÌì?g      I@g     @@rZ   é   )r#  rS   r*  r$  rU   rR   r7   )r€   rz   F)r(  r2  ©Úalphasr†   )r€   rˆ   rz   rX   ©r¤   Úrtol)	r0  r"   r   r�   Úastyper   r*   r”   r‘   )r€   r*  rR   Údtyper¹   r:  rz   r$  rp   ry   Ú	svd_ridgerà   s               rF   Útest_solver_consistencyrD  á  sî   € ð& €EØ&¨Ò,‰D°%€EÜ)ØØØ-ØØØô�D€A€qô 	�Q‹€Aä˜U¨%Ô0×4Ñ4°Q¸Ó:€IØ	�‰�˜UˆÓ#€AØ	�‰�˜UˆÓ#€AØÐ#Ù˜QÓˆØ�ÒÜ ˜wÔ'‰ä˜V¨°eÔ<ˆØ	‡I�Iˆa�„OÜ�E—K‘K §¡°tÀ$ÕGÜ�E×$Ñ$ i×&:Ñ&:ÀÈDÖQrH   Úgcv_moder7   ÚeigenÚX_containerÚX_shape)rÿ   r   )rÿ   rë   zy_shape, noise))©rÿ   rƒ   )©rÿ   rV   ç      >@)©rÿ   rü   ç     Àb@c           	      ó  — |\  }}t        |«      dk(  r|d   nd}t        |||dd|d¬«      \  }	}
|
j                  |«      }
g d¢}t        |||d	¬
«      }t        | ||¬«      }|j	                  |	|
«        ||	«      }|j	                  ||
«       |j
                  t        j                  |j
                  «      k(  sJ ‚t        |j                  |j                  d¬«       t        |j                  |j                  d¬«       y )NrJ   rW   rV   r   FrÍ   ©rR   rS   ró   rU   r%  r$  r"  ©rX   r6  rƒ   ç      $@g     @�@Úneg_mean_squared_error©Úcvr�   r>  Úscoring)rE  r�   r>  rX   ©r@  )r  r0  rÅ   r   r�   Úalpha_r’   r“   r*   r”   r‘   )rE  rG  rH  Úy_shaper�   r$  rR   rS   ró   rp   ry   r>  Ú	loo_ridgeÚ	gcv_ridgeÚX_gcvs                  rF   Útest_ridge_gcv_vs_ridge_loo_cvr\    sý   € ð $Ñ€IˆzÜ" 7›|¨qÒ0�˜’°a€IÜ)ØØØØØØØô�D€A€qð 	
�	‰	�'Ó€Aâ(€FÜØØ#ØØ(ô	€Iô ØØ#Øô€Ið ‡M�M�!�QÔá˜‹N€EØ‡M�M�%˜Ôà×ÑœvŸ}™}¨Y×-=Ñ-=Ó>Ò>Ð>Ð>Ü�I—O‘O Y§_¡_¸4Õ@Ü�I×(Ñ(¨)×*>Ñ*>ÀTÖJrH   c            	      óì  — d} d\  }}d}t        |||dddd¬«      \  }}g d¢}t        |d	|| ¬
«      }t        d	|| ¬«      }|j                  ||«       |j                  ||«       |j                  t	        j
                  |j                  «      k(  s!J d|j                  ›d|j                  ›�«       ‚t        |j                  |j                  d¬«       t        |j                  |j                  d¬«       y )NÚexplained_variance)rZ   rÍ   rV   r   FrÍ   rO  rP  TrS  )r�   r>  rU  zgcv_ridge.alpha_=z, loo_ridge.alpha_=rX   rV  )	r0  r   r�   rW  r’   r“   r*   r”   r‘   )	rU  rR   rS   ró   rp   ry   r>  rY  rZ  s	            rF   Útest_ridge_loo_cv_asym_scoringr_  E  sý   € à"€GØ!Ñ€IˆzØ€IÜ)ØØØØØØØô�D€A€qò )€FÜØ D°Àô€Iô  d°6À7ÔK€Ià‡M�M�!�QÔØ‡M�M�!�QÔà×ÑœvŸ}™}Ø×Ñó ò ð 3à
ˆ)×
Ñ
Ð	Ð0˜y×/Ñ/Ð1Ð2ó3ð ô �I—O‘O Y§_¡_¸4Õ@Ü�I×(Ñ(¨)×*>Ñ*>ÀTÖJrH   rS   r   rë   zy_shape, fit_intercept, noise))rI  Trƒ   )rJ  Tg      4@)rL  TrM  )rL  FrK  c                 ón  — g d¢}t         j                  j                  d«      }t        |«      dk(  r|d   nd}t	        d||dd|¬«      \  }	}
|
j                  |«      }
d	|j                  t        |	«      «      z  }||j                  «       z
  dz   j                  t        «      }t        j                  t        j                  |	j                  d   «      |«      }|j                  t        «      }|	|   |
|   }}t        |	j                  d   ¬
«      }|j                  |||¬«      }t!        ||d|¬«      }|j#                  ||«       t%        |j&                  |¬«      }|j                  |||¬«      }t)        ||||¬«      }|j                  |j                  k7  r|j                  |j                  «      }||z
  dz  }t        j                  |	j                  d   «      D �cg c]  }t        j*                  |||k(     d¬«      ‘Œ! }}t        j,                  |«      } ||	«      }t!        |d| |¬«      }|j#                  ||
|¬«       t        |«      dk(  r0|j.                  d d …d d …|j1                  |j&                  «      f   }n,|j.                  d d …|j1                  |j&                  «      f   }|j&                  t3        j4                  |j&                  «      k(  sJ ‚t7        ||d¬«       t7        |j8                  |j8                  d¬«       t7        |j:                  |j:                  d¬«       y c c}w )NrP  r   rJ   rW   rV   rÿ   F)rR   rS   ró   rU   r%  r$  rü   )Ún_splits)ÚgroupsrR  )r>  rT  rU  r�   rå   ©rT  r‰   T)r>  Ústore_cv_resultsrE  r�   r‹   rX   rV  )r@   rb   rc   r  r0  rÅ   rÒ   ra   rA  ÚintÚrepeatrî   r—   rÝ   r   Úsplitr   r�   r   rW  r!   r�   r&  Úcv_results_Úindexr’   r“   r*   r”   r‘   )rE  rG  r�   rS   rX  r$  r>  ro   ró   rp   ry   rŒ   ÚindicesÚX_tiledÚy_tiledrT  ÚsplitsÚkfoldÚ	ridge_regÚpredictionsÚkfold_errorsÚir[  rZ  Ú
gcv_errorss                            rF   Útest_ridge_gcv_sample_weightsrt  e  sÆ  € ò )€FÜ
�)‰)×
Ñ
 Ó
"€CÜ" 7›|¨qÒ0�˜’°a€IÜ)ØØØØØØô�D€A€qð 	
�	‰	�'Ó€Aà˜Ÿ	™	¤# a£&Ó)Ñ)€MØ" ]×%6Ñ%6Ó%8Ñ8¸1Ñ<×DÑDÄSÓI€MÜ�i‰iœŸ	™	 !§'¡'¨!¡*Ó-¨}Ó=€GØ!×(Ñ(¬Ó/€MØ˜‘z 1 W¡:ˆW€Gä	˜QŸW™W Q™ZÔ	(€BØ�X‰X�g˜w¨wˆXÓ7€FÜØØØ(Ø#ô	€Eð 
‡I�Iˆg�wÔä˜EŸL™L¸ÔF€IØ�X‰X�g˜w¨wˆXÓ7€FÜ# I¨w¸ÀFÔK€KØ×Ñ˜GŸM™MÒ)Ø!×)Ñ)¨'¯-©-Ó8ˆØ˜kÑ)¨aÑ/€Lä<>¿I¹IÀaÇgÁgÈaÁjÓ<QöØ78Œ�‰ˆ|˜G q™LÑ)°Ö2ð€Lð ô —:‘:˜lÓ+€Lá˜‹N€EÜØØØØ#ô	€Ið ‡M�M�%˜¨-€MÔ8Ü
ˆ7ƒ|�qÒØ×*Ñ*ª1ªa°·±¸e¿l¹lÓ1KÐ+KÑL‰
à×*Ñ*ª1¨f¯l©l¸5¿<¹<Ó.HÐ+HÑIˆ
à�<‰<œ6Ÿ=™=¨×)9Ñ)9Ó:Ò:Ð:Ð:Ü�J °4Õ8Ü�I—O‘O U§[¡[°tÕ<Ü�I×(Ñ(¨%×*:Ñ*:ÀÖFùò+s   Ç!$L2z2mode, mode_n_greater_than_p, mode_p_greater_than_n))Nr7   rF  )Úautor7   rF  )rF  rF  rF  )r7   r7   r7   c                 ó�   — t        dd¬«      \  }}| � | |«      }t        ||«      |k(  sJ ‚t        |j                  |«      |k(  sJ ‚y )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_choicerz  ¯  sT   € ô  Q°1Ô5�D€A€qØÐ#Ù˜QÓˆÜ˜1˜dÓ#Ð'<Ò<Ð<Ð<Ü˜1Ÿ3™3 Ó%Ð)>Ò>Ð>Ñ>rH   c                 óè  — t         j                  d   }g }| €	t         d}}n | t         «      d}}t        |¬«      }|j                  |t        «       |j
                  }|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|¬«      }|j                  |t        «       |j
                  t        j                  |«      k(  sJ ‚| €O|j                  |t        t        j                  |«      ¬	«       |j
                  t        j                  |«      k(  sJ ‚t        j                   t        t        f«      j"                  }|j                  ||«       |j%                  |«      }|j                  |t        «       |j%                  |«      }t'        t        j                   ||f«      j"                  |d
¬«       |S )Nr   TFræ   )Úgreater_is_better)r�   rU  c                 ó   — t        | |«       S r?   )r   )Úxry   s     rF   Úfuncz_test_ridge_loo.<locals>.funcÜ  s   € Ü" 1 aÓ(Ð(Ð(rH   rR  r‹   çñhãˆµøä>rV  )rÆ   r—   r   r�   rÄ   rW  Úappendr.   r   r   r   r’   r“   r   r@   r–   Úvstackrg   r°   r*   )r¹   rR   Úretrp   r�   Ú	ridge_gcvrW  ÚfrU  Ú
ridge_gcv2r  Ú
ridge_gcv3ÚscorerÚ
ridge_gcv4rß   ÚY_predrD   s                    rF   Ú_test_ridge_loor‹  Ã  s  € ä× Ñ  Ñ#€Ià
€CàÐÜ% tˆ=‰á+¬JÓ7¸ˆ=ˆÜ¨Ô6€Ið ‡M�M�!”ZÔ Ø×Ñ€FØ‡J�JˆvÔô 	€AÜÔ,ÀÔF€GÜ u°gÔ>€JØ�A€j‡n�nÓ�aœÔ$Ø×Ñ¤§¡¨fÓ 5Ò5Ð5Ð5ò)ô ˜$Ó€GÜ u°gÔ>€JØ�A€j‡n�nÓ�aœÔ$Ø×Ñ¤§¡¨fÓ 5Ò5Ð5Ð5ô Ð0Ó1€FÜ u°fÔ=€JØ‡N�N�1”jÔ!Ø×Ñ¤§¡¨fÓ 5Ò5Ð5Ð5ð ÐØ�‰�aœ´2·7±7¸9Ó3EˆÔFØ×Ñ¤6§=¡=°Ó#8Ò8Ð8Ð8ô 	�	‰	”:œzÐ*Ó+×-Ñ-€Aà‡M�M�!�QÔØ×Ñ˜qÓ!€FØ‡M�M�!”ZÔ Ø×Ñ˜qÓ!€Fä”B—I‘I˜v vÐ.Ó/×1Ñ1°6ÀÕEà€JrH   c                 óB  — | €t         n | t         «      }t        «       }|j                  |t        «       |j	                  |«       t        |j                  j                  «      dk(  sJ ‚t        |j                  «      t        j                  u sJ ‚t        d«      }|j                  |¬«       |j                  |t        «       |j	                  |«       t        |j                  j                  «      dk(  sJ ‚t        |j                  «      t        j                  u sJ ‚y )NrV   rÍ   rc  )rÆ   r   r�   rÄ   r°   r  r”   r—   Útyper‘   r@   r8  r   Ú
set_params)r¹   rp   Úridge_cvrT  s       rF   Ú_test_ridge_cvr�  ü  sá   € Ø&Ð.�
Ñ4DÄZÓ4P€AÜ‹y€HØ‡L�L�”JÔØ×Ñ�QÔäˆx�~‰~×#Ñ#Ó$¨Ò)Ð)Ð)Ü�×#Ñ#Ó$¬¯
©
Ñ2Ð2Ð2ä	ˆq‹€BØ×Ñ˜2ÐÔØ‡L�L�”JÔØ×Ñ�QÔäˆx�~‰~×#Ñ#Ó$¨Ò)Ð)Ð)Ü�×#Ñ#Ó$¬¯
©
Ñ2Ð2Ñ2rH   zridge, make_dataset©rd  c                 ó^   —  |dd¬«      \  }}| j                  ||«       t        | d«      rJ ‚y )Né   rê   ©rR   rU   rh  )r�   Úhasattr)rà   Úmake_datasetrp   ry   s       rF   Ú$test_ridge_gcv_cv_results_not_storedr—    s4   € ñ  !°"Ô5�D€A€qØ	‡I�Iˆa�„OÜ�u˜mÔ,Ð,Ð,Ð,rH   rT  c                 ó¼   —  |dd¬«      \  }}| j                  d|¬«       | j                  ||«       t        | d«      sJ ‚t        | j                  t
        «      sJ ‚y )Nr“  rê   r”  F)rd  rT  Úbest_score_)rŽ  r�   r•  rÛ   r™  rÝ   )rà   r–  rT  rp   ry   s        rF   Útest_ridge_best_scorerš    sZ   € ñ  !°"Ô5�D€A€qØ	×Ñ e°ÐÔ3Ø	‡I�Iˆa�„OÜ�5˜-Ô(Ð(Ð(Ü�e×'Ñ'¬Ô/Ð/Ñ/rH   c            	      ó�  — t         j                  j                  d«      } d\  }}}| j                  ||«      }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   | j                  ||«      z   }d}|j                  D �cg c](  }t        |¬	«      j                  ||«      j                  ‘Œ* }}t        |d
¬«      j                  ||«      }	t        ||	j                  «       t        t        |	j                  ¬«      j                  ||«      j                  |	j                  «       t        |d
d
¬«      j                  ||«      }	|	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                  j                  |fk(  sJ ‚|	j                  j                  |fk(  sJ ‚|	j                   j                  ||dfk(  sJ ‚t        |d
d
¬«      j                  ||d d …df   «      }	t        j$                  |	j                  «      sJ ‚t        j$                  |	j                  «      sJ ‚|	j                   j                  |t#        |«      fk(  sJ ‚t        |d
d¬«      j                  ||«      }	t        ||	j                  «       t        t        |	j                  ¬«      j                  ||«      j                  |	j                  «       t        |t'        «       d
¬«      }	d}
t)        j*                  t,        |
¬«      5  |	j                  ||«       d d d «       t        |dd
¬«      }	t)        j*                  t,        |
¬«      5  |	j                  ||«       d d d «       y c c}w # 1 sw Y   ŒSxY w# 1 sw Y   y xY w)Nrê   )rë   rÍ   rü   r   rV   gš™™™™™©?rJ   rX   )rV   éd   éè  r=  T)r>  Úalpha_per_targetrÃ   )r>  rž  rd  Úr2)r>  rž  rU  )r>  rT  rž  z3cv!=None and alpha_per_target=True are incompatiblerÎ   r“  )r@   rb   rc   rÒ   rÇ   r–   rg   r   r�   rW  r-   r,   r   r”   r—   r™  rh  r  Úisscalarr    r’   rñ   rò   )ro   rR   rS   ró   ry   rp   r>  rõ   Úoptimal_alphasr�  Úmsgs              rF   Ú"test_ridge_cv_individual_penaltiesr£  *  sÂ  € ô �)‰)×
Ñ
 Ó
#€Cð (0Ñ$€Iˆz˜9Ø�	‰	�)˜YÓ'€Aä
�‰ˆq’�Q�C�‰yœ"Ÿ'™' 1 j /Ó2Ó3Ü
�&‰&�’1�q�c�6‘˜D¤2§7¡7¨A¨z¨?Ó#;Ñ;Ó
<ñ	=ä
�&‰&�’1�q�c�6‘˜E¤B§G¡G¨Q°
¨OÓ$<Ñ<Ó
=ñ	>ð �)‰)�I˜zÓ
*ñ	+ð ð €Fð RS×QTÑQTÖUÀv”g VÔ,×0Ñ0°°FÓ;×BÓBÐU€NÐUô ˜f°tÔ<×@Ñ@ÀÀAÓF€HÜ�~ x§¡Ô7ô Ü�H—O‘OÔ$×(Ñ(¨¨AÓ.×4Ñ4°h·n±nôô
 ˜f°tÈdÔS×WÑWØ	ˆ1ó€Hð �?‰?× Ñ  Y LÒ0Ð0Ð0Ø×Ñ×%Ñ%¨)¨Ò5Ð5Ð5Ø×Ñ×%Ñ%¨)´S¸³[À)Ð)LÒLÐLÐLô ˜a°$ÈÔN×RÑRÐSTÐVWÓX€HØ�?‰?× Ñ  Y LÒ0Ð0Ð0Ø×Ñ×%Ñ%¨)¨Ò5Ð5Ð5Ø×Ñ×%Ñ%¨)°YÀÐ)BÒBÐBÐBô ˜f°tÈdÔS×WÑWØ	ˆ1ŠQ�ˆT‰7ó€Hô �;‰;�x—‘Ô'Ð'Ð'Ü�;‰;�x×+Ñ+Ô,Ð,Ð,Ø×Ñ×%Ñ%¨)´S¸³[Ð)AÒAÐAÐAô ˜f°tÀTÔJ×NÑNÈqÐRSÓT€HÜ�~ x§¡Ô7ÜÜ�H—O‘OÔ$×(Ñ(¨¨AÓ.×4Ñ4°h·n±nôô ˜f¬«ÈÔN€HØ
?€CÜ	�‰”z¨Ô	-ñ Ø�‰�Q˜Ô÷ä˜f¨¸TÔB€HÜ	�‰”z¨Ô	-ñ Ø�‰�Q˜Ô÷ð ùòa V÷Zð ú÷ð ús   Ã<-P+ÏP0ÐP<Ð0P9Ð<Qc                 óÂ   — | €t         n | t         «      }t        d¬«      }|j                  |t        «       t	        j
                  |j                  |t        «      d«      S )NFræ   rÍ   )rÆ   r   r�   rÄ   r@   Úroundr•   )r¹   rp   rà   s      rF   Ú_test_ridge_diabetesr¦  q  sH   € Ø&Ð.�
Ñ4DÄZÓ4P€AÜ Ô&€EØ	‡I�Iˆa”ÔÜ�8‰8�E—K‘K ¤:Ó.°Ó2Ð2rH   c                 óä  — | €t         n | t         «      }t        j                  t        t        f«      j                  }t         j
                  d   }t        d¬«      }|j                  ||«       |j                  j
                  d|fk(  sJ ‚|j                  |«      }|j                  |t        «       |j                  |«      }t        t        j                  ||f«      j                  |d¬«       y )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º   € à&Ð.�
Ñ4DÄZÓ4P€AÜ
�	‰	”:œzÐ*Ó+×-Ñ-€AÜ×!Ñ! !Ñ$€Jä Ô&€EØ	‡I�Iˆa�„OØ�;‰;×Ñ  J Ò/Ð/Ð/Ø�]‰]˜1Ó€FØ	‡I�Iˆa”ÔØ�]‰]˜1Ó€FÜœbŸi™i¨°Ð(8Ó9×;Ñ;¸VÈQÖOrH   c                 óX  — t        j                  t        «      j                  d   }t        j                  d   }| €t        n | t        «      }t        «       t        «       fD ]g  }|j                  |t        «       |j                  j                  ||fk(  sJ ‚|j                  |«      }t        j                  t        |k(  «      dkD  rŒgJ ‚ t        d«      }t        |¬«      }|j                  |t        «       |j                  |«      }t        j                  t        |k(  «      dk\  sJ ‚y )Nr   rV   gHáz®Gé?rÍ   rc  gš™™™™™é?)r@   ÚuniqueÚy_irisr—   ÚX_irisr   r   r�   r”   r°   rA   r   )r¹   Ú	n_classesrS   rp   ÚregrD   rT  s          rF   Ú_test_ridge_classifiersr±  ‡  só   € Ü—	‘	œ&Ó!×'Ñ'¨Ñ*€IÜ—‘˜a‘€JØ"Ð*�Ñ0@ÄÓ0H€AäÓ!Ô#4Ó#6Ð7ò 0ˆØ�‰�”6ÔØ�y‰y�‰ 9¨jÐ"9Ò9Ð9Ð9Ø—‘˜Q“ˆÜ�w‰w”v Ñ'Ó(¨4Ó/Ð/Ð/ð	0ô 
ˆq‹€BÜ
˜rÔ
"€CØ‡G�GˆAŒvÔØ�[‰[˜‹^€FÜ�7‰7”6˜VÑ#Ó$¨Ò+Ð+Ñ+rH   rU  ÚaccuracyrÍ   c                 óÀ   — | €t         n | t         «      }t        |«      rt        |«      n|}t        ||¬«      }|j	                  |t
        «      j                  |«       y )N)rU  rT  )r®  Úcallabler   r   r�   r­  r°   )r¹   rU  rT  rp   Úscoring_Úclfs         rF   Ú"test_ridge_classifier_with_scoringr·  ™  sN   € ð #Ð*�Ñ0@ÄÓ0H€AÜ'/°Ô'8Œ{˜7Ô#¸g€HÜ
 H°Ô
4€Cà‡G�GˆAŒvÓ×Ñ˜qÕ!rH   c                 óR  — d„ }| €t         n | t         «      }t        j                  ddd¬«      }t        |t	        |«      |¬«      }|j                  |t        «       |j                  t        j                  d«      k(  sJ ‚|j                  t        j                  |d   «      k(  sJ ‚y )	Nc                  ó   — y)Nçáz®GáÚ?r�   rB   s      rF   Ú_dummy_scorez:test_ridge_regression_custom_scoring.<locals>._dummy_score­  s   € ØrH   éþÿÿÿrJ   rÍ   )Únum)r>  rU  rT  rº  r   )r®  r@   Úlogspacer   r   r�   r­  r™  r’   r“   rW  )r¹   rT  r»  rp   r>  r¶  s         rF   Ú$test_ridge_regression_custom_scoringr¿  §  s‰   € òð #Ð*�Ñ0@ÄÓ0H€AÜ�[‰[˜˜Q AÔ&€FÜ
 6´;¸|Ó3LÐQSÔ
T€CØ‡G�GˆAŒvÔØ�?‰?œfŸm™m¨DÓ1Ò1Ð1Ð1à�:‰:œŸ™ v¨a¡yÓ1Ò1Ð1Ñ1rH   c                 ó  — | €t         n | t         «      }t        dd¬«      }|j                  |t        «       |j	                  |t        «      }t        dd¬«      }|j                  |t        «       |j	                  |t        «      }||k\  sJ ‚y )Nr€  F)rˆ   r�   rX   )rÆ   r   r�   rÄ   r•   )r¹   rp   rà   r•   Úridge2Úscore2s         rF   Ú_test_tolerancerÃ  ¹  st   € Ø&Ð.�
Ñ4DÄZÓ4P€Aä�d¨%Ô0€EØ	‡I�Iˆa”ÔØ�K‰K˜œ:Ó&€Eä�t¨5Ô1€FØ
‡J�Jˆq”*ÔØ�\‰\˜!œZÓ(€Fà�FŠ?Ð‰?rH   c                 óð  — t        ||«      }t        j                  |«      }t        j                  |«      }|j	                  ||¬«      }|j	                  ||¬«      }	|j                  ||«       |j                  }
|j                  }t        d¬«      5  t        |«      j                  ||	«      }|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 «       y # 1 sw Y   y xY w)N©ÚdeviceT©Úarray_api_dispatch)rQ   )Úxpr£   r�   )r/   r®  rA  r­  r&  r�   r”   r‘   r   r   r—   rB  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×  Ç  sJ  € Ü	˜o¨vÓ	6€Bä—‘˜jÓ)€IÜ—‘˜jÓ)€Ià—
‘
˜9¨V�
Ó4€IØ—
‘
˜9¨V�
Ó4€Ià‡M�M�)˜YÔ'Ø�o‰o€GØ×'Ñ'€Lä	¨4Ô	0ñ 
Ü˜YÓ'×+Ñ+¨I°yÓAˆØ×$Ñ$ˆØ�}‰} Ò$Ð$Ð$Ø�}‰} 	§¡Ò/Ð/Ð/äÜ˜g¨"Ô-ØÜ 
Ó+õ	
ð
 $×.Ñ.ˆØ×!Ñ! RÒ'Ð'Ð'Ø×!Ñ! Y§_¡_Ò4Ð4Ð4äÜ˜l¨rÔ2ØÜ 
Ó+õ	
÷
÷ 
ñ 
ús   ÂCE,Å,E5z#array_namespace, device, dtype_nameÚcheck)ÚidsrË  ©r€   c                 óJ   — | j                   j                  } ||| |||¬«       y )N)rÆ  rÍ  )Ú	__class__Ú__name__)rË  rØ  rÌ  rÆ  rÍ  rÊ  s         rF   Útest_ridge_array_api_compliancerÞ  ê  s%   € ð  ×Ñ×'Ñ'€DÙ	ˆ$�	˜?°6ÀjÖQrH   rÌ  )Úinclude_numpy_namespacesc                 óÞ  — t        | d ¬«      }|j                  t        d d «      }|j                  t        d d «      }t        j
                  d   d   j                  }|ddhz
  D ]p  }t	        ||dk(  ¬«      }d	|j                  › d
|› d�}t        j                  t        |¬«      5  t        d¬«      5  |j                  ||«       d d d «       d d d «       Œr t	        dd¬«      }d|j                  › d�}t        j                  t        |¬«      5  t        d¬«      5  |j                  ||«       d d d «       d d d «       t	        «       }d|j                  › d�}t        j                  t        |¬«      5  t        d¬«      5  |j                  ||«       d d d «       d d d «       y # 1 sw Y   ŒáxY w# 1 sw Y   �ŒWxY w# 1 sw Y   Œ�xY w# 1 sw Y   Œ”xY w# 1 sw Y   ŒCxY w# 1 sw Y   y xY w)NrÅ  rÍ   r€   r   ru  r7   Úlbfgs©r€   r,  z Array API dispatch to namespace z" only supports solver 'svd'. Got 'z'.rÎ   TrÇ  zYThe solvers that support positive fitting do not support Array API dispatch to namespace zc. Please either disable Array API dispatch, or use a numpy-like namespace, or set `positive=False`.z&Using Array API dispatch to namespace zâ with `solver='auto'` will result in using the solver 'svd'. The results may differ from those when using a Numpy array, because in that case the preferred solver would be cholesky. Set `solver='svd'` to suppress this warning.)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è  € ô 
˜o°dÔ	;€Bà—
‘
œ6 " 1˜:Ó&€IØ—
‘
œ6 " 1˜:Ó&€Iä×4Ñ4°XÑ>¸qÑA×IÑIÐØ# v¨u oÑ5ò 	0ˆÜ˜V¨f¸Ñ.?Ô@ˆà.¨r¯{©{¨mð <"Ø"( ¨ð-ð 	ô
 �]‰]œ:¨\Ô:ñ 	0Ü°4Ô8ñ 0Ø—	‘	˜) YÔ/÷0÷	0ð 	0ð	0ô ˜¨$Ô/€Eð	+Ø+-¯;©;¨-ð 8.ð	.ð ô 
�‰”z¨Ô	6ñ ,Ü¨tÔ4ñ 	,Ø�I‰I�i Ô+÷	,÷,ô ‹G€Eà
0°·±°ð >Dð 	Dð ô 
�‰”k¨Ô	6ñ ,Ü¨tÔ4ñ 	,Ø�I‰I�i Ô+÷	,÷,ð ,÷-0ð 0ú÷	0ñ 	0ú÷	,ð 	,ú÷,ð ,ú÷	,ð 	,ú÷,ð ,úsl   Â&F2Â3F&ÃF2ÄGÄF?Ä0GÅ5G#ÆGÆG#Æ&F/Æ+F2Æ2F<	Æ?G	ÇGÇGÇG 	ÇG#Ç#G,c                 ó  — t        | d ¬«      }|j                  t        d d «      }|j                  t        d d «      }t	        «       }d}t        j                  «       5  t        j                  d|t        ¬«       t        d¬«      5  |j                  ||«       d d d «       d d d «       t        d¬«      5  t	        dd¬	«      j                  ||«       d d d «       y # 1 sw Y   ŒDxY w# 1 sw Y   ŒHxY w# 1 sw Y   y xY w)
NrÅ  rÍ   zkResults might be different than when Array API dispatch is disabled, or when a numpy-like namespace is usedÚerror)ÚmessageÚcategoryTrÇ  ru  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ç   € ä	˜o°dÔ	;€Bà—
‘
œ6 " 1˜:Ó&€IØ—
‘
œ6 " 1˜:Ó&€Iä‹G€Eð	;ð ô
 
×	 Ñ	 Ó	"ñ ,Ü×Ñ °ÌÕTÜ¨tÔ4ñ 	,Ø�I‰I�i Ô+÷	,÷,ô 
¨4Ô	0ñ FÜ�V dÔ+×/Ñ/°	¸9ÔE÷Fð F÷	,ð 	,ú÷,ð ,ú÷Fð Fús0   Á)C)ÂCÂC)Â6C5ÃC&	Ã"C)Ã)C2Ã5C>Ú	test_funcc                 óL   —  | d «      } | |«      }|�|�t        ||d¬«       y y y )Nrü   r¨  )r,   )rñ  rý   Ú	ret_denseÚ
ret_sparses       rF   Útest_dense_sparserõ  C  s6   € ñ ˜$“€Iá˜=Ó)€JàÐ Ð!7Ü! )¨ZÀÖCð "8ÐrH   c                  ó®  — t        j                  ddgddgddgddgddgg«      } g d¢}t        d ¬«      }|j                  | |«       t	        |j                  ddgg«      t        j                  d	g«      «       t        d	d
i¬«      }|j                  | |«       t	        |j                  ddgg«      t        j                  dg«      «       t        d¬«      }|j                  | |«       t	        |j                  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 ¬«      }|j                  | |«       t        d¬«      }|j                  | |«       t        |j                  «      dk(  sJ ‚t        |j                  |j                  «       t        |j                  |j                  «       y )Nç      ð¿r   çš™™™™™é¿rƒ   rÐ   ©rV   rV   rV   rW   rW   ©Úclass_weightr9  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¸ÀcÈ3ÀZÐPÓQ€AÚ€Aä
 tÔ
,€CØ‡G�GˆAˆq„MÜ�s—{‘{ S¨$ K =Ó1´2·8±8¸Q¸C³=ÔAô ¨¨5 zÔ
2€CØ‡G�GˆAˆq„Mô �s—{‘{ S¨$ K =Ó1´2·8±8¸R¸D³>ÔBô  zÔ
2€CØ‡G�GˆAˆq„MÜ�s—{‘{ S¨$ K =Ó1´2·8±8¸Q¸C³=ÔAô 	�‰�4˜�,  q 	¨D°$¨<¸#¸s¸ÐDÓE€AÚ€AÜ
 tÔ
,€CØ‡G�GˆAˆq„MÜ¨
Ô3€DØ‡H�HˆQ�„NÜˆt�}‰}Ó Ò"Ð"Ð"Ü˜cŸi™i¨¯©Ô4Ü˜cŸn™n¨d¯o©oÕ>rH   r°  c                 óú  —  | «       }|j                  t        j                  t        j                  «        | d¬«      }|j                  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œ} | «       }|j                  t        j                  t        j                  |«        | |¬«      }|j                  t        j                  t        j                  «       t	        |j
                  |j
                  «        | «       }|j                  t        j                  t        j                  |dz  «        | |¬«      }|j                  t        j                  t        j                  |«       t	        |j
                  |j
                  «       y	)
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=  € ñ
 ‹5€DØ‡H�HŒT�Y‰YœŸ™Ô$Ù˜JÔ'€DØ‡H�HŒT�Y‰YœŸ™Ô$Ü˜Ÿ
™
 D§J¡JÔ/ô —G‘GœDŸK™K×-Ñ-Ó.€MØ”$—+‘+ Ñ"Ó# sÑ*Ó#Ø˜u¨Ñ-€LÙ‹5€DØ‡H�HŒT�Y‰YœŸ™ ]Ô3Ù˜LÔ)€DØ‡H�HŒT�Y‰YœŸ™Ô$Ü˜Ÿ
™
 D§J¡JÔ/ñ ‹5€DØ‡H�HŒT�Y‰YœŸ™ ]°AÑ%5Ô6Ù˜LÔ)€DØ‡H�HŒT�Y‰YœŸ™ ]Ô3Ü˜Ÿ
™
 D§J¡JÕ/rH   c                  ó@  — t        j                  ddgddgddgddgddgg«      } g d¢}t        d g d¢¬«      }|j                  | |«       t        d	d
ig d¢¬«      }|j                  | |«       t	        |j                  ddgg«      t        j                  dg«      «       y )Nr÷  r   rø  rƒ   rÐ   rù  )rº   r6  rV   )rû  r>  rV   rX   )rº   r6  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¸ÀcÈ3ÀZÐPÓQ€AÚ€Aä
¨²nÔ
E€CØ‡G�GˆAˆq„Mô ¨!¨U¨Ò<NÔ
O€CØ‡G�GˆAˆq„Mä�s—{‘{ T¨1 I ;Ó/´·±¸2¸$³Õ@rH   rR  c                 ó‚  — t         j                  j                  d«      }d}d}|j                  ||«      }g d¢}t	        |«      }t        | «      rt        | «      n| }t        |d d|¬«      }|j                  |«      }	|j                  ||	«       |j                  j                  ||fk(  sJ ‚d}
|j                  ||
«      }	|j                  ||	«       |j                  j                  ||
|fk(  sJ ‚t        dd| ¬«      }t        j                  t        d	¬
«      5  |j                  ||	«       d d d «       y # 1 sw Y   y xY w)Nrê   r   rÍ   ©r6  rƒ   rQ  T©r>  rT  rd  rU  rü   )rT  rd  rU  zcv!=None and store_cv_resultsrÎ   )r@   rb   rc   rÒ   r  r´  r   r   r�   rh  r—   r’   rñ   rò   )rU  ro   rR   rS   r~  r>  Ún_alphasrµ  Úrry   ró   s              rF   Útest_ridgecv_store_cv_resultsr  ¨  s  € ô �)‰)×
Ñ
 Ó
#€Cà€IØ€JØ�	‰	�)˜ZÓ(€AÚ€FÜ�6‹{€Hä'/°Ô'8Œ{˜7Ô#¸g€Hä�v $¸ÀxÔP€Að 	�	‰	�)Ó€AØ‡E�Eˆ!ˆQ„KØ�=‰=×Ñ 9¨hÐ"7Ò7Ð7Ð7ð €IØ�	‰	�)˜YÓ'€AØ‡E�Eˆ!ˆQ„KØ�=‰=×Ñ 9¨i¸Ð"BÒBÐBÐBä�1 t°WÔ=€AÜ	�‰”zÐ)HÔ	Iñ Ø	�‰ˆa�Œ÷÷ ñ ús   ÄD5Ä5D>c                 ó>  — 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                  j                  |||fk(  sJ ‚t        j                  g d¢g d¢g d¢g«      j                  «       }|j                  d
   }|j                  ||«       |j                  j                  |||fk(  sJ ‚y )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�   rh  Ú	transpose)	rU  r~  ry   rR   r>  r  rµ  r  ró   s	            rF   Ú)test_ridge_classifier_cv_store_cv_resultsr  È  s  € ä
�‰�4˜�,  q 	¨D°$¨<¸#¸s¸ÀcÈ3ÀZÐPÓQ€AÜ
�‰Ò"Ó#€Aà—‘˜‘
€IÚ€FÜ�6‹{€Hä'/°Ô'8Œ{˜7Ô#¸g€HäØ˜$°¸xô	€Að
 €IØ‡E�Eˆ!ˆQ„KØ�=‰=×Ñ 9¨i¸Ð"BÒBÐBÐBô 	�‰Ú	Ò-Ò/BÐCó	ç�iƒkð ð —‘˜‘
€IØ‡E�Eˆ!ˆQ„KØ�=‰=×Ñ 9¨i¸Ð"BÒBÐBÑBrH   Ú	Estimatorc                 óœ  — t         j                  j                  d«      }d}d\  }}| t        u r|j	                  |«      }n|j                  dd|«      }|j	                  ||«      } | |¬«      }|j                  |u sJ d| j                  › d�«       ‚|j                  ||«       t        |j                  t        j                  |«      «       y )Nr   r	  ©rÍ   rÍ   rJ   r=  z`alphas` was mutated in `z
.__init__`)r@   rb   rc   r   rÒ   Úrandintr>  rÝ  r�   r-   r&  )r  ro   r>  rR   rS   ry   rp   Ú	ridge_ests           rF   Útest_ridgecv_alphas_conversionr  å  sÀ   € ä
�)‰)×
Ñ
 Ó
"€CØ€Fà Ñ€IˆzØ”GÑØ�I‰I�iÓ ‰à�K‰K˜˜1˜iÓ(ˆØ�	‰	�)˜ZÓ(€Aá Ô(€Ià×Ñ˜FÑ"ðBà	" 9×#5Ñ#5Ð"6°jÐAóBØ"ð ‡M�M�!�QÔÜ�y×'Ñ'¬¯©°FÓ);Õ<rH   c                 ó�  — t         j                  j                  d«      }d}d\  }}|t        u r|j	                  |«      }n|j                  dd|«      }|j	                  ||«      } ||| ¬«      }| €7t        j                  t        d¬«      5  |j                  ||«       ddd«       y|j                  ||«       y# 1 sw Y   yxY w)	z1Check alpha=0.0 raises error only when `cv=None`.r   )rÐ   rƒ   rQ  r  rJ   ©r>  rT  Nz"alphas\[0\] == 0.0, must be > 0.0.rÎ   )
r@   rb   rc   r   rÒ   r  r’   rñ   rò   r�   )	rT  r  ro   r>  rR   rS   ry   rp   r  s	            rF   Útest_ridgecv_alphas_zeror  ú  s·   € ô �)‰)×
Ñ
 Ó
"€CØ€Fà Ñ€IˆzØ”GÑØ�I‰I�iÓ ‰à�K‰K˜˜1˜iÓ(ˆØ�	‰	�)˜ZÓ(€Aá ¨BÔ/€IØ	€zÜ�]‰]œ:Ð-RÔSñ 	 Ø�M‰M˜!˜QÔ÷	 ð 	 ð 	�‰�a˜Õ÷	 ð 	 ús   ÂB<Â<Cc                  ó  — t         j                  j                  d«      } d}dD ]å  \  }}| j                  |«      }| j                  ||«      }d| j	                  |«      z   }t        d«      }t        ||¬«      }|j                  |||¬«       d|i}	t        t        «       |	|¬	«      }
|
j                  |||¬«       |j                  |
j                  j                  k(  sJ ‚t        |j                  |
j                  j                  «       Œç y )
Nr   r	  )©r“  rÍ   r×   rƒ   rÍ   r  r‹   rz   rc  )r@   rb   rc   rÒ   Úrandr   r   r�   r   r   rW  Úbest_estimator_rz   r,   r”   )ro   r>  rR   rS   ry   rp   rŒ   rT  r2  Ú
parametersÚgss              rF   Útest_ridgecv_sample_weightr     sñ   € Ü
�)‰)×
Ñ
 Ó
"€CØ€Fð "3ò KÑˆ	�:Ø�I‰I�iÓ ˆØ�I‰I�i Ó,ˆØ˜cŸh™h yÓ1Ñ1ˆä�1‹XˆÜ ¨BÔ/ˆØ�‰�A�q¨ˆÔ6ð ˜vÐ&ˆ
Üœ%›' :°"Ô5ˆØ
�‰ˆq�! =ˆÔ1à�~‰~ ×!3Ñ!3×!9Ñ!9Ò9Ð9Ð9Ü! '§-¡-°×1CÑ1C×1IÑ1IÕJñKrH   c                  óð  ‡‡‡‡‡— ddg} ddg}t         j                  j                  d«      }t        | |«      D �]!  \  }}|j	                  ||«      Š|j	                  |«      Š|j	                  |«      dz  dz   }d}d}|d d …t         j
                  f   Š|t         j
                  d d …f   Št        d¬«      Š‰j                  ‰‰|«       ‰j                  ‰‰|«       ‰j                  ‰‰|«       ˆˆˆˆfd„}ˆˆˆˆfd	„}	d
}
t        j                  t        |
¬«      5   |«        d d d «       d
}
t        j                  t        |
¬«      5   |	«        d d d «       �Œ$ y # 1 sw Y   Œ:xY w# 1 sw Y   �Œ<xY w)NrJ   rü   rê   rV   rƒ   g       @rÃ   c                  ó,   •— ‰j                  ‰ ‰‰«       y 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   ø€ Ø�I‰I�a˜Ð1Õ2rH   c                  ó,   •— ‰j                  ‰ ‰‰«       y 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   ø€ Ø�I‰I�a˜Ð3Õ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_1dr.  (  s\  ü€ ð �Q�€JØ�a�&€Kä
�)‰)×
Ñ
 Ó
#€Cä!$ Z°Ó!=ó !Ñˆ	�:Ø�I‰I�i Ó,ˆØ�I‰I�iÓ ˆØŸI™I iÓ0°AÑ5¸Ñ9ÐØ!ÐØ!ÐØ 1²!´R·Z±Z°-Ñ @ÐØ"3´B·J±JÂ°MÑ"BÐä˜A”ˆð 	�	‰	�!�QÐ)Ô*Ø�	‰	�!�QÐ+Ô,Ø�	‰	�!�QÐ+Ô,÷	3÷	5ð >ˆÜ�]‰]œ:¨WÔ5ñ 	ÙÔ÷	ð >ˆÜ�]‰]œ:¨WÔ5ñ 	!ÙÔ ÷	!ñ 	!ñ7!÷.	ð 	ú÷	!ñ 	!ús   ÄEÅE+ÅE(	Å+E5	zn_samples,n_featuresrJ   c                 óŽ  — t         j                  j                  d«      }t        dd¬«      }t        dd¬«      }|j	                  | |«      }|j	                  | «      }|j	                  | «      dz  dz   } ||«      }	|j                  |	||¬«       |j                  |||¬«       t        |j                  |j                  d¬	«       y )
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_weightsr3  O  s¯   € ô �)‰)×
Ñ
 Ó
#€Cä˜s°%Ô8€LÜ˜c°Ô7€Kà�	‰	�)˜ZÓ(€AØ�	‰	�)Ó€AØ—Y‘Y˜yÓ)¨QÑ.°Ñ2€NÙ Ó"€HØ×Ñ�X˜q°ÐÔ?Ø‡O�O�A�q¨€OÔ7ä˜l×0Ñ0°+×2CÑ2CÈQÖOrH   c                  ó�   — t        j                  ddgddgddgddgddgg«      } g d¢}t        d¬«      }|j                  | |«       y )	Nr÷  r   rø  rƒ   rÐ   rù  )rV   rZ   rœ  r=  )r@   rï   r   r�   )rp   ry   rà   s      rF   Útest_ridgecv_int_alphasr5  e  sM   € Ü
�‰�4˜�,  q 	¨D°$¨<¸#¸s¸ÀcÈ3ÀZÐPÓQ€AÚ€Aô ˜<Ô(€EØ	‡I�Iˆa�…OrH   zparams, err_type, err_msgr>  )rV   rW   iœÿÿÿz alphas\[1\] == -1, must be > 0.0)gš™™™™™¹¿r÷  g      $Àz"alphas\[0\] == -0.1, must be > 0.0)rV   rƒ   Ú1z1alphas\[2\] must be an instance of float, not strc                 óð   — d\  }}t         j                  ||«      }t         j                  dd|«      }t        j                  ||¬«      5   | di |¤Žj                  ||«       ddd«       y# 1 sw Y   yxY w)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_validationr9  n  sk   € ð( !Ñ€IˆzÜ�	‰	�)˜ZÓ(€AÜ�‰�A�q˜)Ó$€Aä	�‰�x wÔ	/ñ &ÙÑ�FÑ×Ñ  1Ô%÷&÷ &ñ &ús   Á
A,Á,A5c                 óÖ   — d\  }}t         j                  ||«      }| t        u rt         j                  |«      }nt         j                  dd|«      } | d¬«      j	                  ||«       y)zÉCheck 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   r=  N)ro   rÒ   r   r  r�   )r  rR   rS   rp   ry   s        rF   Útest_ridgecv_alphas_scalarr;  Š  s[   € ð !Ñ€IˆzÜ�	‰	�)˜ZÓ(€AØ”GÑÜ�I‰I�iÓ ‰ä�K‰K˜˜1˜iÓ(ˆá�QÔ×Ñ˜A˜qÕ!rH   c                  ó°   — t        dd¬«      } | j                  t        t        «       | j                  j
                  d   t        j
                  d   k(  sJ ‚y )Nr8   rV   )r€   r½   r   )r   r�   rÆ   rÄ   r”   r—   )r°  s    rF   Útest_sparse_cg_max_iterr=  œ  sB   € Ü
�{¨QÔ
/€CØ‡G�GŒJœ
Ô#Ø�9‰9�?‰?˜1Ñ¤×!1Ñ!1°!Ñ!4Ò4Ð4Ñ4rH   z-ignore::sklearn.exceptions.ConvergenceWarningc            	      ó’  — d} t         t        }}t        j                  || df«      j                  }t        dd«      D ]S  }dD ]L  }t        ||d¬«      }|j                  ||«       t        |j                  t        j                  || «      «       ŒN ŒU dD ]0  }t        |dd¬«      }|j                  ||«       |j                  €Œ0J ‚ y )	NrJ   rV   rQ   )r;   r<   r:   rí   )r€   r½   rˆ   )r8   r7   r9   r6  )
rÆ   rÄ   r@   Útilerg   Úranger   r�   r-   Ún_iter_)ró   rp   ry   Úy_nr½   r€   r°  s          rF   Útest_n_iterrC  ¢  sÄ   € ð €IÜ”z€q€AÜ
�'‰'�!�i �^Ó
$×
&Ñ
&€Cä˜!˜Q“Kò JˆØ-ò 	JˆFÜ˜v°¸eÔDˆCØ�G‰G�A�sŒOÜ˜sŸ{™{¬B¯G©G°H¸iÓ,HÕIñ	JðJð 3ò #ˆÜ˜6¨A°4Ô8ˆØ�‰��3ŒØ�{‰{Ñ"Ð"Ð"ñ#rH   )r:   r8   rá  ru  Úwith_sample_weightc                 óä  — | dk(  }t        d||¬«      \  }}d}|rAt        j                  j                  |«      }d|j	                  |j
                  d   ¬«      z   }| dk(  rd	n| }	t        |	d
|¬«      }
t        | d
|¬«      }|
j                  |||¬«       |j                   ||«      ||¬«       t        |
j                  |j                  «       t        |
j                  |j                  d¬«       y)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   r,  Nrƒ   r   r_   ru  r8   rí   )r€   rˆ   r,  r‹   g�íµ ÷Æ >rV  )r0  r@   rb   rc   re   r—   r   r�   r*   r‘   r”   )r€   rD  rl   rý   r,  rp   ry   rŒ   ro   Údense_solverr1  r0  s               rF   Útest_ridge_fit_intercept_sparserG  µ  sæ   € ð  ˜Ñ €HÜ)ØÐ$6Àô�D€A€qð €MÙÜ�i‰i×#Ñ#Ð$6Ó7ˆØ˜cŸk™k¨q¯w©w°q©z˜kÓ:Ñ:ˆð #)¨FÒ"2‘;¸€LÜ˜|°ÀÔJ€KÜ ¨E¸HÔE€Là‡O�O�A�q¨€OÔ6Ø×Ñ‘] 1Ó% q¸ÐÔFä�K×*Ñ*¨L×,CÑ,CÔDÜ�K×%Ñ% |×'9Ñ'9ÀÖErH   )r<   r7   r9   c                 óò   — t        dd¬«      \  }} ||«      }t        | ¬«      }dj                  | «      }t        j                  t
        |¬«      5  |j                  ||«       d d d «       y # 1 sw Y   y xY w)Nrë   r   )rS   rU   rÚ  zsolver='{}' does not supportrÎ   )r0  r   Úformatr’   rñ   rò   r�   )r€   rý   rp   ry   ÚX_csrr0  rù   s          rF   Ú%test_ridge_fit_intercept_sparse_errorrK  Þ  sk   € ô *°RÀaÔH�D€A€qÙ˜!Ó€EÜ Ô'€LØ,×3Ñ3°FÓ;€GÜ	�‰”z¨Ô	1ñ #Ø×Ñ˜ Ô"÷#÷ #ñ #ús   ÁA-Á-A6c                 ó  — t        dd|d¬«      \  }}| rBt        j                  j                  |«      }d|j	                  |j
                  d   ¬«      z   }nd } ||«      }t        ddd	d
d¬«      }t        di |¤Ž}	t        di |¤Ž}
|	j                  |||¬«       t        j                  «       5  t        j                  dt        «       |
j                  |||¬«       d d d «       t        |	j                  |
j                  d¬«       t        |	j                  |
j                  d¬«       t!        j"                  t        d¬«      5  t        dd	dd ¬«      j                  ||«       d d d «       y # 1 sw Y   Œ‘xY w# 1 sw Y   y xY w)NrÍ   rë   g      @)rS   rR   rU   r+  rƒ   r   r_   r;   Tr†   r¼   )rz   r€   r�   rˆ   r½   r‹   rê  ç-Cëâ6?rV  z"sag" solver requires.*rÎ   rX   )r€   r�   rˆ   r½   r�   )r0  r@   rb   rc   re   r—   rŽ   r   r�   rí  rî  Úsimplefilterrå  r*   r‘   r”   r’   rÓ   )rD  rl   rý   rp   ry   ro   rŒ   rJ  rN   r1  r0  s              rF   Ú#test_ridge_fit_intercept_sparse_sagrO  é  sg  € ô
 *Ø Ð1CÈcô�D€A€qñ Ü�i‰i×#Ñ#Ð$6Ó7ˆØ˜cŸk™k¨q¯w©w°q©z˜kÓ:Ñ:‰àˆÙ˜!Ó€EäØ˜%¨t¸Èô€Fô ‘/˜&‘/€KÜ‘?˜6‘?€LØ‡O�O�A�q¨€OÔ6Ü	×	 Ñ	 Ó	"ñ @Ü×Ñ˜g¤{Ô3Ø×Ñ˜ °ÐÔ?÷@ô �K×*Ñ*¨L×,CÑ,CÈ$ÕOÜ�K×%Ñ% |×'9Ñ'9ÀÕEÜ	�‰”kÐ)BÔ	Cñ WÜ�U¨$°DÀ4ÔH×LÑLÈUÐTUÔV÷Wð W÷@ð @ú÷
Wð Wús   Â//E.Å E:Å.E7Å:FÚreturn_interceptrŒ   r�  Ú	container)ru  r8   r9   r:   r;   r<   rá  c                 óä  — t        d«      }|j                  dd«      }g d¢}t        j                  ||«      }d}| rd}||z  } ||«      }	d\  }
}t        rdnd	}|d
k(  }|dvr:| r8t        j                  t        d¬«      5  t        |	||
||| ||¬«       ddd«       yt        |	||
|||| |¬«      }| r$|\  }}t        ||d|¬«       t        ||d|¬«       yt        ||d|¬«       y# 1 sw Y   yxY w)z=check if all combinations of arguments give valid estimationsrê   r�  rü   )rV   rJ   r6  rÐ   g     ˆÃ@)rX   ç�íµ ÷Æ°>rX   rM  rá  )r;   ru  zIn Ridge, only 'sag' solverrÎ   )rz   r€   rŒ   rP  r,  rˆ   N)rz   r€   rŒ   r,  rP  rˆ   r   ©r@  r¤   )
r#   r  r@   rÇ   r1   r’   rñ   rò   r   r*   )rP  rŒ   rQ  r€   ro   rp   Ú
true_coefsry   Útrue_interceptÚ	X_testingrz   rˆ   r¤   r,  Úoutr™   rž   s                    rF   Ú.test_ridge_regression_check_arguments_validityrY    s  € ô ˜RÓ
 €CØ�‰��qÓ€AÚ€JÜ
�‰ˆq�*Ó€AØ€NÙØ ˆØˆÑ€AÙ˜!“€Ià�J€Eˆ3Ý‰4 $€Dà˜Ñ €Hà�_Ñ$Ñ)9Ü�]‰]œ:Ð-JÔKñ 
	ÜØØØØØ+Ø!1Ø!Øõ	÷
	ð 	ä
ØØ	ØØØ#ØØ)Øô	€Cñ Ø‰ˆˆiÜ˜˜j¨q°tÕ<Ü˜	 >¸ÀÖEä˜˜Z¨a°dÖ;÷;
	ð 	ús   Â C&Ã&C/)r7   r8   r9   r:   r;   r<   rá  c                 óŽ  — t         j                  j                  d«      }d}| dk(  }d\  }}|j                  ||«      }|j                  |«      }|j	                  t         j
                  «      }|j	                  t         j
                  «      }	dt        j                  t         j
                  «      j                  z  }
t        || d|
|¬«      }|j                  ||	«       |j                  }t        || d|
|¬«      }|j                  ||«       |j                  }|j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|j                  |«      j                  |j                  k(  sJ ‚|j                  |«      j                  |j                  k(  sJ ‚t        |j                  |j                  dd	¬
«       y )Nr   rƒ   rá  r  rJ   éô  )rz   r€   r½   rˆ   r,  rM  gü©ñÒMb@?rT  )r@   rb   rc   rÒ   rA  r5  ÚfinfoÚ
resolutionr   r�   r”   rB  r°   r*   )r€   ro   rz   r,  rR   rS   ÚX_64Úy_64ÚX_32Úy_32rˆ   Úridge_32Úcoef_32Úridge_64Úcoef_64s                  rF   Útest_dtype_matchrf  D  sx  € ô �)‰)×
Ñ
 Ó
"€CØ€EØ˜Ñ €Hà Ñ€IˆzØ�9‰9�Y 
Ó+€DØ�9‰9�YÓ€DØ�;‰;”r—z‘zÓ"€DØ�;‰;”r—z‘zÓ"€Dà
Œb�h‰h”r—z‘zÓ"×-Ñ-Ñ
-€CäØ˜F¨S°cÀHô€Hð ‡L�L��tÔØ�n‰n€Gô Ø˜F¨S°cÀHô€Hð ‡L�L��tÔØ�n‰n€Gð �=‰=˜DŸJ™JÒ&Ð&Ð&Ø�=‰=˜DŸJ™JÒ&Ð&Ð&Ø×Ñ˜DÓ!×'Ñ'¨4¯:©:Ò5Ð5Ð5Ø×Ñ˜DÓ!×'Ñ'¨4¯:©:Ò5Ð5Ð5Ü�H—N‘N H§N¡N¸ÀDÖIrH   c                  óD  — t         j                  j                  d«      } t        j                  ddg«      }d\  }}}| j	                  ||«      }| j	                  ||«      }|j                  t         j                  «      }|j                  t         j                  «      }t        |d¬«      }	|	j                  ||«       |	j                  }
t        |d¬«      }|j                  ||«       |j                  }|
j                  |j                  k(  sJ ‚|j                  |j                  k(  sJ ‚|	j                  |«      j                  |j                  k(  sJ ‚|j                  |«      j                  |j                  k(  sJ ‚t        |	j                  |j                  d¬«       y )	Nr   rƒ   r¡   )r“  r  rJ   r9   rì   rÍ   r¨  )r@   rb   rc   rï   rÒ   rA  r5  r   r�   r”   rB  r°   r+   )ro   rz   rR   rS   Ún_targetr^  r_  r`  ra  rb  rc  rd  re  s                rF   Útest_dtype_match_choleskyri  i  sL  € ô �)‰)×
Ñ
 Ó
"€CÜ�H‰H�c˜3�ZÓ €Eà&-Ñ#€Iˆz˜8Ø�9‰9�Y 
Ó+€DØ�9‰9�Y Ó)€DØ�;‰;”r—z‘zÓ"€DØ�;‰;”r—z‘zÓ"€Dô ˜5¨Ô4€HØ‡L�L��tÔØ�n‰n€Gô ˜5¨Ô4€HØ‡L�L��tÔØ�n‰n€Gð �=‰=˜DŸJ™JÒ&Ð&Ð&Ø�=‰=˜DŸJ™JÒ&Ð&Ð&Ø×Ñ˜DÓ!×'Ñ'¨4¯:©:Ò5Ð5Ð5Ø×Ñ˜DÓ!×'Ñ'¨4¯:©:Ò5Ð5Ð5Ü˜Ÿ™¨¯©ÀÖBrH   )r7   r9   r:   r8   r;   r<   rá  c                 óô  — t         j                  j                  |«      }d\  }}|j                  ||«      }|j                  |«      }t        j                  ||«      d|j                  |«      z  z   }d}| dk(  }	t        «       }
| dk(  rdnd}t         j                  t         j                  fD ]9  }t        |j                  |«      |j                  |«      || |d |	dd	d
d
¬«      |
|<   Œ; |
t         j                     j                  t         j                  k(  sJ ‚|
t         j                     j                  t         j                  k(  sJ ‚t        |
t         j                     |
t         j                     |¬«       y )Nr  rº   rƒ   rá  r8   rX   r€  r[  r†   F)	rz   r€   rU   rŒ   r,  r½   rˆ   Úreturn_n_iterrP  r£   )r@   rb   rc   rÒ   rÇ   rŽ   r5  r8  r   rA  rB  r*   )r€   r:  rU   rR   rS   rp   r™   ry   rz   r,  Úresultsr¤   Úcurrent_dtypes                rF   Ú%test_ridge_regression_dtype_stabilityrn  ‡  sN  € ô
 —9‘9×(Ñ(¨Ó.€LØ Ñ€IˆzØ×Ñ˜9 jÓ1€AØ×Ñ˜jÓ)€DÜ
�‰ˆq�$‹˜$ ×!3Ñ!3°IÓ!>Ñ>Ñ>€AØ€EØ˜Ñ €HÜ‹f€Gð ˜[Ò(‰4¨d€DÜŸ*™*¤b§j¡jÐ1ò 
ˆÜ!1Ø�H‰H�]Ó#Ø�H‰H�]Ó#ØØØ%ØØØØØØ"ô"
ˆ�Òð
ð ”2—:‘:Ñ×$Ñ$¬¯
©
Ò2Ð2Ð2Ø”2—:‘:Ñ×$Ñ$¬¯
©
Ò2Ð2Ð2Ü�GœBŸJ™JÑ'¨´·±Ñ)<À4ÖHrH   c                  ó¬   — t        d¬«      \  } }t        j                  | «      } | d d d…d d …f   } |d d d…   }t        d¬«      j	                  | |«       y )Nrê   ©rU   rJ   r;   rÚ  )r   r@   Úasfortranarrayr   r�   )rp   ry   s     rF   Útest_ridge_sag_with_X_fortranrr  «  sS   € ä¨Ô+�D€A€qä
×Ñ˜!Ó€AØ	‰#ˆAˆ#Šqˆ&‰	€AØ	‰#ˆAˆ#‰€AÜ	�Ô×Ñ˜A˜qÕ!rH   zClassifier, paramsc                 ón  — t        dd¬«      \  }}|j                  dd«      }t        j                  ||gd¬«      } | d	i |¤Žj	                  ||«      }|j                  |«      }|j                  |j                  k(  sJ ‚t        |dd…df   |dd…df   «       t        d¬«      j	                  ||«       y)
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_multilabelru  µ  s¤   € ô *°AÀAÔF�D€A€qØ	�	‰	�"�aÓ€AÜ
�‰˜˜1�v AÔ&€AÙ
Ñ
�vÑ
×
"Ñ
" 1 aÓ
(€CØ�[‰[˜‹^€Fà�<‰<˜1Ÿ7™7Ò"Ð"Ð"Ü�vša ˜d‘| VªA¨q¨D¡\Ô2Ü	�Ô×Ñ˜A˜qÕ!rH   ru  rá  )rX   rº   r6  rƒ   c                 óR  — t        j                  ddgddgddgddgg«      }t        j                  dd	g«      }|rd
}|j                  |«      |z   }n|j                  |«      }t        |d| |¬«      }|j	                  ||«       t        j
                  |j                  dk\  «      sJ ‚y)z:Test that positive Ridge finds true positive coefficients.rV   rJ   rü   rQ   rÍ   r“  r  r   rY   rë   T©rz   r,  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_testrx  Ë  s¡   € ô
 	�‰�1�a�&˜1˜a˜& 1 a &¨1¨a¨&Ð1Ó2€AÜ�8‰8�Q˜�HÓ€DÙØˆ	Ø�E‰E�$‹K˜)Ñ#‰à�E‰E�$‹KˆäØ˜d¨6Àô€Eð 
‡I�Iˆa�„OÜ�6‰6�%—+‘+ Ñ"Ô#Ð#Ñ#rH   c                 ó´  — t         j                  j                  d«      }|j                  dd«      }|j	                  dd|j
                  d   ¬«      }| rd}||z  |z   }n||z  }||j                  |j
                  d   ¬«      d	z  z  }g }d
D ]<  }t        ||| d¬«      }	|j                  |	j                  ||«      j                  «       Œ> t        |dddœŽ y)z¸Test 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œ  r6  rƒ   rV   r_   r   rº   )TFr†   )rz   r,  r�   rˆ   rS  r?  N)r@   rb   rc   rÒ   re   r—   rf   r   r�  r�   r”   r*   )
r�   rz   ro   rp   r™   rž   ry   rl  r,  r�   s
             rF   Ú%test_ridge_ground_truth_positive_testr{  ß  sØ   € ô �)‰)×
Ñ
 Ó
#€CØ�	‰	�#�sÓ€AØ�;‰;�s˜C a§g¡g¨a¡jˆ;Ó1€DÙØˆ	Ø�‰H�yÑ ‰à�‰HˆØˆ�‰˜Ÿ™ ™ˆÓ	$ tÑ	+Ñ+€Aà€GØ!ò .ˆÜØ (¸-ÈUô
ˆð 	�‰�u—y‘y  A“×,Ñ,Õ-ð	.ô
 �W 4¨aÔ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  |j                  ||«       ddd«       t        j                  t
        d¬«      5  t        |||d| d¬«      \  }}ddd«       y# 1 sw Y   ŒBxY w# 1 sw Y   yxY w)z5Test input validation for positive argument in Ridge.r6  rV   rJ   rü   rQ   rW   TFrw  zdoes not support positiverÎ   Nzonly 'lbfgs' solver can be used)r,  r€   rP  )r@   rï   r   r’   rñ   rò   r�   r   )r€   rz   rp   r™   ry   r�   rw   s          rF   Útest_ridge_positive_error_testr}  ú  sÆ   € ð
 €EÜ
�‰�1�a�&˜1˜a˜&Ð!Ó"€AÜ�8‰8�Q˜�GÓ€DØ	ˆD‰€Aä˜¨°VÈ5ÔQ€EÜ	�‰”zÐ)DÔ	Eñ Ø�	‰	�!�QŒ÷ô 
�‰”zÐ)JÔ	Kñ 
ÜØˆq�% $¨vÈô
‰ˆˆ1÷
ð 
÷ð ú÷
ð 
ús   Á$B8ÂCÂ8CÃCc                 ó&  ‡ ‡	‡
— t        ddd¬«      \  Š	Š
dŠ d}dˆ	ˆ ˆ
fd„	}t        ‰ ¬«      j                  ‰	‰
«      }t        ‰ d	¬
«      j                  ‰	‰
«      } ||«      } ||«      }||k  sJ ‚t        |«      D ]  } |||¬«      }||k  rŒJ ‚ y)z?Check ridge loss consistency when positive argument is enabled.rz  rê   ©rR   rS   rU   r6  rœ  Nc                 óh  •— | j                   }|�Ut        j                  j                  |«      }| 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ˆCØ—;‘; §¡¨Q°À%Ç+Á+×BSÑBS Ó!TÑT‰Dà—;‘;ˆDà”R—V‘V˜Q  T¡™\¨IÑ5¸!Ñ;Ó<Ñ<¸sÀU¹{ÌRÏVÉVØ�!‰GóN
ñ @
ñ 
ð 	
rH   rÃ   T)rz   r,  rp  )Nr¢   )r   r   r�   r@  )rz   Ún_checksr‚  r�   Úmodel_positiveÚlossÚloss_positiverU   Úloss_perturbedrp   ry   s   `        @@rF   Útest_positive_ridge_lossrˆ    s«   ú€ ô  S°SÀrÔJ�D€A€qØ€EØ€H÷

ô ˜Ô×"Ñ" 1 aÓ(€EÜ °Ô6×:Ñ:¸1¸aÓ@€Nñ
 �eÓ€DÙ˜~Ó.€MØ�=Ò Ð Ð ô ˜h›ò /ˆÙ# 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
¬«       y)zETest that LBGFS gets almost the same coef of svd when positive=False.rz  rê   r  rV   Fg¼‰Ø—²Òœ<i ¡ )r,  rˆ   r½   rM  r   r?  N)r   r@   Úexpand_dimsr&  r   r   r*   )rz   rp   ry   ÚconfigÚ
coef_lbfgsrö   s         rF   Útest_lbfgs_solver_consistencyr�  4  sw   € ô  S°SÀrÔJ�D€A€qÜ
�‰�q˜!Ó€AÜ�J‰J˜�wÓ€EàØØñ€Fô ˜a  EÑ4¨VÑ4€JÜ˜q ! UÓ+€MÜ�J °D¸qÖ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  |j                  | |«       ddd«       y# 1 sw Y   yxY w)z1Test that LBFGS solver raises ConvergenceWarning.rV   rW   g    _ Âg    _ Brº   rá  Frí   T)rz   r€   r�   rˆ   r,  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   € ä
�‰�1�b�'˜A˜q˜6Ð"Ó#€AÜ
�‰�%˜�Ó€AäØØØØØØô€Eô 
�‰Ô(Ð0OÔ	Pñ Ø�	‰	�!�QŒ÷÷ ñ ús   ÁA;Á;Br  Útallc                 ón  — |� |dk(  s|dv r| rt        j                  d«       t        j                  j	                  d«      }d}|dk(  r|dz  }n|dz  }|j                  ||«      }|j                  |«      }	|� ||«      }t        | d	||d
k(  |d¬«      }
t        di |
¤Žj                  ||	d¬«      }|j                  j                  «       }| r|j                  }t        j                  |	«      }|j                  ||	|¬«       t        |j                  |d¬«       | rt        |j                  «       |j                  dd|j                  d   ¬«      }d|dd |	ddxxx dz  ccc |j                  ||	|¬«       |j                  j                  «       }| r|j                  }|j                  |dd…dd…f   |	dd |dd ¬«       t        |j                  |d¬«       | rt        |j                  «       t        di |
¤Žj!                  t        j"                  |
d   z  ¬«      }|j                  ||	t        j"                  |z  ¬«       |dv r| st        j$                  d|› d�«       t        |j                  |d¬«       | rt        |j                  «       |�|j'                  «       }t        j(                  ||d|dz   gd¬«      }t        j(                  |	|	d|dz   g«      }|j                  «       }|d|dz  xxx dz  ccc t        j(                  ||d|dz   gd¬«      }|� ||«      } ||«      }t        di |
¤Žj                  ||	|¬«      }t        di |
¤Žj                  |||¬«      }t        |j                  |j                  «       | r!t        |j                  |j                  «       yy)zžTest 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€   r,  rU   rˆ   r‹   rS  rV  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”   r(  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  s{  € ð Ð#Ø�UŠ?˜vÐ)=Ñ=Á-Ü�K‰KÐ3Ô4ô
 �)‰)×
Ñ
 Ó
#€CØ€IØˆv‚~Ø !‘^‰
à ‘]ˆ
à�‰�˜JÓ'€AØ�‰�Ó€AØÐ#Ù˜QÓˆÜØ#ØØØ˜GÑ#Ø'Øô€Fô ‰/�&‰/×
Ñ
˜a °$Ð
Ó
7€CØ�9‰9�>‰>Ó€DÙØ—N‘Nˆ	Ü—L‘L “O€MØ‡G�GˆAˆq €GÔ.Ü�C—I‘I˜t¨$Õ/ÙÜ˜Ÿ™¨	Ô2ð
 —K‘K D¨q°q·w±w¸q±z�KÓB€MØ€M�"�#ÐØ€b€cƒFˆd�NƒFØ‡G�GˆAˆq €GÔ.Ø�9‰9�>‰>Ó€DÙØ—N‘Nˆ	Ø‡G�GˆAˆcˆrˆc’1ˆf‰I�q˜˜"�v¨]¸3¸BÐ-?€GÔ@Ü�C—I‘I˜t¨$Õ/ÙÜ˜Ÿ™¨	Ô2ô ‰?�6‰?×%Ñ%¬B¯E©E°F¸7±OÑ,CÐ%ÓD€DØ‡H�HˆQ�¤§¡¨Ñ!6€HÔ7Ø�Ñ ©Ü�‰�w˜v˜hÐ&SÐTÔUÜ�D—J‘J ¨4Õ0ÙÜ˜Ÿ™¨Ô3ð Ð#Ø�I‰I‹KˆÜ	�‰˜˜AÐ. 	¨Q¡Ð/Ð0°qÔ	9€BÜ	�‰˜˜AÐ. 	¨Q¡Ð/Ð0Ó	1€BØ#×(Ñ(Ó*€OØÐ$�i 1‘nÓ%¨Ñ*Ó%Ü—n‘nØ	˜Ð&6¨	°Q©Ð7Ð8¸qô€Oð Ð#Ù˜QÓˆÙ˜bÓ!ˆÜ‰?�6‰?×Ñ˜q !°?ÐÓC€DÜ‰?�6‰?×Ñ˜r 2°_ÐÓE€DÜ�D—J‘J §
¡
Ô+ÙÜ˜Ÿ™¨¯©Õ9ð rH   c                  óf  — t        dd¬«      \  } }t        d¬«      }d}t        j                  t        |¬«      5  |j                  | |«       ddd«       t        dd¬	«      }d
}t        j                  t        |¬«      5  |j                  | |«       ddd«       y# 1 sw Y   ŒOxY w# 1 sw Y   yxY w)z-Check `store_cv_values` parameter deprecated.r“  rê   r”  T)Ústore_cv_valuesz'store_cv_values' is deprecatedrÎ   N)rd  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Ÿ  º  s™   € ä Q°RÔ8�D€A€qÜ DÔ)€EØ
+€CÜ	�‰”m¨3Ô	/ñ Ø�	‰	�!�QŒ÷ô  T¸4Ô@€EØ
>€CÜ	�‰”z¨Ô	-ñ Ø�	‰	�!�QŒ÷ð ÷ð ú÷ð ús   ºBÁ?B'ÂB$Â'B0c                  óÜ   — t        dd¬«      \  } }t        d¬«      }d}t        j                  t        |¬«      5  |j                  | |«       |j                   ddd«       y# 1 sw Y   yxY w)	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¢  É  sZ   € ä Q°RÔ8�D€A€qÜ TÔ*€EØ
0€CÜ	�‰”m¨3Ô	/ñ Ø�	‰	�!�QŒØ×Ò÷÷ ñ ús   ºA"Á"A+ró   c                 ób  — t        dd|d¬«      \  }}t        j                  |j                  d   f¬«      }| rd|ddd…<   d	}t	        |d
|d¬«      }|j                  |||¬«       t        j                  g |j                  ¢t        |«      ‘­¬«      }t        «       }	t        |«      D ]n  \  }
}t        |	j                  ||«      «      D ]K  \  }\  }}t        ||¬«      }|j                  ||   ||   ||   «       |j                  ||   «      ||d|
f<   ŒM Œp t        |j                  |«       y)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	  rR  T)r>  rU  r�   rd  r‹   rå   .)r   r@   r–   r—   r   r�   Úemptyr  r    Ú	enumeraterg  r   r°   r*   rh  )rD  r�   ró   rp   ry   rŒ   r>  r�  rp  rT  Ú	alpha_idxrz   ÚidxÚ	train_idxÚtest_idxrà   s                   rF   Ú!test_ridge_cv_results_predictionsr«  Ó  s?  € ô" Ø "°	Èô�D€A€qô —G‘G 1§7¡7¨1¡: -Ô0€MÙØ ˆ‘c˜�cÑà€Fô ØØ(Ø#Øô	€Hð ‡L�L��A ]€LÔ3ô —(‘(Ð!8 1§7¡7Ð!8¬C°«KÑ!8Ô9€KÜ	‹€BÜ% fÓ-ò JÑˆ	�5Ü*3°B·H±H¸QÀ³NÓ*Cò 	JÑ&ˆCÑ&�)˜XÜ °]ÔCˆEØ�I‰I�a˜	‘l A i¡L°-À	Ñ2JÔKØ/4¯}©}¸Q¸x¹[Ó/IˆK˜˜S )Ð+Ò,ñ	JðJô
 �H×(Ñ(¨+Õ6rH   c                 ó  — t        d| ¬«      \  }}t        j                  |j                  d   f¬«      }t	        dd¬«      }|j                  |||¬«       t        «       }t        |j                  ¬	«      }t        j                  |j                  |«      D ��cg c]4  \  }}|j                  ||   ||   ||   ¬«      j                  ||   «      ‘Œ6 c}}«      }	t        |j                  t        ||	«       «       y
c c}}w )zÏCheck 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¤  rR  T)rU  rd  r‹   rÃ   N)r   r@   r–   r—   r   r�   r    r   rW  Úsqueezerg  r°   r*   r™  r   )
rl   rp   ry   rŒ   r�  rT  rà   ÚtrainÚtestÚ
y_pred_loos
             rF   Ú'test_ridge_cv_multioutput_sample_weightr²  	  så   € ô  QÐ5GÔH�D€A€qÜ—G‘G 1§7¡7¨1¡: -Ô0€MäÐ7È$ÔO€HØ‡L�L��A ]€LÔ3ä	‹€BÜ˜Ÿ™Ô(€EÜ—‘ð
  "Ÿx™x¨›{÷		
ñ ��tð �I‰I�a˜‘h  %¡¸ÀeÑ8LˆIÓM×UÑUØ�$‘õó	
ó€Jô �H×(Ñ(Ô+=¸aÀÓ+LÐ*LÕMùó	
s   Â9C<
c                  ó¸  ‡	— t        dd¬«      \  } }d„ Š	ˆ	fd„}t        |¬«      }|j                  | |«       t        «       }t	        |j
                  ¬«      }t        j                  |j                  | «      D ��cg c]/  \  }}|j                  | |   ||   «      j                  | |   «      ‘Œ1 c}}«      }t        |j                   ‰	||«       «       yc c}}w )	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	  sP   € Ø˜6‘/ aÑ'ˆÜ—g‘g˜f¨1Ô-ˆØ×Ñ˜qÒ ä—J‘J˜{°Q¸°FÔ;Ð;Ð;ð ˆ|ÐrH   c                 ó6   •—  ‰|| j                  |«      «       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Ó5Ð5Ð5rH   )rU  rÃ   N)r   r   r�   r    r   rW  r@   r®  rg  r°   r*   r™  )
rp   ry   r»  r�  rT  rà   r¯  r°  r±  r¹  s
            @rF   Ú'test_ridge_cv_custom_multioutput_scorerr¼  	  sº   ø€ ä Q°QÔ7�D€A€qòô6ô Ð8Ô9€HØ‡L�L��AÔä	‹€BÜ˜Ÿ™Ô(€EÜ—‘ØKMÏ8É8ÐTUË;×W¹K¸EÀ4ˆ�‰�1�U‘8˜Q˜u™XÓ	&×	.Ñ	.¨q°©wÕ	7ÓWó€Jô �H×(Ñ(©<¸¸:Ó+FÐ*FÕGùó 	Xs   Á;4C
Úmetaestimator)Úenable_metadata_routingc                 ó.   —  | «       j                  «        y)z˜Test 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   € ñ ƒO×(Ñ(Õ*rH   zmetaestimator, make_datasetc                 óˆ   —  |ddd¬«      \  }}| j                  ||t        j                  |j                  d   «      ¬«       y)zÕTest 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	  s<   € ñ  #°!À"ÔE�D€A€qØ×Ñ�a˜¬"¯'©'°!·'±'¸!±*Ó*=ÐÕ>rH   )rœ  rœ  r¡   rZ   rV   g      *@rK  rK  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   r0  rD  r&  r\  r_  rt  rz  r‹  r�  r—  rš  r£  r¦  rª  r±  r·  r¿  rÃ  r×  rÞ  rè  Úsortedrð  rõ  rÿ  r  r  r  r  r  r  r   r.  r3  r5  rò   Ú	TypeErrorr9  r;  r=  rï  rC  rG  rK  rO  r–   rï   rY  rf  ri  r@  rn  rr  ru  rx  r{  r}  rˆ  r�  r�  rš  rŸ  r¢  r«  r²  r¼  rÁ  rÃ  r�   rH   rF   ú<module>rà     s  ðÛ Ý ã Û Ý ç ,Ý ÷ó õ 2÷÷ ÷÷ ñ ÷ HÑ G÷õ õ /Ý ,÷õ õ S÷õ ÷÷÷ ò B€Ø 4Ð Ø#SÐ  à!ˆ8×!Ñ!Ó#€Ø!Ÿ™¨¯©Ð €
ˆJØ€b‡i�i�
× Ñ  Ñ#Ó$€Ø‡i�i×Ñ˜AÓ€Ø ‡�ˆCÔ Ø	ˆ$ˆ3€i€Ø# C™¨*°S©/Ð €
ˆJà€x×ÑÓ€Ø—‘˜DŸK™K€€ˆò%ò+ð €‡�˜ Ð'Ô(ñC&ó )ðC&ðL ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¨4°¨-Ó8ñ)#ó 9ó ,ð)#ðX ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¨4°¨-Ó8ñ#?ó 9ó ,ð#?ðL ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¨4°¨-Ó8ñ%2ó 9ó ,ð%2ðP ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¨4°¨-Ó8ñ2+ó 9ó ,ð2+ðj ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¨4°¨-Ó8ñ28ó 9ó ,ð28ðj ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¨4°¨-Ó8ñ2+ó 9ó ,ð2+ðj ‡�×Ñ˜ 7Ó+Ø‡�×Ñ˜¨4°¨-Ó8Ø‡�×ÑÐ+¨d¨V°nÑ-DÓEØ‡�×Ñ˜ 3¨ +Ó.ñ/'ó /ó Fó 9ó ,ð/'òd+ò
ò4ò<>ò$0ò*ð@ ‡�×Ñ˜Ò"2Ó3Ø‡�×Ñ˜¨.Ó9ñ
Dó :ó 4ð
Dð ‡�×Ñ˜Ò"NÓOØ‡�×ÑÐ*¨T°5¨MÓ:Ø‡�×Ñ˜¨.Ó9ñ.ó :ó ;ó Pð.ð$ ‡�×Ñ˜Ò"NÓOØ‡�×ÑÐ*¨T°5¨MÓ:Ø‡�×Ñ˜¨.Ó9ñ3ó :ó ;ó Pð3ð& ØØØØØ	ØØ
ØØ	ØØó*ðZ ‡�×ÑØñá*1ÚGØˆF�^Ñ#ó+
ôó
ð ‡�×ÑØ(ÚFóð ‡�×Ñ˜  §¡¨1£Ó.ñRó /ó	ó
ð RðB ‡�×Ñ˜ e¨WÐ%5Ó6Ø‡�×Ñ˜¨¯©¨°~Ñ(EÓFØ‡�×Ñ˜ W¨hÐ$7Ó8Ø‡�×Ñ˜¨4°¨-Ó8Ø‡�×ÑØòóñ$Kóó 9ó 9ó Gó 7ð$KòNKð@ ‡�×Ñ˜ e¨WÐ%5Ó6Ø‡�×Ñ˜¨¯©¨°~Ñ(EÓFØ‡�×Ñ˜¨¨2 wÓ/Ø‡�×ÑØ#òóñ;Góó 0ó Gó 7ð;Gð| ‡�×ÑÐ+¨d¨V°nÑ-DÓEØ‡�×ÑØ8òóñ?óó Fð?ò6òr3ð$ ‡�×ÑØá	 %Ô	(¨/Ð:Ù	¨EÔ	2Ð4GÐHðóñ-óð-ð ‡�×ÑØÙƒi�Ð!Ñ$5Ó$7Ð9LÐ#MÐNóð ‡�×Ñ˜  a˜yÓ)ñ0ó *ó	ð
0òDòN3òPò,ð$ ‡�×Ñ˜ T¨:Ð7IÐ$JÓKØ‡�×Ñ˜ ¡e¨A£hÐ/Ó0Ø‡�×ÑÐ+¨d¨V°nÑ-DÓEñ"ó Fó 1ó Lð"ð ‡�×Ñ˜ ¡e¨A£hÐ/Ó0Ø‡�×ÑÐ+¨d¨V°nÑ-DÓEñ2ó Fó 1ð2ò ò 
ðF ‡�×ÑØ)Ñ+TÓ+Vóð ‡�×ÑØØ%Ð'AÐBØ ð ó ð
 ‡�×ÑØÙ
�%ÔÐØ ð ó ñ
RóóóðRð ‡�×ÑØÑ'ÀÔGóñ',óð',ðT ‡�×ÑÐ*©FÐ3IÓ,JÓKñFó LðFð. ‡�×ÑØàØØØ"ØØðó
ð ‡�×Ñ˜¨.Ó9ñDó :ó
ðDò ?ðF ‡�×Ñ˜ Ð2CÐ DÓEñ0ó Fð0ò8Að ‡�×ÑØ�Ð.Ð0LÐMóñóðð: ‡�×Ñ˜ T¨:Ð7IÐ$JÓKñCó LðCð8 ‡�×Ñ˜ wÐ0AÐ&BÓCñ=ó Dð=ð( ‡�×Ñ˜  a˜yÓ)Ø‡�×Ñ˜ wÐ0AÐ&BÓCñó Dó *ðò(Kò0$!ðN ‡�×ÑÐ/°1°a°&¸1¸a¸&Ð1AÓBØ‡�×ÑØØ�^Ñ# nÑ4°~ÑEÈÑVóñPó	ó Cð
Pò"ð ‡�×Ñ˜ wÐ0AÐ&BÓCØ‡�×ÑØà
�MÐ	" JÐ0SÐTàÐ*Ð+ØØ1ð	
ð �}Ð%ØØ@ð	
ðóñ &ó!ó Dð"&ð ‡�×Ñ˜ wÐ0AÐ&BÓCñ"ó Dð"ò"5ð ‡�×ÒÐKÓLñ#ó Mð#ð$ ‡�×Ñ˜Ò#IÓJØ‡�×ÑÐ-°°e¨}Ó=Ø‡�×Ñ˜¨.Ó9ñ#Fó :ó >ó Kð#FðL ‡�×Ñ˜Ò#>Ó?Ø‡�×Ñ˜¨.Ó9ñ#ó :ó @ð#ð ‡�×ÑÐ-°°e¨}Ó=Ø‡�×Ñ˜¨.Ó9ñWó :ó >ðWð8 ‡�×ÑÐ+¨e°T¨]Ó;Ø‡�×Ñ˜¨4°°·²¸³Ð*?Ó@Ø‡�×Ñ˜ r§x¢x j°>Ñ&AÓBØ‡�×ÑØÒOóñ4<óó Có Aó <ð4<ðn ‡�×ÑØÒNóñJóðJòDCð< ‡�×ÑØÒNóð ‡�×Ñ˜¡ q£Ó*ñIó +óðIò@"ð ‡�×ÑØà	˜"ÐØ	˜T 4˜LÐ)Ø	˜T 1˜IÐ&ðóñ"óð"ð ‡�×Ñ˜ F¨GÐ#4Ó5Ø‡�×Ñ˜¨4°¨-Ó8Ø‡�×Ñ˜Ò"8Ó9ñ$ó :ó 9ó 6ð$ð" ‡�×Ñ˜¨4°¨-Ó8Ø‡�×Ñ˜Ò"8Ó9ñ1ó :ó 9ð1ð2 ‡�×ÑØÒEóñ
óð
ð" ‡�×Ñ˜Ò"8Ó9ñ"/ó :ð"/ðJ ‡�×Ñ˜Ò"8Ó9ñBó :ðBò ð" ‡�×Ñ˜¨5°$¨-Ó8Ø‡�×ÑÐ+¨d¨V°nÑ-DÓEØ‡�×Ñ˜ &¨&Ð!1Ó2Ø‡�×Ñ˜ 7¨g¨YÑ#6Ó7ñ\:ó 8ó 3ó Fó 9ð\:ò@òð ‡�×ÑÐ-°°t¨}Ó=Ø‡�×Ñ˜¨5°$¨-Ó8Ø‡�×Ñ˜ q¨! fÓ-ñ(7ó .ó 9ó >ð(7òVNò4HðD ‡�×Ñ˜¨7Ð4EÐ*FÓGÙ¨Ô-ñ+ó .ó Hð+ð ‡�×ÑØ!á	‹�OÐ$Ù	Ó	Ð1Ð2ðóñ ¨Ô-ñ?ó .óñ?rH   