Ë
    íì�i F ã            
       óB   — 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l1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z=m>Z>m?Z?m@Z@ d dlAmBZBmCZC d dlDmEZEmFZFmGZGmHZHmIZImJZJ g d¢ZKdZLdZM e
jœ                  «       ZOeOj                   eOj¢                  cZRZS ej¨                  eRjª                  d    «      ZVej®                  j±                  d «      ZYeYjµ                  eV«       eVdd ZVeReV   eSeV   cZRZS e
j¶                  «       Z\e\j                   e\j¢                  cZ]Z^d„ Z_d„ Z` ejÂ                  ddg¬«      d„ «       ZbejÆ                  jÉ                  deK«      ejÆ                  jÉ                  ddd g«      d!„ «       «       ZeejÆ                  jÉ                  deK«      ejÆ                  jÉ                  ddd g«      d"„ «       «       ZfejÆ                  jÉ                  deK«      ejÆ                  jÉ                  ddd g«      d#„ «       «       ZgejÆ                  jÉ                  deK«      ejÆ                  jÉ                  ddd g«      d$„ «       «       ZhejÆ                  jÉ                  deK«      ejÆ                  jÉ                  ddd g«      d%„ «       «       ZiejÆ                  jÉ                  deK«      ejÆ                  jÉ                  ddd g«      d&„ «       «       ZjejÆ                  jÉ                  deK«      ejÆ                  jÉ                  ddd g«      ejÆ                  jÉ                  d'dgeHz   «      ejÆ                  jÉ                  d(d)d*g«      d+„ «       «       «       «       Zkd,„ Zld-„ Zmd.„ Znd/„ Zod0„ Zpd1„ ZqejÆ                  jÉ                  d2g d3¢«      ejÆ                  jÉ                  d4eH«      d5„ «       «       ZrejÆ                  jÉ                  d6g d7¢«      ejÆ                  jÉ                  d8dd g«      ejÆ                  jÉ                  d4eH«      d9„ «       «       «       ZsejÆ                  jÉ                  d6g d7¢«      ejÆ                  jÉ                  d8dd g«      ejÆ                  jÉ                  d4eH«      d:„ «       «       «       Zt	 	 	 	 	 	 	 	 	 	 	 	 dÀd<„ZuejÆ                  jÉ                  d=d>„  eg d?¢dgeHz   «      D «       «      ejÆ                  jÉ                  d@g dA¢«      dB„ «       «       ZvejÆ                  jÉ                  dCdDdEg«      ejÆ                  jÉ                  dFejî                  geHz   «      ejÆ                  jÉ                  dGdHdIg«      ejÆ                  jÉ                  ddd g«      ejÆ                  jÉ                  dJg dK¢«      dL„ «       «       «       «       «       ZxdM„ ZyejÆ                  jÉ                  dCdDdEg«      ejÆ                  jÉ                  dFejî                  geHz   «      ejÆ                  jÉ                  dNdOdPg«      ejÆ                  jÉ                  dQg dR¢«      dS„ «       «       «       «       ZzejÆ                  jÉ                  d'dgeHz   «      ejÆ                  jÉ                  dTg dU¢«      dV„ «       «       Z{dW„ Z|dX„ Z}ejÆ                  jÉ                  dY ed ¬Z«      ef ed ¬Z«      efg«      d[„ «       Z~ejÆ                  jÉ                  dY e«       ef e«       efg«      ejÆ                  jÉ                  d\dd]g«      d^„ «       «       Zd_„ Z€d`„ Z�da„ Z‚db„ ZƒejÆ                  jÉ                  dcddde_g«      ejÆ                  jÉ                  d\d e*de«      g«      ejÆ                  jÉ                  d'dgeHz   «      df„ «       «       «       Z„ejÆ                  jÉ                  d\d e*de«      g«      ejÆ                  jÉ                  d'dgeHz   «      dg„ «       «       Z…dh„ Z†	 dÁdi„Z‡ejÆ                  jÉ                  dj e7«       e5¬k«      ejÆ                  jÉ                  dleCe‡ge:¬k«      ejÆ                  jÉ                  dm edD¬n«       edD¬n«       e«        e«       ge:¬k«      do„ «       «       «       ZˆejÆ                  jÉ                  dm edD¬n«       e«       g«      ejÆ                  jÉ                  dp e7«       e5¬k«      dq„ «       «       Z‰ejÆ                  jÉ                  dr e8d ¬s«      «      dt„ «       ZŠejÆ                  jÉ                  dr e‹e2«      «      du„ «       ZŒejÆ                  jÉ                  dve|e}e�e‚eƒe†f«      ejÆ                  jÉ                  d4eH«      dw„ «       «       Z�dx„ ZŽejÆ                  jÉ                  dyeef«      dz„ «       Z�d{„ Z�ejÆ                  jÉ                  dcdd|e`g«      d}„ «       Z‘ejÆ                  jÉ                  dcddde_g«      d~„ «       Z’ejÆ                  jÉ                  deeg«      d€„ «       Z“ejÆ                  jÉ                  d\dd]g«      ejÆ                  jÉ                  deeg«      d�„ «       «       Z”d‚„ Z•dƒ„ Z–ejÆ                  jÉ                  d„d…d]gd]d…gg«      ejÆ                  jÉ                  d'eFeGz   eHz   eIz   eJz   «      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Æ                  �j=                  d“«      d”„ «       ZŸejÆ                  jÉ                  dg d•¢«      ejÆ                  jÉ                  d–dd g«      ejÆ                  jÉ                  d4eH«      d—„ «       «       «       Z ejÆ                  jÉ                  dg d˜¢«      ejÆ                  jÉ                  d4eH«      d™„ «       «       Z¡ejÆ                  jÉ                  d–dd g«      ejÆ                  jÉ                  d4eH«      dš„ «       «       Z¢ejÆ                  jÉ                  d›d dg«      ejÆ                  jÉ                  dœd e�jF                  d�«      g«      ejÆ                  jÉ                  dže�jH                  geHz   «      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É                  d¥ e¨d;«      «      d¦„ «       «       Z©d§„ ZªejÆ                  jÉ                  d¨ei fed\difed\d]i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eHz   «      ejÆ                  jÉ                  d´dµdg«      ejÆ                  jÉ                  deKd«g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Ú_get_namespace_device_dtype_idsÚ_max_precision_float_dtypeÚ)yield_namespace_device_dtype_combinationsÚyield_namespaces)Ú_get_check_estimator_ids)Úassert_allcloseÚassert_almost_equalÚassert_array_almost_equalÚassert_array_equalÚignore_warnings)Ú_array_api_for_testsÚ check_array_api_input_and_values)Ú	_IS_32BITÚCOO_CONTAINERSÚCSC_CONTAINERSÚCSR_CONTAINERSÚDOK_CONTAINERSÚLIL_CONTAINERS)ÚsvdÚ	sparse_cgÚcholeskyÚlsqrÚsagÚsaga)r:   r=   )r:   r;   r<   r=   r>   éÈ   c                 ó2   — t        j                  | |k(  «      S ©N)ÚnpÚmean©Úy_testÚy_predÚkwargss      úŠ/var/www/ITT-ServiceAPI-Services/ITT-Document-Scan/mrzscanner/mrzenv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_ridge.pyÚ_accuracy_callablerI   Z   s   € Ü�7‰7�6˜VÑ#Ó$Ð$ó    c                 ó.   — | |z
  dz  j                  «       S )Né   )rC   )rE   rF   s     rH   Ú_mean_squared_error_callablerM   ^   s   € Ø�f‰_ Ñ"×(Ñ(Ó*Ð*rJ   Ú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.
    rN   )é   é   )rS   rR   )Ú	n_samplesÚ
n_featuresÚeffective_rankÚrandom_stateé   Néÿÿÿÿçü©ñÒMbP?éöÿÿÿé
   ©ÚlowÚhighÚsize©r`   rL   r   )rY   rY   )ÚparamÚminrB   ÚrandomÚRandomStater	   r   r9   ÚallÚuniformÚnormalÚTÚdiagÚidentityÚsolveÚnorm)Úglobal_random_seedÚrequestrT   rU   ÚkÚrngÚXÚUÚsÚVtÚU1ÚU2ÚVt1Ú_Úcoef_olsÚyÚalphaÚdÚ
