
    {Kg-             	       ^   d dl Z d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZmZmZmZ d dlmZ d dlmZmZmZmZmZmZ d d	lmZmZmZmZm Z m!Z!m"Z" d d
l#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0 d dl1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z?m@Z@ d dlAmBZBmCZCmDZDmEZEmFZFmGZG g dZHdZIdZJ e
j                         ZLeLj                  eLj                  cZOZP ej                  eOj                  d          ZSej                  j                  d       ZVeVj                  eS       eSdd ZSeOeS   ePeS   cZOZP e
j                         ZYeYj                  eYj                  cZZZ[d Z\d Z] ej                  ddg      d        Z_ej                  j                  deH      ej                  j                  dddg      d                Zbej                  j                  deH      ej                  j                  dddg      d!               Zcej                  j                  deH      ej                  j                  dddg      d"               Zdej                  j                  deH      ej                  j                  dddg      d#               Zeej                  j                  deH      ej                  j                  dddg      d$               Zfej                  j                  deH      ej                  j                  dddg      d%               Zgej                  j                  deH      ej                  j                  dddg      ej                  j                  d&dgeEz         ej                  j                  d'd(d)g      d*                             Zhd+ Zid, Zjd- Zkd. Zld/ Zmd0 Znej                  j                  d1g d2      ej                  j                  d3eE      d4               Zoej                  j                  d5g d6      ej                  j                  d7ddg      ej                  j                  d3eE      d8                      Zpej                  j                  d5g d6      ej                  j                  d7ddg      ej                  j                  d3eE      d9                      Zq	 	 	 	 	 	 	 	 	 	 	 	 dd;Zrej                  j                  d<d=  eg d>dgeEz         D              ej                  j                  d?g d@      ej                  j                  dA ej                  dB            dC                      Zsej                  j                  dDdEdFg      ej                  j                  dGej                  geEz         ej                  j                  dHdIdJg      ej                  j                  dddg      ej                  j                  dKg dL      dM                                    ZudN Zvej                  j                  dDdEdFg      ej                  j                  dGej                  geEz         ej                  j                  dOdPdQg      ej                  j                  dRg dS      dT                             Zwej                  j                  d&dgeEz         ej                  j                  dUg dV      dW               ZxdX ZydY Zzej                  j                  dZ ed[      ef ed[      efg      d\        Z{ej                  j                  dZ e       ef e       efg      ej                  j                  d]ddBg      d^               Z|d_ Z}d` Z~da Zdb Zej                  j                  dcddde\g      ej                  j                  d]d e*de      g      ej                  j                  d&dgeEz         df                      Zej                  j                  d]d e*de      g      ej                  j                  d&dgeEz         dg               Zdh Zdi Zej                  j                  dj e5             ej                  j                  dke@ege?l      ej                  j                  dm edEn      ge?l      do                      Zej                  j                  dp e6dq            dr        Zej                  j                  dp ee2            ds        Zej                  j                  dteyeze~eeef      ej                  j                  d3eE      du               Zdv Zej                  j                  dweef      dx        Zdy Zej                  j                  dcddze]g      d{        Zej                  j                  dcddde\g      d|        Zej                  j                  d}eeg      d~        Zej                  j                  d]ddBg      ej                  j                  d}eeg      d               Zd Zd Zej                  j                  dddBgdBdgg      ej                  j                  d&eCeDz   eEz   eFz   eGz         d               Zd Zej                  j                  d}eeg      ej                  j                  dddiedfddiedfddiedfg      d               Zej                  j                  d}eeg      d        Zd Ze<d        Zej                  j                  dg d      ej                  j                  dddg      ej                  j                  d3eE      d                      Zej                  j                  dg d      ej                  j                  d3eE      d               Zej                  j                  dddg      ej                  j                  d3eE      d               Zej                  j                  dddg      ej                  j                  dd ej<                  d      g      ej                  j                  dej>                  geEz         ej                  j                  dg d      d                             Zej                  j                  dg d      d        Zd Zej                  j                  dg d      ej                  j                  dA ed:            d               Zd Zej                  j                  dei fed]difed]dBifg      d        Zej                  j                  dddg      ej                  j                  dddg      ej                  j                  d'g d      d                      Zej                  j                  dddg      ej                  j                  d'g d      d               Zej                  j                  dg d      d        Zej                  j                  d'g d      d        Zej                  j                  d'g d      d        Zd Zej                  j                  dddg      ej                  j                  d&dgeEz         ej                  j                  dddg      ej                  j                  deHdgz         d                             Zd Zd Zej                  ja                  d      ej                  j                  deeg      d               Zy)    N)product)linalg)config_contextdatasets)clone)make_classificationmake_low_rank_matrixmake_multilabel_classificationmake_regression)ConvergenceWarning)LinearRegressionRidgeRidgeClassifierRidgeClassifierCVRidgeCVridge_regression)_check_gcv_mode	_RidgeGCV_solve_cholesky_solve_cholesky_kernel_solve_lbfgs
_solve_svd_X_CenterStackOp)
get_scorermake_scorermean_squared_error)GridSearchCV
GroupKFoldKFoldLeaveOneOutcross_val_predict)minmax_scale)check_random_state)_NUMPY_NAMESPACE_NAMES_atol_for_type_convert_to_numpy)yield_namespace_device_dtype_combinationsyield_namespaces)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalignore_warnings)_array_api_for_tests_get_check_estimator_ids check_array_api_input_and_values)	_IS_32BITCOO_CONTAINERSCSC_CONTAINERSCSR_CONTAINERSDOK_CONTAINERSLIL_CONTAINERS)svd	sparse_cgcholeskylsqrsagsaga)r8   r;   )r8   r9   r:   r;   r<      c                 2    t        j                  | |k(        S N)npmeany_testy_predkwargss      i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/sklearn/linear_model/tests/test_ridge.py_accuracy_callablerG   X   s    776V#$$    c                 .    | |z
  dz  j                         S )N   )rA   )rC   rD   s     rF   _mean_squared_error_callablerK   \   s    f_"((**rH   longwide)paramsc                    |j                   dk(  rd\  }}nd\  }}t        ||      }t        j                  j	                  |       }t        ||||      }d|dddf<   t        j                  |      \  }}}	t        j                  |dkD        sJ |ddd|f   |dd|df   }}
|	d|ddf   |	|dddf   }}|j                   dk(  r8|j                  d	d
|      }||z  }|||j                  ||z
        dz  z  z  }nI|j                  d	d
|      }|j                  t        j                  d|z        z  |
j                  z  |z  }d}|t        j                  |      z  }d|d<   t        j                  |j                  |z  |z   |j                  |z        }|||z  z
  }|||z  z
  }t        j                  j                  |      t        j                  j                  |      k  sJ ||||fS )aD  Dataset with OLS and Ridge solutions, well conditioned X.

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

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

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

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

    Returns
    -------
    X : ndarray
        Last column of 1, i.e. intercept.
    y : ndarray
    coef_ols : ndarray of shape
        Minimum norm OLS solutions, i.e. min ||X w - y||_2_2 (with minimum ||w||_2 in
        case of ambiguity)
        Last coefficient is intercept.
    coef_ridge : ndarray of shape (5,)
        Ridge solution with alpha=1, i.e. min ||X w - y||_2_2 + ||w||_2^2.
        Last coefficient is intercept.
    rL   )      )rQ   rP   )	n_samples
n_featureseffective_rankrandom_state   NMbP?
   lowhighsizer^   rJ   r   )rW   rW   )paramminr@   randomRandomStater	   r   r7   alluniformnormalTdiagidentitysolvenorm)global_random_seedrequestrR   rS   krngXUsVtU1U2Vt1_coef_olsyalphad