coef_ridgeÚR_OLSÚR_Ridges                        rH   Úols_ridge_datasetr�   b   sô  € ð> ‡}�}˜ÒØ %Ñˆ	‘:à %Ñˆ	�:ÜˆI�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�˜:Ð%Ð%rJ   Ú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çž¯Ò<ç»½×Ùß|Û=©r|   rƒ   r‚   ÚtolrW   rX   rL   NrY   r   ©Úaxis©Úsample_weight© )ÚdictrB   rC   Úsumr   ÚfitÚ
intercept_ÚpytestÚapproxr,   Úcoef_ÚscoreÚonesÚshapeÚsolver_)r‚   rƒ   r�   rn   rr   r{   ry   Úcoefr|   rP   Úres_nullÚ	res_RidgeÚR2_RidgeÚmodelÚ	intercepts                  rH   Útest_ridge_regressionr¡   ©   sÅ  € ð &�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Ò"Ð"Ñ"rJ   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…   rL   r†   r‡   rˆ   r‰   NrY   ç      à?rX   r‹   r   ç:Œ0âŽyE>©Úatol)r™   r   rB   Úconcatenater   Úmatrix_rankrc   rC   r’   r“   r”   r•   r,   r–   Úr_©r‚   rƒ   r�   rn   rr   r{   ry   r›   rT   rU   r|   rŸ   r    s                rH   Ú test_ridge_regression_hstacked_Xr«   ×   s&  € ð &�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¸Ö>rJ   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…   rL   r†   r‡   rˆ   r‰   NrY   r   r‹   r¤   r¥   )r™   r   rB   r§   r   r¨   rc   r©   rC   r’   r“   r”   r•   r,   r–   rª   s                rH   Ú test_ridge_regression_vstacked_Xr­   ÿ   s!  € ð &�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Ö1rJ   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‰   NrY   ú1Ridge does not provide the minimum norm solution.©Úreasonr�   )r™   r�   r   r’   r“   r”   r•   r,   r–   ÚpredictrB   r   rm   r©   Úxfail)r‚   rƒ   r�   rn   rr   r{   r›   ry   rT   rU   r|   rP   rŸ   r    s                 rH   Ú!test_ridge_regression_unpenalizedr´   )  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Õ*rJ   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‰   NrY   r£   rX   r‹   r;   r¯   r°   )r™   r   rB   r§   r   r¨   rc   r’   r“   r”   r•   Úskipr,   r–   r©   r²   rm   r³   ©r‚   rƒ   r�   rn   rr   r{   r›   ry   rT   rU   r|   rŸ   r    s                rH   Ú,test_ridge_regression_unpenalized_hstacked_Xr¸   `  sÈ  € ð &�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Õ7rJ   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‰   NrY   r‹   r¯   r°   )r™   r   rB   r§   r   r¨   rc   r©   r’   r“   r”   r•   r,   r–   r²   rm   r³   r·   s                rH   Ú,test_ridge_regression_unpenalized_vstacked_Xrº   —  s¦  € ð &�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Õ*rJ   Úsparse_containerr|   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   rX   r]   r†   r‡   rˆ   é † )r|   rƒ   r‚   rŠ   Úmax_iterrW   rY   r‹   r�   )ÚSPARSE_SOLVERS_WITH_INTERCEPTr”   r¶   Ú SPARSE_SOLVERS_WITHOUT_INTERCEPTr™   rq   rg   r   rB   r§   r©   rC   r’   r“   r•   r,   r–   )r‚   rƒ   r»   r|   r�   rn   rr   r{   ry   r›   rT   rU   ÚswrŸ   r    s                  rH   Ú$test_ridge_regression_sample_weightsrÃ   Î  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 Õ&rJ   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 )NrY   rX   r¼   ©r|   )	Ú
y_diabetesÚreshaper   Ú
X_diabetesrB   Údotri   r   r.   )r{   r›   ÚKÚ	dual_coefÚcoef2s        rH   Útest_primal_dual_relationshiprÍ     sl   € Ü×Ñ˜2˜qÓ!€AÜœ: q°°Ô7€DÜ
�‰Œzœ:Ÿ<™<Ó(€AÜ& q¨!°D°6Ô:€IÜ�F‰F”:—<‘< Ó+×-Ñ-€EÜ˜d EÕ*rJ   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   é   r\   z3sparse_cg did not converge after [0-9]+ iterations.©Úmatchr…   r:   ç        rX   )r|   r‚   rŠ   r¿   Úverbose)rB   rd   re   Úrandnr”   Úwarnsr   r   )rq   r{   rr   Úwarning_messages       rH   Ú&test_ridge_regression_convergence_failr×     st   € Ü
�)‰)×
Ñ
 Ó
"€CØ�	‰	�!‹€AØ�	‰	�!�RÓ€AØL€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Ï   r\   rX   r�   ©rX   rL   )rL   )rB   rd   re   rÔ   ÚnewaxisÚc_r   r’   r–   r™   r“   Ú
isinstanceÚndarrayÚfloat)rq   rT   rU   rr   r{   ÚY1ÚYÚridges           rH   Útest_ridge_shapes_typerã     sÄ  € ä
�)‰)×
Ñ
 Ó
"€CØ!Ñ€Iˆ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Ñ3rJ   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…   rX   )	rB   rd   re   rÔ   rÜ   r   r’   r“   r-   )rq   rT   rU   rr   r{   rá   râ   r    s           rH   Útest_ridge_interceptrå   6  s®   € ä
�)‰)×
Ñ
 Ó
"€CØ!Ñ€IˆzØ�	‰	�)˜ZÓ(€AØ�	‰	�)Ó€AÜ
�‰ˆa��q‘ˆjÑ€Aä‹G€Eà	‡I�Iˆa�„OØ× Ñ €Ià	‡I�Iˆa�„OÜ˜×(Ñ(¨Ñ+¨YÔ7Ü˜×(Ñ(¨Ñ+¨Y¸©_Õ=rJ   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Ï   rS   rÒ   F©r|   rƒ   ©rƒ   )	rB   rd   re   rÔ   r   r   r’   r-   r–   )rq   rT   rU   r{   rr   râ   Úolss          rH   Útest_ridge_vs_lstsqrê   H  s®   € ô �)‰)×
Ñ
 Ó
"€Cà Ñ€Iˆ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Õ/rJ   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é*   )é   r\   rÏ   r;   ©r|   r‚   )r9   r:   r<   r;   r=   r>   çê-�™—q=)r|   r‚   rŠ   rY   rÅ   zCNumber of targets and number of penalties do not correspond: 4 != 5rÐ   )rB   rd   re   rÔ   ÚarangeÚarrayÚzipri   r   r’   r–   r.   r”   ÚraisesÚ
ValueError)rq   rT   rU   Ú	n_targetsrr   r{   Ú	penaltiesr|   ÚtargetÚcoef_choleskyr‚   Úcoefs_indiv_penÚcoef_indiv_penrâ   Úerr_msgs                  rH   Útest_ridge_individual_penaltiesrü   ]  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   é   é   é	   )
rB   rd   re   rÔ   Úlenr   Úhstackr,   rÉ   ri   )
rý   rÿ   rq   rr   ÚX_mÚsqrt_swrá   ÚAÚoperatorÚreference_operators
             rH   Útest_X_CenterStackOpr  }  sû   € ô �)‰)×
Ñ
 Ó
"€CØ�	‰	�"�aÓ€AØ
�)‰)�A‹,€CØ�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ÕCrJ   r™   ))r\   rX   )é   r  )rþ   é   )rL   rL   )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   rX   )rŒ   ÚweightsTrè   )rB   rd   re   rÔ   r˜   r™   Ú	chisquareÚsqrtÚaveragerÉ   ri   r   Ú_compute_gramr,   )r™   r  rÿ   rq   rr   rÂ   r  ÚX_meanÚ
X_centeredÚ	true_gramÚX_sparseÚgcvÚcomputed_gramÚcomputed_means                 rH   Útest_compute_gramr  Œ  sê   € ô �)‰)×
Ñ
 Ó
"€CØˆ�	‰	�5Ð€AÙÜ�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˜}Õ-rJ   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  )rB   rd   re   rÔ   r˜   r™   r  r  r  ri   rÉ   r   Ú_compute_covariancer,   )r™   r  rÿ   rq   rr   rÂ   r  r  r  Útrue_covariancer  r  Úcomputed_covr  s                 rH   Útest_compute_covariancer"  ¡  sì   € ô �)‰)×
Ñ
 Ó
"€CØˆ�	‰	�5Ð€AÙÜ�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 \Õ2rJ   rX   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)	rT   rU   Ún_informativerõ   ÚbiasÚnoiseÚshuffler›   rW   rX   r   rÒ   )
r   rB   Úasarrayrd   re   Úbinomialr™   ÚcopyrÉ   Úabs)rT   rU   Úproportion_nonzeror$  rõ   r%  ÚX_offsetr&  r'  r›   ÚpositiverW   rr   r{   ÚcÚmaskÚ	removed_Xs                    rH   Ú_make_sparse_offset_regressionr2  ¶  s  € ô ØØØ#ØØØØØØ!ô
�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€KrJ   zsolver, sparse_containerc              #   ó6   K  — | ]  \  }}|�|dv r||f–— Œ y ­w)N)r:   Úridgecvr�   )Ú.0r‚   r»   s      rH   ú	<genexpr>r6  å  s3   è ø€ ò á&ˆVÐ%ð Ð# vÐ1IÑ'Ið 
Ð!Ô"ñùs   ‚)r;   r=   r:   r<   r>   r4  z"n_samples,dtype,proportion_nonzero))rí   Úfloat32çš™™™™™¹?)é(   r7  r…   )rí   Úfloat64çš™™™™™É?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*| j                  d«      rd}d}nd}d }t        || |||¬«      }|j                  ||	«       t        |j                  |
j                  dd¬«       t        |j                  |
j                  dd¬«       y )Nr…   gÍÌÌÌÌÌì?g      I@g     @@r\   é   )r%  rU   r,  r&  rW   rT   r9   )r‚   r|   F)r*  r4  ©Úalphasr=   gH¯¼šò×z>r¾   rˆ   )r|   r‚   r¿   rŠ   rW   rZ   ©r¦   Úrtol)
r2  r"   r   r’   Úastyper   Ú
startswithr,   r–   r“   )r‚   r,  rT   Údtyper»   rn   r|   r&  rr   r{   Ú	svd_ridgerâ   rŠ   r¿   s                 rH   Útest_solver_consistencyrF  ã  s  € ð$ €EØ&¨Ò,‰D°%€EÜ)ØØØ-ØØ'Øô�D€A€qô 	�Q‹€Aä˜U¨%Ô0×4Ñ4°Q¸Ó:€IØ	�‰�˜UˆÓ#€AØ	�‰�˜UˆÓ#€AØÐ#Ù˜QÓˆØ�ÒÜ ˜wÔ'‰à×Ñ˜UÔ#àˆCØ‰HàˆCØˆHäØØØØØ+ô
ˆð 
‡I�Iˆa�„OÜ�E—K‘K §¡°tÀ$ÕGÜ�E×$Ñ$ i×&:Ñ&:ÀÈDÖQrJ   Úgcv_moder9   ÚeigenÚX_containerÚX_shape)r  r  )r  rí   zy_shape, noise))©r  r…   )©r  rX   ç      >@)©r  rþ   ç     Àb@c           	      ó  — |\  }}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 )NrL   rY   rX   r   FrÏ   ©rT   rU   rõ   rW   r'  r&  r$  ©rZ   r8  r…   ç      $@g     @�@Úneg_mean_squared_error©Úcvrƒ   r?  Úscoring)rG  rƒ   r?  rZ   ©rA  )r  r2  rÇ   r   r’   Úalpha_r”   r•   r,   r–   r“   )rG  rI  rJ  Úy_shaperƒ   r&  rT   rU   rõ   rr   r{   r?  Ú	loo_ridgeÚ	gcv_ridgeÚX_gcvs                  rH   Útest_ridge_gcv_vs_ridge_loo_cvr^     sý   € ð $Ñ€Iˆ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ÖJrJ   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)r\   rÏ   rX   r   FrÏ   rQ  rR  TrU  )rƒ   r?  rW  zgcv_ridge.alpha_=z, loo_ridge.alpha_=rZ   rX  )	r2  r   r’   rY  r”   r•   r,   r–   r“   )	rW  rT   rU   rõ   rr   r{   r?  r[  r\  s	            rH   Útest_ridge_loo_cv_asym_scoringra  S  sö   € à"€GØ!Ñ€IˆzØ€IÜ)ØØØØØØØô�D€A€qò )€FÜØ D°Àô€Iô  d°6À7ÔK€Ià‡M�M�!�QÔØ‡M�M�!�QÔà×ÑœvŸ}™}¨Y×-=Ñ-=Ó>Ò>ð Øˆ9×ÑÐ
Ð1 	× 0Ñ 0Ð2Ð3óÐ>ô �I—O‘O Y§_¡_¸4Õ@Ü�I×(Ñ(¨)×*>Ñ*>ÀTÖJrJ   rU   r  rí   zy_shape, fit_intercept, noise))rK  Tr…   )rL  Tg      4@)rN  TrO  )rN  FrM  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 )NrR  r   rL   rY   rX   r  F)rT   rU   rõ   rW   r'  r&  rþ   )Ún_splits)ÚgroupsrT  )r?  rV  rW  rƒ   rç   ©rV  r‹   T)r?  Ústore_cv_resultsrG  rƒ   r�   rZ   rX  )rB   rd   re   r  r2  rÇ   rÔ   rc   rB  ÚintÚrepeatrð   r™   rß   r   Úsplitr   r’   r   rY  r!   r‘   r(  Úcv_results_Úindexr”   r•   r,   r–   r“   )rG  rI  rƒ   rU   rZ  r&  r?  rq   rõ   rr   r{   rŽ   ÚindicesÚX_tiledÚy_tiledrV  ÚsplitsÚkfoldÚ	ridge_regÚpredictionsÚkfold_errorsÚir]  r\  Ú
gcv_errorss                            rH   Útest_ridge_gcv_sample_weightsrv  s  sÆ  € ò )€FÜ
�)‰)×
Ñ
 Ó