coef_ridgeR_OLSR_Ridges                        rF   ols_ridge_datasetr   `   s   > }} %	: %	:Iz"A
))

 2
3C
1SV	A AaeHzz!}HAq"66!d(q"1"uXqABxBAY12q5	C}};;3Rj;AL	R#**)j"8*9Q>>>KKCbyK9552771q5>)BDD014 EJ''AAfIaccAgk13373J HE!j. G99>>% 299>>'#::::a:%%rH   solverfit_interceptTFc                    |\  }}}}d}t        |d| | dv rdnd|      }	|t        j                  |      z
  }
|||z  z
  }dt        j                  |dz        t        j                  |
dz        z  z
  }t	        di |	}|d	d	d	d
f   }|r|d
   }n*||j                  d      z
  }||j                         z
  }d}|j                  ||       |d	d
 }|j                  t        j                  |      k(  sJ t        |j                  |       |j                  ||      t        j                  |      k(  sJ t	        di |	j                  ||t        j                  |j                  d               }|j                  t        j                  |      k(  sJ t        |j                  |       |j                  ||      t        j                  |      k(  sJ |j                  | k(  sJ y	)zTest that Ridge converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
          ?Tr;   r<   V瞯<绽|=rz   r   r   tolrU   rV   rJ   NrW   r   axissample_weight )dictr@   rA   sumr   fit
intercept_pytestapproxr)   coef_scoreonesshapesolver_)r   r   r   rl   rp   ry   rw   coefrz   rN   res_null	res_RidgeR2_Ridgemodel	intercepts                  rF   test_ridge_regressionr      s    &MAq!TE.EE'F 2771:~HAHI266)Q,'"&&1*===HOFOE	!SbS&	AH	AL		IIaO9Dv}}Y7777EKK&;;q!h 7777 OFO1BGGAGGAJ4GHEv}}Y7777EKK&;;q!h 7777==F"""rH   c                 F   |\  }}}}|j                   \  }}	d}
t        |
dz  || | dv rdnd|      }|ddddf   }d	t        j                  ||fd
      z  }t        j                  j                  |      t        ||	d
z
        k  sJ |r|d   }n*||j                  d      z
  }||j                         z
  }d}|j                  ||       |dd }|j                  t        j                  |      k(  sJ t        |j                  t        j                  ||f   d       y)a  Test that Ridge converges for all solvers to correct solution on hstacked data.

    We work with a simple constructed data set with known solution.
    Fit on [X] with alpha is the same as fit on [X, X]/2 with alpha/2.
    For long X, [X, X] is a singular matrix.
    r   rJ   r   r   r   r   NrW         ?rV   r   r   :0yE>atol)r   r   r@   concatenater   matrix_rankra   rA   r   r   r   r   r)   r   r_r   r   r   rl   rp   ry   rw   r   rR   rS   rz   r   r   s                rF    test_ridge_regression_hstacked_Xr      s&    &MAq!TGGIzEai#.EE'E 	
!SbS&	AbnnaV!,,A99  #s9j1n'EEEEH	AL		IIaO9Dv}}Y7777 EKKtTz!2>rH   c                 >   |\  }}}}|j                   \  }}	d}
t        d|
z  || | dv rdnd|      }|ddddf   }t        j                  ||fd	
      }t        j                  j                  |      t        ||	      k  sJ t        j                  ||f   }|r|d   }n*||j                  d	
      z
  }||j                         z
  }d	}|j                  ||       |dd }|j                  t        j                  |      k(  sJ t        |j                  |d       y)aJ  Test that Ridge converges for all solvers to correct solution on vstacked data.

    We work with a simple constructed data set with known solution.
    Fit on [X] with alpha is the same as fit on [X], [y]
                                                [X], [y] with 2 * alpha.
    For wide X, [X', X'] is a singular matrix.
    r   rJ   r   r   r   r   NrW   r   r   r   r   )r   r   r@   r   r   r   ra   r   rA   r   r   r   r   r)   r   r   s                rF    test_ridge_regression_vstacked_Xr      s!    &MAq!TGGIzE%i#.EE'E 	
!SbS&	A
1vA&A99  #s9j'AAAA
adAH	AL		IIaO9Dv}}Y7777 EKKD1rH   c                 B   |\  }}}}|j                   \  }}	d}
t        |
|| | dv rdnd|      }t        d
i |}|r|ddddf   }|d   }|dd }nd}|j                  ||       ||	kD  s|s;|j                  t        j                  |      k(  sJ t        |j                  |       yt        |j                  |      |       t        ||z  |z   |       t        j                  j                  t        j                  |j                  |j                  f         t        j                  j                  t        j                  ||f         kD  sJ t        j                  d	       |j                  t        j                  |      k(  sJ t        |j                  |       y)a  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
    Note: This checks the minimum norm solution for wide X, i.e.
    n_samples < n_features:
        min ||w||_2 subject to X w = y
    r   r   r   r   r   NrW   1Ridge does not provide the minimum norm solution.reasonr   )r   r   r   r   r   r   r   r)   r   predictr@   r   rk   r   xfail)r   r   r   rl   rp   ry   r   rw   rR   rS   rz   rN   r   r   s                 rF   !test_ridge_regression_unpenalizedr   '  s    &MAq$GGIzE#.EE'F OFOE a"fIH	CRy		IIaO
 :]6==#;;;;T* 	a(!,D9,a0yy~~beeE$4$4ekk$ABCbiinnEE)T/"G
 
 	
 
 	OP6==#;;;;T*rH   c                    |\  }}}}|j                   \  }}	d}
t        |
|| | dv rdnd|      }|r|ddddf   }|d   }|dd }nd}dt        j                  ||fd	
      z  }t        j                  j                  |      t        ||	      k  sJ |j                  ||       ||	kD  s|sg|j                  t        j                  |      k(  sJ | dk(  rt        j                          t        |j                  t        j                  ||f          yt        |j                  |      |       t        j                  j!                  t        j                  |j                  |j                  f         t        j                  j!                  t        j                  |||f         kD  sJ t        j"                  d       |j                  t        j                  |      k(  sJ t        |j                  t        j                  ||f          y)a^  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
    OLS fit on [X] is the same as fit on [X, X]/2.
    For long X, [X, X] is a singular matrix and we check against the minimum norm
    solution:
        min ||w||_2 subject to min ||X w - y||_2
    r   r   r   r   r   NrW   r   rV   r   r9   r   r   )r   r   r@   r   r   r   ra   r   r   r   r   skipr)   r   r   r   rk   r   r   r   r   rl   rp   ry   r   rw   rR   rS   rz   r   r   s                rF   ,test_ridge_regression_unpenalized_hstacked_Xr   ^  s    &MAq$GGIzE#.EE'E a"fIH	CRy	bnnaV!,,A99  #s9j'AAAA	IIaO:]6==#;;;;ZKKMRUU4:%67
 	a(!,yy~~beeE$4$4ekk$ABCbiinnEE)T4'(G
 
 	
 
 	OP6==#;;;;RUU4:%67rH   c                    |\  }}}}|j                   \  }}	d}
t        |
|| | dv rdnd|      }|r|ddddf   }|d   }|dd }nd}t        j                  ||fd      }t        j                  j                  |      t        ||	      k  sJ t        j                  ||f   }|j                  ||       ||	kD  s|s;|j                  t        j                  |      k(  sJ t        |j                  |       yt        |j                  |      |       t        j                  j                  t        j                  |j                  |j                  f         t        j                  j                  t        j                  ||f         kD  sJ t        j                   d	
       |j                  t        j                  |      k(  sJ t        |j                  |       y)a  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
    OLS fit on [X] is the same as fit on [X], [y]
                                         [X], [y].
    For wide X, [X', X'] is a singular matrix and we check against the minimum norm
    solution:
        min ||w||_2 subject to X w = y
    r   r   r   r   r   NrW   r   r   r   )r   r   r@   r   r   r   ra   r   r   r   r   r   r)   r   r   rk   r   r   s                rF   ,test_ridge_regression_unpenalized_vstacked_Xr     s    &MAq$GGIzE#.EE'E a"fIH	CRy	
1vA&A99  #s9j'AAAA
adA	IIaO:]6==#;;;;T*
 	a(!,yy~~beeE$4$4ekk$ABCbiinnEE)T/"G
 
 	
 
 	OP6==#;;;;T*rH   sparse_containerrz   r   {Gz?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)zTest that Ridge with sample weights gives correct results.

    We use the following trick:
        ||y - Xw||_2 = (z - Aw)' W (z - Aw)
    for z=[y, y], A' = [X', X'] (vstacked), and W[:n/2] + W[n/2:] = 1, W=diag(W)
    Nr   rV   r[   r   r   r   順 )rz   r   r   r   max_iterrU   rW   r   r   )SPARSE_SOLVERS_WITH_INTERCEPTr   r    SPARSE_SOLVERS_WITHOUT_INTERCEPTr   ro   re   r   r@   r   r   rA   r   r   r   r)   r   )r   r   r   rz   r   rl   rp   ry   rw   r   rR   rS   swr   r   s                  rF   $test_ridge_regression_sample_weightsr     se   $ #V+HHKKM61Q#QKKM%MAq!TGGIz		3B#.EE'E 	
!SbS&	A
1vA&A
adA	r1r6z	U	"BH	AL	#Q	IIa"I%9Dv}}Y7777EKK&rH   c                  8   t         j                  dd      } t        t        | dg      }t	        j
                  t        t        j                        }t        || dg      }t	        j
                  t        j                  |      j                  }t        ||       y )NrW   rV   r   rz   )	
y_diabetesreshaper   
X_diabetesr@   dotrg   r   r+   )ry   r   K	dual_coefcoef2s        rF   test_primal_dual_relationshipr     sl    2q!A:q7D
z:<<(A&q!D6:IFF:<<+--EdE*rH   c            
         t         j                  j                  d      } | j                  d      }| j                  dd      }d}t	        j
                  t        |      5  t        ||dddd d	
       d d d        y # 1 sw Y   y xY w)Nr      rZ   z3sparse_cg did not converge after [0-9]+ iterations.matchr   r8           rV   )rz   r   r   r   verbose)r@   rb   rc   randnr   warnsr   r   )ro   ry   rp   warning_messages       rF   &test_ridge_regression_convergence_failr     sl    
))


"C		!A		!RAPO	(	@qKS4QR	
 
A	@	@s    A<<Bc                  r   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                  d|fk(  sJ |j                  j                  dk(  sJ t        |j                  t         j                        sJ t        |j                  t         j                        sJ |j                  ||       |j                  j                  d|fk(  sJ |j                  j                  dk(  sJ t        |j                  t         j                        sJ t        |j                  t         j                        sJ y )Nr   r   rZ   rV   r   rV   rJ   )rJ   )r@   rb   rc   r   newaxisc_r   r   r   r   r   
isinstancendarrayfloat)ro   rR   rS   rp   ry   Y1Yridges           rF   test_ridge_shapes_typer     s   
))


"C!Iz		)Z(A		)A	
1bjj=	B
aQhAGE	IIaO;;---!!R'''ekk2::...e&&...	IIa;;J///!!T)))ekk2::...e&&

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

333rH   c                     t         j                  j                  d      } d\  }}| j                  ||      }| j                  |      }t         j                  |d|z   f   }t               }|j                  ||       |j                  }|j                  ||       t        |j                  d   |       t        |j                  d   |dz          y )Nr   r   r   rV   )	r@   rb   rc   r   r   r   r   r   r*   )ro   rR   rS   rp   ry   r   r   r   s           rF   test_ridge_interceptr   4  s    
))


"C!Iz		)Z(A		)A
aqjAGE	IIaO  I	IIaO((+Y7((+Y_=rH   c                     t         j                  j                  d      } d\  }}| j                  |      }| j                  ||      }t	        dd      }t        d      }|j                  ||       |j                  ||       t        |j                  |j                         |j                  ||       |j                  ||       t        |j                  |j                         y )Nr   )r   rQ   r   Frz   r   r   )	r@   rb   rc   r   r   r   r   r*   r   )ro   rR   rS   ry   rp   r   olss          rF   test_ridge_vs_lstsqr   F  s     ))


"C Iz		)A		)Z(A51E

/C	IIaOGGAqMSYY/	IIaOGGAqMSYY/rH   c            
         t         j                  j                  d      } d\  }}}| j                  ||      }| j                  ||      }t        j                  |      }t        j
                  t        ||j                        D cg c],  \  }}t        |d      j                  ||      j                  . c}}      }	dD 
cg c]*  }
t        ||
d      j                  ||      j                  , }}
|D ]  }t        |	|        t        |d d 	      }d
}t        j                  t        |      5  |j                  ||       d d d        y c c}}w c c}
w # 1 sw Y   y xY w)N*   )   rZ   r   r9   rz   r   )r7   r8   r:   r9   r;   r<   -q=)rz   r   r   rW   r   zCNumber of targets and number of penalties do not correspond: 4 != 5r   )r@   rb   rc   r   arangearrayziprg   r   r   r   r+   r   raises
ValueError)ro   rR   rS   	n_targetsrp   ry   	penaltiesrz   targetcoef_choleskyr   coefs_indiv_pencoef_indiv_penr   err_msgs                  rF   test_ridge_individual_penaltiesr   [  sH    ))


#C'0$Iz9		)Z(A		)Y'A		)$IHH "%Y!4	
!4v j155a@FF!4	
M NMF 	If%8<<QBHHM   *!-@ * 	#2'ESG	z	1		!Q 
2	1!	
 
2	1s   1E
/E4EE$n_col)r   r   )   csr_containerc                 T   t         j                  j                  d      }|j                  dd      }|j                  d      }|j                  t	        |            } |j                  dg|  } |j                  dg|  }t         ||      ||      }t        j                  ||d d d f   |z  z
  |d d d f   g      }	t        |	j                  |      |j                  |             t        |	j                  j                  |      |j                  j                  |             y )Nr         	   )
r@   rb   rc   r   lenr   hstackr)   r   rg   )
r   r   ro   rp   X_msqrt_swr   Aoperatorreference_operators
             rF   test_X_CenterStackOpr	  {  s     ))


"C		"aA
))A,CiiAG		"uA		!eAa 0#w?HA4(83(>$>4@P#QR&**1-x||A?&((,,Q/1BCrH   r   ))rZ   rV   )   r  )r      )rJ   rJ   )r   r   uniform_weightsc                    t         j                  j                  d      } |j                  |  }|r#t        j                  |j
                  d         }n|j                  d| d         }t        j                  |      }t        j                  |d|      }||z
  |d d d f   z  }|j                  |j                        }	 |||d d d f   z        }
t        d      }|j                  |
|      \  }}t        ||       t        |	|       y Nr   rV   )r   weightsTr   )r@   rb   rc   r   r   r   	chisquaresqrtaverager   rg   r   _compute_gramr)   )r   r  r   ro   rp   r   r  X_mean
X_centered	true_gramX_sparsegcvcomputed_gramcomputed_means                 rF   test_compute_gramr    s     ))


"C		5AWWQWWQZ ]]1eAh'ggbkGZZ2.Ff*4 00Jz||,IQD!112H
$
'C#&#4#4Xw#G M=FM*I}-rH   c                    t         j                  j                  d      } |j                  |  }|r#t        j                  |j
                  d         }n|j                  d| d         }t        j                  |      }t        j                  |d|      }||z
  |d d d f   z  }|j                  j                  |      }	 |||d d d f   z        }
t        d      }|j                  |
|      \  }}t        ||       t        |	|       y r  )r@   rb   rc   r   r   r   r  r  r  rg   r   r   _compute_covariancer)   )r   r  r   ro   rp   r   r  r  r  true_covariancer  r  computed_covr  s                 rF   test_compute_covariancer     s     ))


"C		5AWWQWWQZ ]]1eAh'ggbkGZZ2.Ff*4 00J ll&&z2OQD!112H
$
'C"%"9"9(G"LL-FM*O\2rH   rV   c                    t        | ||||||d|	      \  }}}|dk(  rt        j                  |g      }||z  }t        j                  j	                  |      j                  d||j                        dkD  }|j                         }d|| <   d||<   ||j                  |      z  }|
rE||j                  t        j                  |      dz   |z
        z  }t        j                  |      dz   }|dk(  r|d   }|	r|||fS ||fS )NT)	rR   rS   n_informativer   biasnoiseshuffler   rU   rV   r   r   )
r   r@   asarrayrb   rc   binomialr   copyr   abs)rR   rS   proportion_nonzeror"  r   r#  X_offsetr$  r%  r   positiverU   rp   ry   cmask	removed_Xs                    rF   _make_sparse_offset_regressionr0    s    #!
GAq! QJJsOMA
		l+44Q8JAGGTWXX 	 IAteHIdOq	A	QUU266!9q=1$%%FF1IMQaD!Qwa4KrH   zsolver, sparse_containerc              #   6   K   | ]  \  }}||dv r||f  y w)N)r8   ridgecvr   ).0r   r   s      rF   	<genexpr>r4    s8      +
&V% #v1I'I 
!"+
s   )r9   r;   r8   r:   r<   r2  z"n_samples,dtype,proportion_nonzero))r   float32皙?)(   r5  r   )r   float64皙?seedr   c                    d}|dkD  rdnd}t        dd||||      \  }}	t        |      }t        d|	      j                  ||	      }
|j	                  |d
      }|	j	                  |d
      }	| ||      }| dk(  rt        |g      }nt        | d|      }|j                  ||	       t        |j                  |
j                  dd       t        |j                  |
j                  dd       y )Nr   g?g      I@g     @@rZ      )r#  rS   r*  r$  rU   rR   r7   )r   rz   F)r(  r2  alphasr   )r   r   rz   rX   r   rtol)	r0  r"   r   r   astyper   r)   r   r   )r   r*  rR   dtyper   r:  rz   r$  rp   ry   	svd_ridger   s               rF   test_solver_consistencyrD    s    & E&,D%E)-DAq 	QAU%044Q:I	U#A	U#A#Qw'Ve<	IIaOEKKt$GE$$i&:&:DQrH   gcv_moder7   eigenX_containerX_shape)r   r   )r   r   zy_shape, noise))r   r   )r   rV         >@)r   r        b@c           	         |\  }}t        |      dk(  r|d   nd}t        |||dd|d      \  }	}
|
j                  |      }
g d}t        |||d	
      }t        | ||      }|j	                  |	|
        ||	      }|j	                  ||
       |j
                  t        j                  |j
                        k(  sJ t        |j                  |j                  d       t        |j                  |j                  d       y )NrJ   rW   rV   r   Fr   rR   rS   r   rU   r%  r$  r"  rX   r6  r         $@g     @@neg_mean_squared_errorcvr   r>  scoring)rE  r   r>  rX   r@  )r  r0  r   r   r   alpha_r   r   r)   r   r   )rE  rG  rH  y_shaper   r$  rR   rS   r   rp   ry   r>  	loo_ridge	gcv_ridgeX_gcvs                  rF   test_ridge_gcv_vs_ridge_loo_cvr\    s     $Iz"7|q0aI)DAq 	
		'A(F#(	I #I MM!QNEMM%v}}Y-=-=>>>>IOOY__4@I(()*>*>TJrH   c            	         d} d\  }}d}t        |||dddd      \  }}g d}t        |d	|| 
      }t        d	||       }|j                  ||       |j                  ||       |j                  t	        j
                  |j                        k(  sJ t        |j                  |j                  d       t        |j                  |j                  d       y )Nexplained_variance)rZ   r   rV   r   Fr   rO  rP  TrS  )r   r>  rU  rX   rV  )	r0  r   r   rW  r   r   r)   r   r   )	rU  rR   rS   r   rp   ry   r>  rY  rZ  s	            rF   test_ridge_loo_cv_asym_scoringr_  E  s    "G!IzI)DAq )FDI d67KIMM!QMM!Qv}}Y-=-=>>>>IOOY__4@I(()*>*>TJrH   rS   r   r   zy_shape, fit_intercept, noise))rI  Tr   )rJ  Tg      4@)rL  TrM  )rL  FrK  c                    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)        ||||      }||z
  dz  }t        j                  |	j                  d         D cg c]  }t        j*                  |||k(     d      ! }}t        j,                  |      } ||	      }t!        |d| |      }|j#                  ||
|       t        |      dk(  r0|j.                  d d d d |j1                  |j&                        f   }n,|j.                  d d |j1                  |j&                        f   }|j&                  t3        j4                  |j&                        k(  sJ t7        ||d       t7        |j8                  |j8                  d       t7        |j:                  |j:                  d       y c c}w )NrP  r   rJ   rW   rV   r   F)rR   rS   r   rU   r%  r$  r   )n_splits)groupsrR  )r>  rT  rU  r   r   rT  r   T)r>  store_cv_resultsrE  r   r   rX   rV  )r@   rb   rc   r  r0  r   r   ra   rA  intrepeatr   r   r   r   splitr   r   r   rW  r!   r   r&  cv_results_indexr   r   r)   r   r   )rE  rG  r   rS   rX  r$  r>  ro   r   rp   ry   r   indicesX_tiledy_tiledrT  splitskfold	ridge_regpredictionskfold_errorsir[  rZ  
gcv_errorss                            rF   test_ridge_gcv_sample_weightsrt  c  s    )F
))


"C"7|q0aI)DAq 	
		'A		#a&))M"]%6%6%881<DDSIMii		!''!*-}=G!((/Mz1W:WG	QWWQZ	(BXXgwwX7F(#	E 
IIgwELLFIXXgwwX7F#IwFKKk)a/L<>IIaggaj<Q<Qq|GqL)2<Q   ::l+LNE#	I MM%-M8
7|q**1aell1K+KL
**1fll5<<.H+HI
<<6==)9)9::::J48IOOU[[t<I((%*:*:F+s   -$K>z2mode, mode_n_greater_than_p, mode_p_greater_than_n))Nr7   rF  )autor7   rF  )rF  rF  rF  )r7   r7   r7   c                     t        dd      \  }}|  | |      }t        ||      |k(  sJ t        |j                  |      |k(  sJ y )Nr   rJ   )rR   rS   )r   r   rg   )r   modemode_n_greater_than_pmode_p_greater_than_nrp   rw   s         rF   test_check_gcv_mode_choicerz    sT     Q15DAq#Q1d#'<<<<133%)>>>>rH   c                    t         j                  d   }g }| 	t         d}}n | t               d}}t        |      }|j                  |t               |j
                  }|j                  |       t        }t        t        d      }t        d|      }	  ||	j                        |t               |	j
                  t        j                  |      k(  sJ d }
t        |
      }t        d|      }  ||j                        |t               |j
                  t        j                  |      k(  sJ t        d      }t        d|      }|j                  |t               |j
                  t        j                  |      k(  sJ | O|j                  |t        t        j                  |      	       |j
                  t        j                  |      k(  sJ t        j                   t        t        f      j"                  }|j                  ||       |j%                  |      }|j                  |t               |j%                  |      }t'        t        j                   ||f      j"                  |d
       |S )Nr   TFr   )greater_is_better)r   rU  c                     t        | |       S r?   )r   )xry   s     rF   funcz_test_ridge_loo.<locals>.func  s    "1a(((rH   rR  r   h㈵>rV  )r   r   r   r   r   rW  appendr-   r   r   r   r   r   r   r@   r   vstackrg   r   r)   )r   rR   retrp   r   	ridge_gcvrW  frU  
ridge_gcv2r  
ridge_gcv3scorer
ridge_gcv4r   Y_predrD   s                    rF   _test_ridge_loor    s     #I
C%t=+J7=6I MM!Z FJJv 	A,FGug>JAjnna$f 5555) $Gug>JAjnna$f 5555 01Fuf=JNN1j!f 5555 a27793EF6==#8888 			:z*+--AMM!Qq!FMM!Z q!FBIIvv./116EJrH   c                 B   | t         n | t               }t               }|j                  |t               |j	                  |       t        |j                  j                        dk(  sJ t        |j                        t        j                  u sJ t        d      }|j                  |       |j                  |t               |j	                  |       t        |j                  j                        dk(  sJ t        |j                        t        j                  u sJ y )NrV   r   rc  )r   r   r   r   r   r  r   r   typer   r@   r8  r   
set_params)r   rp   ridge_cvrT  s       rF   _test_ridge_cvr    s    &.
4DZ4PAyHLLJQx~~##$)))##$

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

222rH   zridge, make_datasetrd  c                 ^     |dd      \  }}| j                  ||       t        | d      rJ y )N   r   rR   rU   rh  )r   hasattr)r   make_datasetrp   ry   s       rF   $test_ridge_gcv_cv_results_not_storedr  
  s4     !"5DAq	IIaOum,,,,rH   rT  c                      |dd      \  }}| j                  d|       | j                  ||       t        | d      sJ t        | j                  t
              sJ y )Nr  r   r  F)rd  rT  best_score_)r  r   r  r   r  r   )r   r  rT  rp   ry   s        rF   test_ridge_best_scorer    sZ     !"5DAq	e3	IIaO5-(((e''///rH   c            	         t         j                  j                  d      } d\  }}}| j                  ||      }t        j                  |d d dgf   t        j
                  d|f            t        j                  |d d dgf   dt        j
                  d|f      z        z   t        j                  |d d dgf   dt        j
                  d|f      z        z   | j                  ||      z   }d}|j                  D cg c](  }t        |	      j                  ||      j                  * }}t        |d
      j                  ||      }	t        ||	j                         t        t        |	j                        j                  ||      j                  |	j                         t        |d
d
      j                  ||      }	|	j                  j                  |fk(  sJ |	j                  j                  |fk(  sJ |	j                   j                  |t#        |      |fk(  sJ t        dd
d
      j                  ||      }	|	j                  j                  |fk(  sJ |	j                  j                  |fk(  sJ |	j                   j                  ||dfk(  sJ t        |d
d
      j                  ||d d df         }	t        j$                  |	j                        sJ t        j$                  |	j                        sJ |	j                   j                  |t#        |      fk(  sJ t        |d
d      j                  ||      }	t        ||	j                         t        t        |	j                        j                  ||      j                  |	j                         t        |t'               d
      }	d}
t)        j*                  t,        |
      5  |	j                  ||       d d d        t        |dd
      }	t)        j*                  t,        |
      5  |	j                  ||       d d d        y c c}w # 1 sw Y   SxY w# 1 sw Y   y xY w)Nr   )r   r   r   r   rV   g?rJ   rX   )rV   d     r=  T)r>  alpha_per_targetr   )r>  r  rd  r2)r>  r  rU  )r>  rT  r  z3cv!=None and alpha_per_target=True are incompatibler   r  )r@   rb   rc   r   r   r   rg   r   r   rW  r,   r+   r   r   r   r  rh  r  isscalarr    r   r   r   )ro   rR   rS   r   ry   rp   r>  r   optimal_alphasr  msgs              rF   "test_ridge_cv_individual_penaltiesr  &  s    ))


#C (0$Iz9		)Y'A
qQCy"''1j/23
&&1qc6D277Az?#;;
<	=
&&1qc6EBGGQ
O$<<
=	> ))Iz
*	+  F RSQTQTUQTvgV,00F;BBQTNU ft<@@AFH~x7 HOO$((A.44hnn
 ftdSWW	1H ??  YL000%%)555%%)S[))LLLL a$NRRSTVWXH??  YL000%%)555%%)Y)BBBB ftdSWW	1QT7H ;;x''';;x++,,,%%)S[)AAAA ftTJNNqRSTH~x7HOO$((A.44hnn fNH
?C	z	-Q 
.fTBH	z	-Q 
.	-a VZ 
.	- 
.	-s   <-P+P0P<0P9<Qc                     | t         n | t               }t        d      }|j                  |t               t	        j
                  |j                  |t              d      S )NFr   r   )r   r   r   r   r@   roundr   )r   rp   r   s      rF   _test_ridge_diabetesr  m  sH    &.
4DZ4PA&E	IIa88EKK:.22rH   c                    | t         n | t               }t        j                  t        t        f      j                  }t         j
                  d   }t        d      }|j                  ||       |j                  j
                  d|fk(  sJ |j                  |      }|j                  |t               |j                  |      }t        t        j                  ||f      j                  |d       y )NrV   Fr   rJ   r   decimal)r   r@   r  r   rg   r   r   r   r   r   r+   )r   rp   r   rS   r   r  rD   s          rF   _test_multi_ridge_diabetesr  t  s    &.
4DZ4PA
		:z*+--A!!!$J&E	IIaO;;J///]]1F	IIa]]1Fbii(89;;VQOrH   c                 X   t        j                  t              j                  d   }t        j                  d   }| t        n | t              }t               t               fD ]g  }|j                  |t               |j                  j                  ||fk(  sJ |j                  |      }t        j                  t        |k(        dkD  rgJ  t        d      }t        |      }|j                  |t               |j                  |      }t        j                  t        |k(        dk\  sJ y )Nr   rV   gHzG?r   rc  g?)r@   uniquey_irisr   X_irisr   r   r   r   r   rA   r   )r   	n_classesrS   rp   regrD   rT  s          rF   _test_ridge_classifiersr    s    		&!''*IaJ"*0@0HA!#4#676yy9j"9999Qwwv'(4///	 8 
qB
r
"CGGAv[[^F776V#$+++rH   rU  accuracyr   c                     | t         n | t               }t        |      rt        |      n|}t        ||      }|j	                  |t
              j                  |       y )N)rU  rT  )r  callabler   r   r   r  r   )r   rU  rT  rp   scoring_clfs         rF   "test_ridge_classifier_with_scoringr    sN     #*0@0HA'/'8{7#gH
H
4CGGAvq!rH   c                 R   d }| t         n | t               }t        j                  ddd      }t        |t	        |      |      }|j                  |t               |j                  t        j                  d      k(  sJ |j                  t        j                  |d         k(  sJ y )	Nc                      y)NzG?r   rB   s      rF   _dummy_scorez:test_ridge_regression_custom_scoring.<locals>._dummy_score  s    rH   rJ   r   )num)r>  rU  rT  r  r   )r  r@   logspacer   r   r   r  r  r   r   rW  )r   rT  r  rp   r>  r  s         rF   $test_ridge_regression_custom_scoringr    s     #*0@0HA[[QA&F
6;|3LQS
TCGGAv??fmmD1111::vay1111rH   c                    | t         n | t               }t        dd      }|j                  |t               |j	                  |t              }t        dd      }|j                  |t               |j	                  |t              }||k\  sJ y )Nr  F)r   r   rX   )r   r   r   r   r   )r   rp   r   r   ridge2score2s         rF   _test_tolerancer    st    &.
4DZ4PAd%0E	IIaKK:&Et51F
JJq*\\!Z(FF??rH   c                    t        ||      }t        j                  |      }t        j                  |      }|j	                  ||      }|j	                  ||      }	|j                  ||       |j                  }
|j                  }t        d      5  t        |      j                  ||	      }|j                  }|j                  dk(  sJ |j                  |j                  k(  sJ t        t        ||      |
t        |             |j                  }|j                  dk(  sJ |j                  |j                  k(  sJ t        t        ||      |t        |             d d d        y # 1 sw Y   y xY w)NdeviceTarray_api_dispatch)rQ   )xpr   r   )r.   r  rA  r  r&  r   r   r   r   r   r   rB  r)   r&   r%   )name	estimatorarray_namespacer  
dtype_namer  	X_iris_np	y_iris_np	X_iris_xp	y_iris_xpcoef_npintercept_npestimator_xpcoef_xpintercept_xps                  rF   check_array_api_attributesr    sA   	ov	6Bj)Ij)I

9V
4I

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

 $..!!R'''!!Y__444lr2
+	
 
1	0	0s   CE,,E5z#array_namespace, device, dtype_namecheck)idsr  r   c                 J    | j                   j                  } ||| |||       y )N)r  r  )	__class____name__)r  r  r  r  r  r  s         rF   test_ridge_array_api_compliancer    s%      ''D	$	?6jQrH   r  )include_numpy_namespacesc                    t        | d       }|j                  t        d d       }|j                  t        d d       }t        j
                  d   d   j                  }|ddhz
  D ]p  }t	        ||dk(        }d	|j                   d
| d}t        j                  t        |      5  t        d      5  |j                  ||       d d d        d d d        r t	        dd      }d|j                   d}t        j                  t        |      5  t        d      5  |j                  ||       d d d        d d d        t	               }d|j                   d}t        j                  t        |      5  t        d      5  |j                  ||       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   CxY w# 1 sw Y   y xY w)Nr  r   r   r   ru  r7   lbfgsr   r,  z Array API dispatch to namespace z" only supports solver 'svd'. Got 'z'.r   Tr  zYThe solvers that support positive fitting do not support Array API dispatch to namespace zc. Please either disable Array API dispatch, or use a numpy-like namespace, or set `positive=False`.z&Using Array API dispatch to namespace z with `solver='auto'` will result in using the solver 'svd'. The results may differ from those when using a Numpy array, because in that case the preferred solver would be cholesky. Set `solver='svd'` to suppress this warning.)r.   r&  r  r  r   _parameter_constraintsoptionsr  r   r   r   r   r   r   UserWarning)r  r  r  r  available_solversr   r   expected_msgs           rF   6test_array_api_error_and_warnings_for_solver_parameterr    s    
od	;B

6"1:&I

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

6"1:&I

6"1:&IGE	; 
 
	 	 	"Tt4IIi+ 5 
# 
4	0Vd+//	9E 
1	0 54 
#	" 
1	0s0   )C)CC)6C5C&	"C))C25C>	test_funcc                 L     | d       } | |      }||t        ||d       y y y )Nr   r  )r+   )r  r   	ret_dense
ret_sparses       rF   test_dense_sparser  ?  s6     $I=)J!7!)ZC "8rH   c                     t        j                  ddgddgddgddgddgg      } g d}t        d       }|j                  | |       t	        |j                  ddgg      t        j                  d	g             t        d	d
i      }|j                  | |       t	        |j                  ddgg      t        j                  dg             t        d      }|j                  | |       t	        |j                  ddgg      t        j                  d	g             t        j                  ddgddgddgddgg      } g d}t        d       }|j                  | |       t        d      }|j                  | |       t        |j                        dk(  sJ t        |j                  |j                         t        |j                  |j                         y )N      r   皙r   r   rV   rV   rV   rW   rW   class_weightr9  rV   rX   rW   balanced)rV   rV   rW   rW   rJ   )r@   r   r   r   r,   r   r  classes_r+   r   r   )rp   ry   r  regas       rF   test_class_weightsr  U  s   
4,q	D$<#sc3ZPQAA
t
,CGGAqMs{{S$K=1288QC=A 5z
2CGGAqM s{{S$K=1288RD>B z
2CGGAqMs{{S$K=1288QC=A 	4,q	D$<#sDEAA
t
,CGGAqM
3DHHQNt}}"""cii4cnndoo>rH   r  c                     |        }|j                  t        j                  t        j                          | d      }|j                  t        j                  t        j                         t	        |j
                  |j
                         t        j                  t        j                  j                        }|t        j                  dk(  xx   dz  cc<   dddd} |        }|j                  t        j                  t        j                  |        | |      }|j                  t        j                  t        j                         t	        |j
                  |j
                          |        }|j                  t        j                  t        j                  |dz          | |      }|j                  t        j                  t        j                  |       t	        |j
                  |j
                         y	)
z5Check class_weights resemble sample_weights behavior.r  r  rV   r  r   g      Y@)r   rV   rJ   rJ   N)	r   irisdatar   r*   r   r@   r   r   )r  reg1reg2r   r  s        rF   "test_class_weight_vs_sample_weightr  x  s=   
 5DHHTYY$J'DHHTYY$

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

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

DJJ/rH   c                  @   t        j                  ddgddgddgddgddgg      } g d}t        d g d      }|j                  | |       t        d	d
ig d      }|j                  | |       t	        |j                  ddgg      t        j                  dg             y )Nr  r   r  r   r   r  )r   r6  rV   )r  r>  rV   rX   )r   r6  rV   rZ   gɿrJ   rW   )r@   r   r   r   r,   r   )rp   ry   r  s      rF   test_class_weights_cvr    s    
4,q	D$<#sc3ZPQAA
n
ECGGAqM !U<N
OCGGAqMs{{T1I;/2$@rH   rR  c                    t         j                  j                  d      }d}d}|j                  ||      }g d}t	        |      }t        |       rt        |       n| }t        |d d|      }|j                  |      }	|j                  ||	       |j                  j                  ||fk(  sJ d}
|j                  ||
      }	|j                  ||	       |j                  j                  ||
|fk(  sJ t        dd|       }t        j                  t        d	
      5  |j                  ||	       d d d        y # 1 sw Y   y xY w)Nr   r   r   r6  r   rQ  Tr>  rT  rd  rU  r   )rT  rd  rU  zcv!=None and store_cv_resultsr   )r@   rb   rc   r   r  r  r   r   r   rh  r   r   r   r   )rU  ro   rR   rS   r~  r>  n_alphasr  rry   r   s              rF   test_ridgecv_store_cv_resultsr    s    ))


#CIJ		)Z(AF6{H'/'8{7#gHv$xPA 			)AEE!QK==9h"7777 I		)Y'AEE!QK==9i"BBBB1tW=A	z)H	I	a 
J	I	Is   D55D>c                 >   t        j                  ddgddgddgddgddgg      }t        j                  g d      }|j                  d   }g d}t        |      }t	        |       rt        |       n| }t        |d d|	      }d
}|j                  ||       |j                  j                  |||fk(  sJ t        j                  g dg dg dg      j                         }|j                  d
   }|j                  ||       |j                  j                  |||fk(  sJ y )Nr  r   r  r   r   r  r	  Tr
  rV   )rV   rW   rV   rW   rV   )rW   rW   rV   rW   rW   )
r@   r   r   r  r  r   r   r   rh  	transpose)	rU  r~  ry   rR   r>  r  r  r  r   s	            rF   )test_ridge_classifier_cv_store_cv_resultsr    s   
4,q	D$<#sc3ZPQA
"#A
IF6{H'/'8{7#gH$x	A
 IEE!QK==9i"BBBB 		-/BC	ik  
IEE!QK==9i"BBBBrH   	Estimatorc                    t         j                  j                  d      }d}d\  }}| t        u r|j	                  |      }n|j                  dd|      }|j	                  ||      } | |      }|j                  |u sJ d| j                   d       |j                  ||       t        |j                  t        j                  |             y )Nr   r	  r   r   rJ   r=  z`alphas` was mutated in `z
.__init__`)r@   rb   rc   r   r   randintr>  r  r   r,   r&  )r  ro   r>  rR   rS   ry   rp   	ridge_ests           rF   test_ridgecv_alphas_conversionr    s    
))


"CF IzGIIi KK1i(		)Z(A(IF"B	"9#5#5"6jAB" MM!Qy''F);<rH   c                    t         j                  j                  d      }d}d\  }}|t        u r|j	                  |      }n|j                  dd|      }|j	                  ||      } |||       }| 7t        j                  t        d      5  |j                  ||       ddd       y|j                  ||       y# 1 sw Y   yxY w)	z1Check alpha=0.0 raises error only when `cv=None`.r   )r   r   rQ  r  rJ   r>  rT  Nz"alphas\[0\] == 0.0, must be > 0.0.r   )
r@   rb   rc   r   r   r  r   r   r   r   )	rT  r  ro   r>  rR   rS   ry   rp   r  s	            rF   test_ridgecv_alphas_zeror    s     ))


"CF IzGIIi KK1i(		)Z(AB/I	z]]:-RSMM!Q TS 	a TSs   B<<Cc                     t         j                  j                  d      } d}dD ]  \  }}| j                  |      }| j                  ||      }d| j	                  |      z   }t        d      }t        ||      }|j                  |||       d|i}	t        t               |	|	      }
|
j                  |||       |j                  |
j                  j                  k(  sJ t        |j                  |
j                  j                          y )
Nr   r	  )r  r   r   r   r   r  r   rz   rc  )r@   rb   rc   r   randr   r   r   r   r   rW  best_estimator_rz   r+   r   )ro   r>  rR   rS   ry   rp   r   rT  r2  
parametersgss              rF   test_ridgecv_sample_weightr     s    
))


"CF "3	:IIi IIi,chhy111XB/Aq6 v&
%':"5
q!=1~~!3!3!9!9999!'--1C1C1I1IJ "3rH   c                     ddg} ddg}t         j                  j                  d      }t        | |      D ]!  \  }}|j	                  ||      |j	                  |      |j	                  |      dz  dz   }d}d}|d d t         j
                  f   |t         j
                  d d f   t        d      j                  |       j                  |       j                  |       fd}fd	}	d
}
t        j                  t        |
      5   |        d d d        d
}
t        j                  t        |
      5   |	        d d d        $ y # 1 sw Y   :xY w# 1 sw Y   <xY w)NrJ   r   r   rV   r   g       @r   c                  ,    j                          y r?   r   )rp   r   sample_weights_not_OKry   s   rF   fit_ridge_not_okzStest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok<  s    IIa12rH   c                  ,    j                          y r?   r#  )rp   r   sample_weights_not_OK_2ry   s   rF   fit_ridge_not_ok_2zUtest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok_2?  s    IIa34rH   z)Sample weights must be 1D array or scalarr   )r@   rb   rc   r   r   r   r   r   r   r   r   )
n_samplessn_featuressro   rR   rS   sample_weights_OKsample_weights_OK_1sample_weights_OK_2r%  r(  r   rp   r   r$  r'  ry   s              @@@@@rF   9test_raises_value_error_if_sample_weights_greater_than_1dr.  $  sG    QJa&K
))


#C!$Z!=	:IIi,IIi IIi0A59!! 1!RZZ- @"3BJJM"BA 			!Q)*		!Q+,		!Q+,	3	5 >]]:W5 6 >]]:W5  657 ">. 65 65s   EE+E(	+E5	zn_samples,n_featuresrJ   c                    t         j                  j                  d      }t        dd      }t        dd      }|j	                  | |      }|j	                  |       }|j	                  |       dz  dz   } ||      }	|j                  |	||       |j                  |||       t        |j                  |j                  d	       y )
Nr   r   Fr   rJ   rV   r   r  r  )r@   rb   rc   r   r   r   r+   r   )
rR   rS   r   ro   sparse_ridgedense_ridgerp   ry   sample_weightsr  s
             rF   &test_sparse_design_with_sample_weightsr3  K  s     ))


#Cs%8Lc7K		)Z(A		)AYYy)Q.2N"HXq?OOAqO7l00+2C2CQOrH   c                      t        j                  ddgddgddgddgddgg      } g d}t        d      }|j                  | |       y )	Nr  r   r  r   r   r  )rV   rZ   r  r=  )r@   r   r   r   )rp   ry   r   s      rF   test_ridgecv_int_alphasr5  a  sM    
4,q	D$<#sc3ZPQAA <(E	IIaOrH   zparams, err_type, err_msgr>  )rV   rW   iz alphas\[1\] == -1, must be > 0.0)gr  g      $z"alphas\[0\] == -0.1, must be > 0.0)rV   r   1z1alphas\[2\] must be an instance of float, not strc                     d\  }}t         j                  ||      }t         j                  dd|      }t        j                  ||      5   | di |j                  ||       ddd       y# 1 sw Y   yxY w)z?Check the `alphas` validation in RidgeCV and RidgeClassifierCV.r  r   rJ   r   Nr   )ro   r   r  r   r   r   )r  rN   err_typer   rR   rS   rp   ry   s           rF   test_ridgecv_alphas_validationr9  j  sb    ( !Iz		)Z(AAq)$A	xw	/F1% 
0	/	/s   
A,,A5c                     d\  }}t         j                  ||      }| t        u rt         j                  |      }nt         j                  dd|      } | d      j	                  ||       y)zCheck the case when `alphas` is a scalar.
    This case was supported in the past when `alphas` where converted
    into array in `__init__`.
    We add this test to ensure backward compatibility.
    r  r   rJ   rV   r=  N)ro   r   r   r  r   )r  rR   rS   rp   ry   s        rF   test_ridgecv_alphas_scalarr;    s[     !Iz		)Z(AGIIi KK1i(QAq!rH   c                      t        dd      } | j                  t        t               | j                  j
                  d   t        j
                  d   k(  sJ y )Nr8   rV   )r   r   r   )r   r   r   r   r   r   )r  s    rF   test_sparse_cg_max_iterr=    sB    
{Q
/CGGJ
#99??1!1!1!!4444rH   c            	         d} t         t        }}t        j                  || df      j                  }t        dd      D ]S  }dD ]L  }t        ||d      }|j                  ||       t        |j                  t        j                  ||              N U dD ]0  }t        |dd      }|j                  ||       |j                  0J  y )	NrJ   rV   rQ   )r;   r<   r:   r   )r   r   r   )r8   r7   r9   r6  )
r   r   r@   tilerg   ranger   r   r,   n_iter_)r   rp   ry   y_nr   r   r  s          rF   test_n_iterrC    s     IzqA
''!i^
$
&
&C!QK-FveDCGGAsOs{{BGGHi,HI .   36A483{{""" 3rH   )r:   r8   r  ru  with_sample_weightc                    | dk(  }t        d||      \  }}d}|rAt        j                  j                  |      }d|j	                  |j
                  d         z   }| dk(  rd	n| }	t        |	d
|      }
t        | d
|      }|
j                  |||       |j                   ||      ||       t        |
j                  |j                         t        |
j                  |j                  d       y)a  Check that ridge finds the same coefs and intercept on dense and sparse input
    in the presence of sample weights.

    For now only sparse_cg and lbfgs can correctly fit an intercept
    with sparse X with default tol and max_iter.
    'sag' is tested separately in test_ridge_fit_intercept_sparse_sag because it
    requires more iterations and should raise a warning if default max_iter is used.
    Other solvers raise an exception, as checked in
    test_ridge_fit_intercept_sparse_error
    r  r   )rS   rU   r,  Nr   r   r_   ru  r8   r   )r   r   r,  r   gƠ>rV  )r0  r@   rb   rc   re   r   r   r   r)   r   r   )r   rD  rl   r   r,  rp   ry   r   ro   dense_solverr1  r0  s               rF   test_ridge_fit_intercept_sparserG    s       H)$6DAq Mii##$67ckkqwwqzk:: #)F"2;L|JKEHELOOAqO6]1%qFK**L,C,CDK%%|'9'9ErH   )r<   r7   r9   c                     t        dd      \  }} ||      }t        |       }dj                  |       }t        j                  t
        |      5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr   r   )rS   rU   r  zsolver='{}' does not supportr   )r0  r   formatr   r   r   r   )r   r   rp   ry   X_csrr0  r   s          rF   %test_ridge_fit_intercept_sparse_errorrK    sb     *RaHDAq!E'L,33F;G	z	1" 
2	1	1s   A--A6c                    t        dd|d      \  }}| rBt        j                  j                  |      }d|j	                  |j
                  d         z   }nd } ||      }t        ddd	d
d      }t        di |}	t        di |}
|	j                  |||       t        j                         5  t        j                  dt               |
j                  |||       d d d        t        |	j                  |
j                  d       t        |	j                  |
j                  d       t!        j"                  t        d      5  t        dd	dd       j                  ||       d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   g      @)rS   rR   rU   r+  r   r   r_   r;   Tr   r   )rz   r   r   r   r   r   r  -C6?rV  z"sag" solver requires.*r   rX   )r   r   r   r   r   )r0  r@   rb   rc   re   r   r   r   r   r  r  simplefilterr  r)   r   r   r   r   )rD  rl   r   rp   ry   ro   r   rJ  rN   r1  r0  s              rF   #test_ridge_fit_intercept_sparse_sagrO    sP   
 *1CcDAq ii##$67ckkqwwqzk::!E%tF /&/K?6?LOOAqO6		 	 	"g{3? 
# K**L,C,C$OK%%|'9'9E	k)B	CU$D4HLLUTUV 
D	C 
#	"
 
D	Cs   //E. E:.E7:Freturn_interceptr   r  	container)ru  r8   r9   r:   r;   r<   r  c                    t        d      }|j                  dd      }g d}t        j                  ||      }d}| rd}||z  } ||      }	d\  }
}t        rdnd	}|d
k(  }|dvr:| r8t        j                  t        d      5  t        |	||
||| ||       ddd       yt        |	||
|||| |      }| r$|\  }}t        ||d|       t        ||d|       yt        ||d|       y# 1 sw Y   yxY w)z=check if all combinations of arguments give valid estimationsr   r  r   )rV   rJ   r6  r   g     @)rX   ư>rX   rM  r  )r;   ru  zIn Ridge, only 'sag' solverr   )rz   r   r   rP  r,  r   N)rz   r   r   r,  rP  r   r   r@  r   )
r#   r  r@   r   r1   r   r   r   r   r)   )rP  r   rQ  r   ro   rp   
true_coefsry   true_intercept	X_testingrz   r   r   r,  outr   r   s                    rF   .test_ridge_regression_check_arguments_validityrY    s    R
 CqAJ
q*AN A!IJE34$D H_$)9]]:-JK+!1!	 L 	
	#)	C ijqt<	>EZad;; L 	s    C&&C/)r7   r8   r9   r:   r;   r<   r  c                    t         j                  j                  d      }d}| dk(  }d\  }}|j                  ||      }|j                  |      }|j	                  t         j
                        }|j	                  t         j
                        }	dt        j                  t         j
                        j                  z  }
t        || d|
|      }|j                  ||	       |j                  }t        || d|
|      }|j                  ||       |j                  }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  |      j                  |j                  k(  sJ |j                  |      j                  |j                  k(  sJ t        |j                  |j                  dd	
       y )Nr   r   r  r  rJ     )rz   r   r   r   r,  rM  gMb@?rT  )r@   rb   rc   r   rA  r5  finfo
resolutionr   r   r   rB  r   r)   )r   ro   rz   r,  rR   rS   X_64y_64X_32y_32r   ridge_32coef_32ridge_64coef_64s                  rF   test_dtype_matchrf  @  sx    ))


"CE H Iz99Y
+D99YD;;rzz"D;;rzz"D
bhhrzz"--
-CFScHH LLtnnG FScHH LLtnnG ==DJJ&&&==DJJ&&&D!''4::555D!''4::555HNNHNNDIrH   c                  D   t         j                  j                  d      } t        j                  ddg      }d\  }}}| j	                  ||      }| j	                  ||      }|j                  t         j                        }|j                  t         j                        }t        |d      }	|	j                  ||       |	j                  }
t        |d      }|j                  ||       |j                  }|
j                  |j                  k(  sJ |j                  |j                  k(  sJ |	j                  |      j                  |j                  k(  sJ |j                  |      j                  |j                  k(  sJ t        |	j                  |j                  d       y )	Nr   r   r   )r  r  rJ   r9   r   r   r  )r@   rb   rc   r   r   rA  r5  r   r   r   rB  r   r*   )ro   rz   rR   rS   n_targetr^  r_  r`  ra  rb  rc  rd  re  s                rF   test_dtype_match_choleskyri  e  sL    ))