"€CÜ" 7›|¨qÒ0�˜’°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))Nr9   rH  )Úautor9   rH  )rH  rH  rH  )r9   r9   r9   c                 ó�   — t        dd¬«      \  }}| � | |«      }t        ||«      |k(  sJ ‚t        |j                  |«      |k(  sJ ‚y )NrÏ   rL   )rT   rU   )r   r   ri   )r»   ÚmodeÚmode_n_greater_than_pÚmode_p_greater_than_nrr   ry   s         rH   Útest_check_gcv_mode_choicer|  ½  sT   € ô  Q°1Ô5�D€A€qØÐ#Ù˜QÓˆÜ˜1˜dÓ#Ð'<Ò<Ð<Ð<Ü˜1Ÿ3™3 Ó%Ð)>Ò>Ð>Ñ>rJ   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ƒ   rW  c                 ó   — t        | |«       S rA   )r   )Úxr{   s     rH   Úfuncz_test_ridge_loo.<locals>.funcê  s   € Ü" 1 aÓ(Ð(Ð(rJ   rT  r�   çñhãˆµøä>rX  )rÈ   r™   r   r’   rÆ   rY  Úappendr0   r   r   r   r”   r•   r   rB   r˜   Úvstackri   r²   r,   )r»   rT   Úretrr   rƒ   Ú	ridge_gcvrY  ÚfrW  Ú
ridge_gcv2r�  Ú
ridge_gcv3ÚscorerÚ
ridge_gcv4rá   ÚY_predrF   s                    rH   Ú_test_ridge_loor�  Ñ  s  € ä× Ñ  Ñ#€Ià
€CàÐÜ% tˆ=‰á+¬JÓ7¸ˆ=ˆÜ¨Ô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à€JrJ   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 )NrX   rÏ   re  )rÈ   r   r’   rÆ   r²   r  r–   r™   Útyper“   rB   r:  r   Ú
set_params)r»   rr   Úridge_cvrV  s       rH   Ú_test_ridge_cvr’  
  sá   € Ø&Ð.�
Ñ4DÄZÓ4P€AÜ‹y€HØ‡L�L�”JÔØ×Ñ�QÔäˆx�~‰~×#Ñ#Ó$¨Ò)Ð)Ð)Ü�×#Ñ#Ó$¬¯
©
Ñ2Ð2Ð2ä	ˆq‹€BØ×Ñ˜2ÐÔØ‡L�L�”JÔØ×Ñ�QÔäˆx�~‰~×#Ñ#Ó$¨Ò)Ð)Ð)Ü�×#Ñ#Ó$¬¯
©
Ñ2Ð2Ñ2rJ   zridge, make_dataset)rf  c                 ót   —  |dd¬«      \  }}t        | «      } | j                  ||«       t        | d«      rJ ‚y )Né   rì   ©rT   rW   rj  )r   r’   Úhasattr)râ   Úmake_datasetrr   r{   s       rH   Ú$test_ridge_gcv_cv_results_not_storedr˜    s=   € ñ  !°"Ô5�D€A€qÜ�%‹L€EØ	‡I�Iˆa�„OÜ�u˜mÔ,Ð,Ð,Ð,rJ   rV  rþ   c                 óÒ   —  |dd¬«      \  }}t        | «      } | j                  d|¬«       | j                  ||«       t        | d«      sJ ‚t	        | j
                  t        «      sJ ‚y )Nr”  rì   r•  F)rf  rV  Úbest_score_)r   r�  r’   r–  rÝ   rš  rß   )râ   r—  rV  rr   r{   s        rH   Útest_ridge_best_scorer›  +  sc   € ñ  !°"Ô5�D€A€qÜ�%‹L€EØ	×Ñ e°ÐÔ3Ø	‡I�Iˆa�„OÜ�5˜-Ô(Ð(Ð(Ü�e×'Ñ'¬Ô/Ð/Ñ/rJ   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   rX   gš™™™™™©?rL   rZ   )rX   éd   éè  r>  T)r?  Úalpha_per_targetrÅ   )r?  rŸ  rf  Úr2)r?  rŸ  rW  )r?  rV  rŸ  z3cv!=None and alpha_per_target=True are incompatiblerÐ   r”  )rB   rd   re   rÔ   rÉ   r˜   ri   r   r’   rY  r/   r.   r   r–   r™   rš  rj  r  Úisscalarr    r”   ró   rô   )rq   rT   rU   rõ   r{   rr   r?  r÷   Úoptimal_alphasr‘  Úmsgs              rH   Ú"test_ridge_cv_individual_penaltiesr¤  :  sÂ  € ô �)‰)×
Ñ
 Ó
#€Cð (0Ñ$€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Æ   rB   Úroundr—   )r»   rr   râ   s      rH   Ú_test_ridge_diabetesr§  �  sH   € Ø&Ð.�
Ñ4DÄZÓ4P€AÜ Ô&€EØ	‡I�Iˆa”ÔÜ�8‰8�E—K‘K ¤:Ó.°Ó2Ð2rJ   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 )NrX   Frè   rL   rþ   ©Údecimal)rÈ   rB   r„  rÆ   ri   r™   r   r’   r–   r²   r.   )r»   rr   rá   rU   râ   rŒ  rF   s          rH   Ú_test_multi_ridge_diabetesr«  ˆ  sº   € à&Ð.�
Ñ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ÖOrJ   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   rX   gHáz®Gé?rÏ   re  gš™™™™™é?)rB   ÚuniqueÚy_irisr™   ÚX_irisr   r   r’   r–   r²   rC   r   )r»   Ú	n_classesrU   rr   ÚregrF   rV  s          rH   Ú_test_ridge_classifiersr²  —  só   € Ü—	‘	œ&Ó!×'Ñ'¨Ñ*€IÜ—‘˜a‘€JØ"Ð*�Ñ0@ÄÓ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Ñ#Ó$¨Ò+Ð+Ñ+rJ   rW  ÚaccuracyrÏ   c                 óÀ   — | €t         n | t         «      }t        |«      rt        |«      n|}t        ||¬«      }|j	                  |t
        «      j                  |«       y )N)rW  rV  )r¯  Úcallabler   r   r’   r®  r²   )r»   rW  rV  rr   Úscoring_Úclfs         rH   Ú"test_ridge_classifier_with_scoringr¸  ©  sN   € ð #Ð*�Ñ0@ÄÓ0H€AÜ'/°Ô'8Œ{˜7Ô#¸g€HÜ
 H°Ô
4€Cà‡G�GˆAŒvÓ×Ñ˜qÕ!rJ   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�   rD   s      rH   Ú_dummy_scorez:test_ridge_regression_custom_scoring.<locals>._dummy_score½  s   € ØrJ   éþÿÿÿrL   rÏ   )Únum)r?  rW  rV  r»  r   )r¯  rB   Úlogspacer   r   r’   r®  rš  r”   r•   rY  )r»   rV  r¼  rr   r?  r·  s         rH   Ú$test_ridge_regression_custom_scoringrÀ  ·  s‰   € òð #Ð*�Ñ0@ÄÓ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Ñ1rJ   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ƒ   rZ   )rÈ   r   r’   rÆ   r—   )r»   rr   râ   r—   Úridge2Úscore2s         rH   Ú_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Š?Ð‰?rJ   c           	      ó  — t        ||«      }t        j                  |«      }t        j                  |«      }|j	                  ||¬«      }	|j	                  ||¬«      }
|j                  ||«       |j                  }|j                  }t        d¬«      5  t        |«      j                  |	|
«      }|j                  }|j                  |j                  k(  sJ ‚|j                  |	j                  k(  sJ ‚t        t        ||¬«      ||t        |«      ¬«       |j                  }|j                  |j                  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©Úxp©rA  r¦   )r1   r¯  rB  r®  r(  r’   r–   r“   r   r   r™   rD  r,   r&   r%   )ÚnameÚ	estimatorÚarray_namespacerÇ  Ú
dtype_namerA  rË  Ú	X_iris_npÚ	y_iris_npÚ	X_iris_xpÚ	y_iris_xpÚcoef_npÚintercept_npÚestimator_xpÚcoef_xpÚintercept_xps                   rH   Úcheck_array_api_attributesrÚ  ×  s\  € ô 
˜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¨"Ô-ØØÜ 
Ó+õ		
ð $×.Ñ.ˆØ×!Ñ! \×%7Ñ%7Ò7Ð7Ð7Ø×!Ñ! Y§_¡_Ò4Ð4Ð4äÜ˜l¨rÔ2ØØÜ 
Ó+õ		
÷!
÷ 
ñ 
ús   ÂC&FÆFz#array_namespace, device, dtype_name)ÚidsÚcheckrÎ  ©r‚   c                 ó¼   — | j                   j                  }i }t        ||«      }d|v r&|t        u rt	        ||«      |j
                  k(  rd|d<    ||| |f||dœ|¤Ž y )NÚCVrZ   rA  )rÇ  rÐ  )Ú	__class__Ú__name__r1   rÚ  r(   r7  )rÎ  rÜ  rÏ  rÇ  rÐ  rÍ  ÚtolsrË  s           rH   Útest_ridge_array_api_compliancerã  þ  su   € ð. ×Ñ×'Ñ'€DØ€DÜ	˜o¨vÓ	6€Bà�‰ØÔ/Ñ/Ü& r¨6Ó2°b·j±jÒ@ð
 ˆˆV‰Ù	Øˆi˜ðØ17ÀJñØRVórJ   z$array_namespace, device_, dtype_namec                 ó"  — t        ||«      }t        d¬«      \  }}|j                  |«      }|j                  |«      }| j                  ||«      }	|	j	                  |«      }