"CHHc3Z E&-#Iz899Y
+D99Y)D;;rzz"D;;rzz"D 54HLLtnnG 54HLLtnnG ==DJJ&&&==DJJ&&&D!''4::555D!''4::555BrH   )r7   r9   r:   r8   r;   r<   r  c                    t         j                  j                  |      }d\  }}|j                  ||      }|j                  |      }t        j                  ||      d|j                  |      z  z   }d}| dk(  }	t               }
| dk(  rdnd}t         j                  t         j                  fD ]9  }t        |j                  |      |j                  |      || |d |	dd	d
d
      |
|<   ; |
t         j                     j                  t         j                  k(  sJ |
t         j                     j                  t         j                  k(  sJ t        |
t         j                     |
t         j                     |       y )Nr  r   r   r  r8   rX   r  r[  r   F)	rz   r   rU   r   r,  r   r   return_n_iterrP  r   )r@   rb   rc   r   r   r   r5  r8  r   rA  rB  r)   )r   r:  rU   rR   rS   rp   r   ry   rz   r,  resultsr   current_dtypes                rF   %test_ridge_regression_dtype_stabilityrn    sI   
 99((.L Iz9j1Aj)D
q$$!3!3I!>>>AE HfG [(4dD**bjj1!1HH]#HH]#%""
 2 2::$$

2222::$$

222GBJJ')<4HrH   c                      t        d      \  } }t        j                  |       } | d d dd d f   } |d d d   }t        d      j	                  | |       y )Nr   rU   rJ   r;   r  )r   r@   asfortranarrayr   r   )rp   ry   s     rF   test_ridge_sag_with_X_fortranrr    sS    +DAq
!A	#A#q&	A	#A#A	Aq!rH   zClassifier, paramsc                 n   t        dd      \  }}|j                  dd      }t        j                  ||gd      } | d	i |j	                  ||      }|j                  |      }|j                  |j                  k(  sJ t        |dddf   |dddf          t        d      j	                  ||       y)
zRCheck that multilabel classification is supported and give meaningful
    results.rV   r   )r  rU   rW   r   Nr;   r  r   )	r
   r   r@   r   r   r   r   r,   r   )