t        d¬«      5  |j                  ||¬«      |j                  ||¬«      }}| j                  ||«      }|j	                  |«      }|j                  |
j                  cxk(  r|j                  k(  sJ ‚ J ‚t        t        ||¬«      |
«       d d d «       y # 1 sw Y   y xY w)Nr   ©rW   TrÈ  rÆ  rÊ  )
r1   r
   rB  r’   r²   r   r(  r™   r,   r&   )rÎ  rÏ  Údevice_rÐ  rË  rr   r{   ÚX_npÚy_npÚridge_npÚpred_npÚX_xpÚy_xpÚridge_xpÚpred_xps                  rH   Ú*test_ridge_classifier_multilabel_array_apirï  &  sõ   € ô 
˜o¨wÓ	7€BÜ)°qÔ9�D€A€qØ�8‰8�JÓ€DØ�8‰8�JÓ€DØ�}‰}˜T 4Ó(€HØ×Ñ˜tÓ$€GÜ	¨4Ô	0ñ DØ—Z‘Z ¨W�ZÓ5°r·z±zÀ$Èw°zÓ7WˆdˆØ—=‘=  tÓ,ˆØ×"Ñ" 4Ó(ˆØ�}‰} §¡Ô8°·±Ò8Ð8Ñ8Ð8Ð8ÜÔ)¨'°bÔ9¸7ÔC÷D÷ Dñ Dús   Á-BDÄD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   rw  r9   Úlbfgs©r‚   r.  z Array API dispatch to namespace z" only supports solver 'svd'. Got 'z'.rÐ   TrÈ  zYThe solvers that support positive fitting do not support Array API dispatch to namespace zc. Please either disable Array API dispatch, or use a numpy-like namespace, or set `positive=False`.z&Using Array API dispatch to namespace zâ with `solver='auto'` will result in using the solver 'svd'. The results may differ from those when using a Numpy array, because in that case the preferred solver would be cholesky. Set `solver='svd'` to suppress this warning.)r1   r(  r¯  r®  r   Ú_parameter_constraintsÚoptionsrá  r”   ró   rô   r   r’   rÕ   ÚUserWarning)rÏ  rË  rÓ  rÔ  Úavailable_solversr‚   râ   Úexpected_msgs           rH   Ú6test_array_api_error_and_warnings_for_solver_parameterrù  ?  sè  € ô 
˜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È  rw  ró  )r1   r(  r¯  r®  r   ÚwarningsÚcatch_warningsÚfilterwarningsrö  r   r’   )rÏ  rË  rÓ  rÔ  râ   rø  s         rH   Ú)test_array_api_numpy_namespace_no_warningr  l  sç   € ä	˜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       rH   Útest_dense_sparser  „  s6   € ñ ˜$“€Iá˜=Ó)€JàÐ Ð!7Ü! )¨ZÀÖCð "8ÐrJ   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Ò   ©rX   rX   rX   rY   rY   ©Úclass_weightr;  rX   rZ   rY   Úbalanced)rX   rX   rY   rY   rL   )rB   rñ   r   r’   r/   r²   r  Úclasses_r.   r–   r“   )rr   r{   r±  Úregas       rH   Útest_class_weightsr  š  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Õ>rJ   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  rX   r�  r…   g      Y@)r   rX   rL   rL   N)	r’   ÚirisÚdatar÷   r-   r–   rB   r˜   r™   )r±  Úreg1Úreg2rŽ   r  s        rH   Ú"test_class_weight_vs_sample_weightr  ½  s=  € ñ
 ‹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Õ/rJ   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¼   r8  rX   )r  r?  rX   rZ   )r¼   r8  rX   r\   gš™™™™™É¿rL   rY   )rB   rñ   r   r’   r/   r²   )rr   r{   r±  s      rH   Útest_class_weights_cvr  Ú  s�   € ä
�‰�4˜�,  q 	¨D°$¨<¸#¸s¸À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¸$³Õ@rJ   rT  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Ï   ©r8  r…   rS  T©r?  rV  rf  rW  rþ   )rV  rf  rW  zcv!=None and store_cv_resultsrÐ   )rB   rd   re   rÔ   r  rµ  r   r   r’   rj  r™   r”   ró   rô   )rW  rq   rT   rU   r€  r?  Ún_alphasr¶  Úrr{   rõ   s              rH   Útest_ridgecv_store_cv_resultsr  é  s  € ô �)‰)×
Ñ
 Ó
#€Cà€IØ€JØ�	‰	�)˜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  rX   )rX   rY   rX   rY   rX   )rY   rY   rX   rY   rY   )
rB   rñ   r™   r  rµ  r   r   r’   rj  Ú	transpose)	rW  r€  r{   rT   r?  r  r¶  r  rõ   s	            rH   Ú)test_ridge_classifier_cv_store_cv_resultsr!  	  s  € ä
�‰�4˜�,  q 	¨D°$¨<¸#¸s¸À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ÑBrJ   Ú	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Ï   rL   r>  z`alphas` was mutated in `z
.__init__`)rB   rd   re   r   rÔ   Úrandintr?  rá  r’   r/   r(  )r"  rq   r?  rT   rU   r{   rr   Ú	ridge_ests           rH   Útest_ridgecv_alphas_conversionr'  &  s¾   € ä
�)‰)×
Ñ
 Ó
"€CØ€Fà Ñ€IˆzØ”GÑØ�I‰I�iÓ ‰à�K‰K˜˜1˜iÓ(ˆØ�	‰	�)˜ZÓ(€Aá Ô(€IØ×Ñ˜vÑ%ð Ø
# I×$6Ñ$6Ð#7°zÐBóÐ%ð ‡M�M�!�QÔÜ�y×'Ñ'¬¯©°FÓ);Õ<rJ   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…   rS  r$  rL   ©r?  rV  Nz"alphas\[0\] == 0.0, must be > 0.0.rÐ   )
rB   rd   re   r   rÔ   r%  r”   ró   rô   r’   )	rV  r"  rq   r?  rT   rU   r{   rr   r&  s	            rH   Útest_ridgecv_alphas_zeror*  ;  s·   € ô �)‰)×
Ñ
 Ó
"€CØ€Fà Ñ€Iˆ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�   r|   re  )rB   rd   re   rÔ   Úrandr   r   r’   r   r   rY  Úbest_estimator_r|   r.   r–   )rq   r?  rT   rU   r{   rr   rŽ   rV  r4  Ú
parametersÚgss              rH   Útest_ridgecv_sample_weightr1  Q  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rJ   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)NrL   rþ   rì   rX   r…   g       @rÅ   c                  ó,   •— ‰j                  ‰ ‰‰«       y rA   ©r’   )rr   râ   Úsample_weights_not_OKr{   s   €€€€rH   Úfit_ridge_not_okzStest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok�  s   ø€ Ø�I‰I�a˜Ð1Õ2rJ   c                  ó,   •— ‰j                  ‰ ‰‰«       y rA   r4  )rr   râ   Úsample_weights_not_OK_2r{   s   €€€€rH   Úfit_ridge_not_ok_2zUtest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok_2„  s   ø€ Ø�I‰I�a˜Ð3Õ4rJ   z)Sample weights must be 1D array or scalarrÐ   )rB   rd   re   rò   rÔ   rÛ   r   r’   r”   ró   rô   )Ú
n_samplessÚn_featuressrq   rT   rU   Úsample_weights_OKÚsample_weights_OK_1Úsample_weights_OK_2r6  r9  rû   rr   râ   r5  r8  r{   s              @@@@@rH   Ú9test_raises_value_error_if_sample_weights_greater_than_1dr?  i  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_featuresrL   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ç   rL   rX   r�   r”  r©  )rB   rd   re   r   rÔ   r’   r.   r–   )
rT   rU   r»   rq   Úsparse_ridgeÚdense_ridgerr   r{   Úsample_weightsr  s
             rH   Ú&test_sparse_design_with_sample_weightsrD  �  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ÖOrJ   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
  )rX   r\   r�  r>  )rB   rñ   r   r’   )rr   r{   râ   s      rH   Útest_ridgecv_int_alphasrF  ¦  sM   € Ü
�‰�4˜�,  q 	¨D°$¨<¸#¸s¸ÀcÈ3ÀZÐPÓQ€AÚ€Aô ˜<Ô(€EØ	‡I�Iˆa�…OrJ   zparams, err_type, err_msgr?  )rX   rY   iœÿÿÿz alphas\[1\] == -1, must be > 0.0)gš™™™™™¹¿r  g      $Àz"alphas\[0\] == -0.1, must be > 0.0)rX   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   rL   rÐ   Nr�   )rq   rÔ   r%  r”   ró   r’   )r"  rP   Úerr_typerû   rT   rU   rr   r{   s           rH   Útest_ridgecv_alphas_validationrJ  ¯  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   rL   rX   r>  N)rq   rÔ   r   r%  r’   )r"  rT   rU   rr   r{   s        rH   Útest_ridgecv_alphas_scalarrL  Ë  s[   € ð !Ñ€IˆzÜ�	‰	�)˜ZÓ(€AØ”GÑÜ�I‰I�iÓ ‰ä�K‰K˜˜1˜iÓ(ˆá�QÔ×Ñ˜A˜qÕ!rJ   c                  ó°   — t        dd¬«      } | j                  t        t        «       | j                  j
                  d   t        j
                  d   k(  sJ ‚y )Nr:   rX   )r‚   r¿   r   )r   r’   rÈ   rÆ   r–   r™   )r±  s    rH   Útest_sparse_cg_max_iterrN  Ý  sB   € Ü
�{¨QÔ
/€CØ‡G�GŒJœ
Ô#Ø�9‰9�?‰?˜1Ñ¤×!1Ñ!1°!Ñ!4Ò4Ð4Ñ4rJ   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 )	NrL   rX   rS   )r=   r>   r<   rï   )r‚   r¿   rŠ   )r:   r9   r;   r8  )
rÈ   rÆ   rB   Útileri   Úranger   r’   r/   Ún_iter_)rõ   rr   r{   Úy_nr¿   r‚   r±  s          rH   Útest_n_iterrT  ã  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ŒØ�{‰{Ñ"Ð"Ð"ñ#rJ   )r<   r:   rò  rw  Ú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í   )rU   rW   r.  Nr…   r   ra   rw  r:   rï   )r‚   rŠ   r.  r�   g�íµ ÷Æ >rX  )r2  rB   rd   re   rg   r™   r   r’   r,   r“   r–   )r‚   rU  rn   rÿ   r.  rr   r{   rŽ   rq   Údense_solverrB  rA  s               rH   Útest_ridge_fit_intercept_sparserX  ö  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ÀÖErJ   )r>   r9   r;   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   )rU   rW   rÝ  zsolver='{}' does not supportrÐ   )r2  r   Úformatr”   ró   rô   r’   )r‚   rÿ   rr   r{   ÚX_csrrA  rû   s          rH   Ú%test_ridge_fit_intercept_sparse_errorr\    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      @)rU   rT   rW   r-  r…   r   ra   r=   Trˆ   r¾   )r|   r‚   rƒ   rŠ   r¿   r�   rû  ç-Cëâ6?rX  z"sag" solver requires.*rÐ   rZ   )r‚   rƒ   rŠ   r¿   r�   )r2  rB   rd   re   rg   r™   r�   r   r’   rþ  rÿ  Úsimplefilterrö  r,   r“   r–   r”   rÕ   )rU  rn   rÿ   rr   r{   rq   rŽ   r[  rP   rB  rA  s              rH   Ú#test_ridge_fit_intercept_sparse_sagr`  *  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)rw  r:   r;   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þ   )rX   rL   r8  rÒ   g     ˆÃ@)rZ   ç�íµ ÷Æ°>rZ   r^  rò  )r=   rw  zIn Ridge, only 'sag' solverrÐ   )r|   r‚   rŽ   ra  r.  rŠ   N)r|   r‚   rŽ   r.  ra  rŠ   r   rÌ  )
r#   r-  rB   rÉ   r3   r”   ró   rô   r   r,   )ra  rŽ   rb  r‚   rq   rr   Ú
true_coefsr{   Útrue_interceptÚ	X_testingr|   rŠ   r¦   r.  Úoutr›   r    s                    rH   Ú.test_ridge_regression_check_arguments_validityri  H  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/)r9   r:   r;   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,  rL   éô  )r|   r‚   r¿   rŠ   r.  r^  gü©ñÒMb@?rÌ  )rB   rd   re   rÔ   rB  r7  ÚfinfoÚ
resolutionr   r’   r–   rD  r²   r,   )r‚   rq   r|   r.  rT   rU   ÚX_64Úy_64ÚX_32Úy_32rŠ   Úridge_32Úcoef_32Úridge_64Úcoef_64s                  rH   Útest_dtype_matchrv  …  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ÖIrJ   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  rL   r;   rî   rÏ   r©  )rB   rd   re   rñ   rÔ   rB  r7  r   r’   r–   rD  r²   r-   )rq   r|   rT   rU   Ún_targetrn  ro  rp  rq  rr  rs  rt  ru  s                rH   Útest_dtype_match_choleskyry  ª  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Ü˜Ÿ™¨¯©ÀÖBrJ   )r9   r;   r<   r:   r=   r>   rò  Úseedc                 óô  — 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ò  r:   rZ   r‚  rk  rˆ   F)	r|   r‚   rW   rŽ   r.  r¿   rŠ   Úreturn_n_iterra  r¥   )rB   rd   re   rÔ   rÉ   r�   r7  r:  r   rB  rD  r,   )r‚   rz  rW   rT   rU   rr   r›   r{   r|   r.  Úresultsr¦   Úcurrent_dtypes                rH   Ú%test_ridge_regression_dtype_stabilityr  È  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ÖHrJ   c                  ó¬   — t        d¬«      \  } }t        j                  | «      } | d d d…d d …f   } |d d d…   }t        d¬«      j	                  | |«       y )Nrì   rå  rL   r=   rÝ  )r   rB   Úasfortranarrayr   r’   )rr   r{   s     rH   Útest_ridge_sag_with_X_fortranr‚  ì  sS   € ä¨Ô+�D€A€qä
×Ñ˜!Ó€AØ	‰#ˆAˆ#Šqˆ&‰	€AØ	‰#ˆAˆ#‰€AÜ	�Ô×Ñ˜A˜qÕ!rJ   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.rX   r   )r°  rW   rY   r‹   Nr=   rÝ  r�   )	r
   rÇ   rB   r§   r’   r²   r™   r/   r   )Ú
ClassifierrP   rr   r{   rá   r·  rŒ  s          rH   Útest_ridgeclassifier_multilabelr…  ö  s¤   € ô *°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Õ!rJ   rw  rò  )rZ   r¼   r8  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.rX   rL   rþ   rS   rÏ   r”  r  r  r[   rí   T©r|   r.  r‚   rƒ   r   N)rB   rñ   rÉ   r   r’   rf   r–   )r‚   rƒ   r|   rr   r›   r    r{   rŸ   s           rH   Ú#test_ridge_positive_regression_testrˆ    s¡   € ô
 	�‰�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�%—+‘+ Ñ"Ô#Ð#Ñ#rJ   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�  r8  r…   rX   ra   r   r¼   )TFrˆ   )r|   r.  rƒ   rŠ   rd  r@  N)rB   rd   re   rÔ   rg   r™   rh   r   rƒ  r’   r–   r,   )
rƒ   r|   rq   rr   r›   r    r{   r}  r.  rŸ   s
             rH   Ú%test_ridge_ground_truth_positive_testr‹     sØ   € ô �)‰)×
Ñ
 Ó
#€CØ�	‰	�#�sÓ€AØ�;‰;�s˜C a§g¡g¨a¡jˆ;Ó1€DÙØˆ	Ø�‰H�yÑ ‰à�‰HˆØˆ�‰˜Ÿ™ ™ˆÓ	$ tÑ	+Ñ+€Aà€GØ!ò .ˆÜØ (¸-ÈUô
ˆð 	�‰�u—y‘y  A“×,Ñ,Õ-ð	.ô
 �W 4¨aÔ0rJ   )r9   r;   r<   r:   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.r8  rX   rL   rþ   rS   rY   TFr‡  zdoes not support positiverÐ   Nzonly 'lbfgs' solver can be used)r.  r‚   ra  )rB   rñ   r   r”   ró   rô   r’   r   )r‚   r|   rr   r›   r{   rŸ   ry   s          rH   Ú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.rŠ  rì   ©rT   rU   rW   r8  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   ra   r£   rL   )r“   rB   rd   re   r–   rg   r™   r‘   )	rŸ   rW   Únoise_scaler    rq   r›   rr   r|   r{   s	         €€€rH   Ú
ridge_lossz,test_positive_ridge_loss.<locals>.ridge_lossV  s¤   ø€ Ø×$Ñ$ˆ	ØÐ#Ü—)‘)×'Ñ'¨Ó5ˆCØ—;‘; §¡¨Q°À%Ç+Á+×BSÑBS Ó!TÑT‰Dà—;‘;ˆDà”R—V‘V˜Q  T¡™\¨IÑ5¸!Ñ;Ó<Ñ<¸sÀU¹{ÌRÏVÉVØ�!‰GóN
ñ @
ñ 
ð 	
rJ   rÅ   T)r|   r.  rå  )Nr¤   )r   r   r’   rQ  )r|   Ún_checksr’  rŸ   Úmodel_positiveÚlossÚloss_positiverW   Úloss_perturbedrr   r{   s   `        @@rH   Útest_positive_ridge_lossr˜  O  s«   ú€ ô  S°SÀrÔJ�D€A€qØ€EØ€H÷

ô ˜Ô×"Ñ" 1 aÓ(€EÜ °Ô6×:Ñ:¸1¸aÓ@€Nñ
 �eÓ€DÙ˜~Ó.€MØ�=Ò Ð Ð ô ˜h›ò /ˆÙ# NÀÔNˆØ Ó.Ð.Ð.ñ/rJ   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.rŠ  rì   r�  rX   Fg¼‰Ø—²Òœ<i ¡ )r.  rŠ   r¿   r^  r   r@  N)r   rB   Úexpand_dimsr(  r   r   r,   )r|   rr   r{   ÚconfigÚ
coef_lbfgsrø   s         rH   Útest_lbfgs_solver_consistencyr�  u  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ÖArJ   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.rX   rY   g    _ Âg    _ Br¼   rò  Frï   T)r|   r‚   rƒ   rŠ   r.  r¿   zlbfgs solver did not convergerÐ   N)rB   rñ   r   r”   rÕ   r   r’   )rr   r{   rŸ   s      rH   Útest_lbfgs_solver_errorrŸ  †  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.
    Nr9   )r;   r>   zunsupported configurationrì   rR   r   rL   r…   rò  rï   )rƒ   r|   r‚   r.  rW   rŠ   r�   rd  rX  r¼   r   r]   éûÿÿÿrž  r|   rÅ   r†   zSolver z- does fail test for scaling of sample_weight.r‹   r�   )r”   r¶   rB   rd   re   r-  r�   r   r’   r–   r*  r“   Ú	ones_liker,   rg   r™   r�  Úpir³   Útoarrayr§   )rƒ   r»   r  r‚   rn   rq   rT   rU   rr   r{   rP   r±  r›   r    rŽ   r  ÚX2Úy2Úsample_weight_1Úsample_weight_2r  s                        rH   Ú$test_ridge_sample_weight_consistencyrª  —  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ð rJ   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�  r\   r   )rT   rU   rõ   rW   ©r™   r£   NrL   r  rT  T)r?  rW  rƒ   rf  r�   rç   .)r   rB   r˜   r™   r   r’   Úemptyr  r    Ú	enumerateri  r   r²   r,   rj  )rU  rƒ   rõ   rr   r{   rŽ   r?  r‘  rr  rV  Ú	alpha_idxr|   ÚidxÚ	train_idxÚtest_idxrâ   s                   rH   Ú!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×(Ñ(¨+Õ6rJ   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.
    rL   ©rõ   rW   r   r¬  rT  T)rW  rf  r�   rÅ   N)r   rB   r˜   r™   r   r’   r    r   rY  Úsqueezeri  r²   r,   rš  r   )
rn   rr   r{   rŽ   r‘  rV  râ   ÚtrainÚtestÚ
y_pred_loos
             rH   Ú'test_ridge_cv_multioutput_sample_weightrº  (	  så   € ô  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.rL   r   rµ  c                 ó˜   — | |z
  dz  }t        j                  |d¬«      }|j                  dk(  rt        j                  |ddg¬«       S | S )NrL   r   r‹   rX   )r  )rB   rC   Úndimr  )Úy_truerF   ÚerrorsÚmean_errorss       rH   Úcustom_errorz=test_ridge_cv_custom_multioutput_scorer.<locals>.custom_errorF	  sP   € Ø˜6‘/ aÑ'ˆÜ—g‘g˜f¨1Ô-ˆØ×Ñ˜qÒ ä—J‘J˜{°Q¸°FÔ;Ð;Ð;ð ˆ|ÐrJ   c                 ó6   •—  ‰|| j                  |«      «       S )zGMultioutput score that give twice more importance to the second target.)r²   )rÎ  rr   r{   rÁ  s      €rH   Úcustom_multioutput_scorerzJtest_ridge_cv_custom_multioutput_scorer.<locals>.custom_multioutput_scorerP	  s   ø€ á˜Q 	× 1Ñ 1°!Ó 4Ó5Ð5Ð5rJ   )rW  rÅ   N)r   r   r’   r    r   rY  rB   r¶  ri  r²   r,   rš  )
rr   r{   rÃ  r‘  rV  râ   r·  r¸  r¹  rÁ  s
            @rH   Ú'test_ridge_cv_custom_multioutput_scorerrÄ  B	  sº   ø€ ä 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    rH   Ú*test_metadata_routing_with_default_scoringrÉ  d	  s   € ñ ƒO×(Ñ(Õ*rJ   zmetaestimator, make_datasetc                 óž   —  |ddd¬«      \  }}t        | «      } | 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’   rB   r˜   r™   )rÅ  r—  rr   r{   s       rH   Ú+test_set_score_request_with_default_scoringrË  m	  sF   € ñ  #°!À"ÔE�D€A€qÜ˜-Ó(€MØ×Ñ�a˜¬"¯'©'°!·'±'¸!±*Ó*=ÐÕ>rJ   )r�  r�  r£   r\   rX   g      *@rM  rM  TFFNrA   )¸rþ  Ú	itertoolsr   ÚnumpyrB   r”   Úscipyr   Úsklearnr   r   Úsklearn.baser   Úsklearn.datasetsr   r	   r
   r   Úsklearn.exceptionsr   Úsklearn.linear_modelr   r   r   r   r   r   Úsklearn.linear_model._ridger   r   r   r   r   r   r   Úsklearn.metricsr   r   r   Úsklearn.model_selectionr   r   r   r    r!   Úsklearn.preprocessingr"   Úsklearn.utilsr#   Úsklearn.utils._array_apir$   r%   r&   r'   r(   r)   r*   Ú-sklearn.utils._test_common.instance_generatorr+   Úsklearn.utils._testingr,   r-   r.   r/   r0   Úsklearn.utils.estimator_checksr1   r2   Úsklearn.utils.fixesr3   r4   r5   r6   r7   r8   ÚSOLVERSrÀ   rÁ   Úload_diabetesÚdiabetesr  r÷   rÈ   rÆ   rð   r™   Úindrd   re   rq   r'  Ú	load_irisr  r¯  r®  rI   rM   Úfixturer�   ÚmarkÚparametrizer¡   r«   r­   r´   r¸   rº   rÃ   rÍ   r×   rã   rå   rê   rü   r  r  r"  r2  rF  r(  r^  ra  rv  r|  r�  r’  r˜  r›  r¤  r§  r«  r²  r¸  rÀ  rÄ  rÚ  rã  rï  rù  Úsortedr  r  r  r  r  r  r!  r'  r*  r1  r?  rD  rF  rô   Ú	TypeErrorrJ  rL  rN  r   rT  rX  r\  r`  r˜   rñ   ri  rv  ry  rQ  r  r‚  r…  rˆ  r‹  r�  r˜  r�  rŸ  rª  r³  rº  rÄ  rÉ  rË  r�   rJ   rH   ú<module>rè     sn  ðÛ Ý ã Û Ý ç ,Ý ÷ó õ 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óñ+Ró	ó
ð+Rð\ ‡�×Ñ˜ 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ò ð @Dó$
ðN ‡�×ÑØ)Ù-Ó/Ø'ð ó ð
 ‡�×ÑØØ%Ð'AÐBØ ð ó ð
 ‡�×ÑØá�UÔÙ˜uÔ%Ù‹	ÙÓð	ð 	!ð ó 	ñó	óóð(ð( ‡�×ÑØ‘/¨Ô/Ñ1BÓ1DÐEóð ‡�×ÑØ*Ù-Ó/Ø'ð ó ñ
DóóðDð" ‡�×ÑØÑ'ÀÔ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ðóñ ¨Ô-ñ?ó .óñ?rJ   