ClassifierrN   rp   ry   r   r  r  s          rF   test_ridgeclassifier_multilabelru    s     *AAFDAq			"aA
1vA&A

v

"
"1a
(C[[^F<<177"""vad|VAqD\2	Aq!rH   ru  r  )rX   r   r6  r   c                 R   t        j                  ddgddgddgddgg      }t        j                  dd	g      }|rd
}|j                  |      |z   }n|j                  |      }t        |d| |      }|j	                  ||       t        j
                  |j                  dk\        sJ y)z:Test that positive Ridge finds true positive coefficients.rV   rJ   r   rQ   r   r  r  r   rY   r   Trz   r,  r   r   r   N)r@   r   r   r   r   rd   r   )r   r   rz   rp   r   r   ry   r   s           rF   #test_ridge_positive_regression_testrx    s    
 	1a&1a&1a&1a&12A88QHD	EE$K)#EE$Kd6E 
IIaO66%++"###rH   c                    t         j                  j                  d      }|j                  dd      }|j	                  dd|j
                  d         }| rd}||z  |z   }n||z  }||j                  |j
                  d         d	z  z  }g }d
D ]<  }t        ||| d      }	|j                  |	j                  ||      j                         > t        |ddd y)zTest that Ridge w/wo positive converges to the same solution.

    Ridge with positive=True and positive=False must give the same
    when the ground truth coefs are all positive.
    r   ,  r  r6  r   rV   r_   r   r   )TFr   )rz   r,  r   r   rS  r?  N)r@   rb   rc   r   re   r   rf   r   r  r   r   r)   )
r   rz   ro   rp   r   r   ry   rl  r,  r   s
             rF   %test_ridge_ground_truth_positive_testr{    s     ))


#C		#sA;;sCaggaj;1D	Hy H	$t	++AG!(-U
 	uyyA,,-	 "
 W4a0rH   )r7   r9   r:   r8   r;   r<   c           	         d}t        j                  ddgddgg      }t        j                  ddg      }||z  }t        |d| d	      }t        j                  t
        d
      5  |j                  ||       ddd       t        j                  t
        d      5  t        |||d| d      \  }}ddd       y# 1 sw Y   BxY w# 1 sw Y   yxY w)z5Test input validation for positive argument in Ridge.r6  rV   rJ   r   rQ   rW   TFrw  zdoes not support positiver   Nzonly 'lbfgs' solver can be used)r,  r   rP  )r@   r   r   r   r   r   r   r   )r   rz   rp   r   ry   r   rw   s          rF   test_ridge_positive_error_testr}    s    
 E
1a&1a&!"A88QGD	DAV5QE	z)D	E		!Q 
F 
z)J	Kq%$v
1 
L	K 
F	E 
L	Ks   $B8C8CCc                 &   	
 t        ddd      \  	
d d}d	 
fd	}t               j                  	
      }t         d	
      j                  	
      } ||      } ||      }||k  sJ t        |      D ]  } |||      }||k  rJ  y)z?Check ridge loss consistency when positive argument is enabled.rz  r   rR   rS   rU   r6  r  Nc                 h   | j                   }|Ut        j                  j                  |      }| j                  |j                  d|| j                  j                        z   }n| j                  }dt        j                  |z  z
  |z
  dz        z  dz  t        j                  |dz        z  z   S )Nr   r_   r   rJ   )r   r@   rb   rc   r   re   r   r   )	r   rU   noise_scaler   ro   r   rp   rz   ry   s	         rF   
ridge_lossz,test_positive_ridge_loss.<locals>.ridge_loss  s    $$	#))''5C;;Q%++BSBS!TTD;;DRVVQT\I5!;<<sU{RVV!GN
 @
 
 	
rH   r   T)rz   r,  rp  )Nr   )r   r   r   r@  )rz   n_checksr  r   model_positivelossloss_positiverU   loss_perturbedrp   ry   s   `        @@rF   test_positive_ridge_lossr  
  s     SSrJDAqEH

 ""1a(E6::1a@N
 eD~.M=    h#NN... (rH   c                     t        ddd      \  }}t        j                  |d      }t        j                  | g      } dddd}t	        ||| fi |}t        |||       }t        ||d	d
       y)zETest that LBGFS gets almost the same coef of svd when positive=False.rz  r   r  rV   FgؗҜ<i  )r,  r   r   rM  r   r?  N)r   r@   expand_dimsr&  r   r   r)   )rz   rp   ry   config
coef_lbfgsr   s         rF   test_lbfgs_solver_consistencyr  0  sw     SSrJDAq
q!AJJwEF aE4V4Jq!U+MJDqArH   c                     t        j                  ddgddgg      } t        j                  ddg      }t        ddddd	d
      }t        j                  t
        d      5  |j                  | |       ddd       y# 1 sw Y   yxY w)z1Test that LBFGS solver raises ConvergenceWarning.rV   rW   g    _g    _Br   r  Fr   T)rz   r   r   r   r,  r   zlbfgs solver did not converger   N)r@   r   r   r   r   r   r   )rp   ry   r   s      rF   test_lbfgs_solver_errorr  A  sw    
1b'Aq6"#A
%AE 
(0O	P		!Q 
Q	P	Ps   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)zTest that the impact of sample_weight is consistent.

    Note that this test is stricter than the common test
    check_sample_weights_invariance alone.
    Nr7   )r9   r<   zunsupported configurationr   rP   r  rJ   r   r  r   )r   rz   r   r,  rU   r   r   rS  rV  r   r   r[   r  rz   r   r   zSolver z- does fail test for scaling of sample_weight.r   r   )r   r   r@   rb   rc   r  r   r   r   r   r(  r   	ones_liker)   re   r   r  pir   toarrayr   )r   r   r  r   rl   ro   rR   rS   rp   ry   rN   r  r   r   r   r  X2y2sample_weight_1sample_weight_2r  s                        rF   $test_ridge_sample_weight_consistencyr  R  s{    #U?v)==-KK34
 ))


#CIv~!^
]
J'AA#Q#G#'F /&/

a$

7C99>>DNN	LLOMGGAqG.CIIt$/	2
 KKDqqwwqzKBMM"#bcFdNFGGAqG.99>>DNN	GGAcrc1fIq"v]3B-?G@CIIt$/	2 ?6?%%BEEF7O,C%DDHHQ!6H7 wvh&STUDJJ403 #IIK	A.	Q/0q	9B	A.	Q/0	1B#((*O$i1n%*%nn	&6	Q78qO #Qb!?6?q!?CD?6?r2_EDDJJ

+9 rH   c                  f   t        dd      \  } }t        d      }d}t        j                  t        |      5  |j                  | |       ddd       t        dd	      }d
}t        j                  t        |      5  |j                  | |       ddd       y# 1 sw Y   OxY w# 1 sw Y   yxY w)z-Check `store_cv_values` parameter deprecated.r  r   r  T)store_cv_valuesz'store_cv_values' is deprecatedr   N)rd  r  z2Both 'store_cv_values' and 'store_cv_results' were)r   r   r   r   FutureWarningr   r   r   rp   ry   r   r  s       rF   %test_ridge_store_cv_values_deprecatedr    s    QR8DAqD)E
+C	m3	/		!Q 
0 T4@E
>C	z	-		!Q 
.	- 
0	/ 
.	-s   B?B'B$'B0c                      t        dd      \  } }t        d      }d}t        j                  t        |      5  |j                  | |       |j                   ddd       y# 1 sw Y   yxY w)	zCheck `cv_values_` deprecated.r  r   r  Tr  z$Attribute `cv_values_` is deprecatedr   N)r   r   r   r   r  r   
cv_values_r  s       rF   test_ridge_cv_values_deprecatedr    sQ    QR8DAqT*E
0C	m3	/		!Q 
0	/	/s   A""A+enable_slep006metaestimatorc                 .     |        j                          y)zTest that `RidgeCV` or `RidgeClassifierCV` with default `scoring`
    argument (`None`), don't enter into `RecursionError` when metadata is routed.
    N)get_metadata_routing)r  s    rF   *test_metadata_routing_with_default_scoringr    s     O((*rH   )r  r  r   rZ   rV   g      *@rK  rK  TFFN)r  	itertoolsr   numpyr@   r   scipyr   sklearnr   r   sklearn.baser   sklearn.datasetsr   r	   r
   r   sklearn.exceptionsr   sklearn.linear_modelr   r   r   r   r   r   sklearn.linear_model._ridger   r   r   r   r   r   r   sklearn.metricsr   r   r   sklearn.model_selectionr   r   r   r    r!   sklearn.preprocessingr"   sklearn.utilsr#   sklearn.utils._array_apir$   r%   r&   r'   r(   sklearn.utils._testingr)   r*   r+   r,   r-   sklearn.utils.estimator_checksr.   r/   r0   sklearn.utils.fixesr1   r2   r3   r4   r5   r6   SOLVERSr   r   load_diabetesdiabetesr  r   r   r   r   r   indrb   rc   ro   r%  	load_irisr  r  r  rG   rK   fixturer   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r   r0  rD  r&  r\  r_  rt  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  sortedr  r  r  r  r  r  r  r  r  r   r.  r3  r5  r   	TypeErrorr9  r;  r=  rC  rG  rK  rO  r   r   rY  rf  ri  r@  rn  rr  ru  rx  r{  r}  r  r  r  r  r  r  usefixturesr  r   rH   rF   <module>r     sH        ,   2    H G  / ,   
  B 4 #S  !8!!#! 
Jbii
  #$iiA C 	$3i#C*S/ 
JxDKK%+ '(C& )C&L 7+4-8)# 9 ,)#X 7+4-8#? 9 ,#?L 7+4-8%2 9 ,%2P 7+4-82+ 9 ,2+j 7+4-828 9 ,28j 7+4-82+ 9 ,2+j 7+4-8+dVn-DE3+./' / F 9 ,/'d+
4<>$0*@ "23.9
D : 4
D "NO*T5M:.9. : ; P.$ "NO*T5M:.93 : ; P3& 	
	*Z *1GF^#+

 (F 1.R /	
 RB eW%56~(EFWh$784-8$K 9 9 G 7$KNK< eW%56~(EF2w/#9G 0 G 79Gx +dVn-DE8? F?6r3$ 	%	(/:	E	24GH-- i!$5$79L#MN ay)0 *	
0DN3P,$ T:7I$JKeAh/0+dVn-DE" F 1 L" eAh/0+dVn-DE2 F 12  
F )+T+V %'AB   
 
%   
RR 'G',',T *F3I,JKF LF. "
 .9D :
D ?F 2C DE0 F08A .0LM: T:7I$JKC LC8 w0A&BC= D=( ay)w0A&BC D *(K0$!N /1a&1a&1AB^#n4~EVP	 C
P" w0A&BC
M	"J0ST*+1	
 }%@	
 &! D"& w0A&BC" D""5 # #$ #IJ-e}=.9#F : > K#FL #>?.9# : @# -e}=.9W : >W8 +eT];4*?@rxxj>&ABO4< C A <4<n NJJDC< N q*I +I@" 	"	T4L)	T1I&"" FG#454-8"89$ : 9 6$" 4-8"891 : 912 E

" "89"/ :"/J "89B :B " 5$-8+dVn-DE&&!127gY#67\: 8 3 F 9\:@ )*74E*FG+ H ++rH   