o
    tBhy                    @   s  d dl Zd dlmZ d dlmZ d dlmZ d dl	Z	d dl
Z
d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dlm#Z# d dlm$Z$ d dlm%Z% d dl!m&Z& d dl!m'Z' d dl!m(Z( d dl!m)Z) d dl!m*Z* d dl!m+Z+ d dl,m-Z- d dl,m.Z. d dl,m/Z/ d d l,m0Z0 d d!l1m2Z2 d d"l1m3Z3 d d#l1m4Z4 d d$l1m5Z5 d d%l1m6Z6 d d&l7m8Z8 d d'lm9Z9 d(Z:d)Z;d*Z<e= Z>e>j?e>j@ZAZBeCeAjDd  ZEejFGd ZHeHIeE eEdd+ ZEeAeE eBeE ZAZBeJ ZKeLeKj?ZMeKj@ZNd,d- ZOd.d/ ZPd0d1 ZQd2d3 ZRe	jSd4d5gd6d7d8 ZTe	jUVd9e:e	jUVd:d;d<gd=d> ZWe	jUVd9e:e	jUVd:d;d<gd?d@ ZXe	jUVd9e:e	jUVd:d;d<gdAdB ZYe	jUVd9e:e	jUVd:d;d<gdCdD ZZe	jUVd9e:e	jUVd:d;d<gdEdF Z[e	jUVd9e:e	jUVd:d;d<gdGdH Z\e	jUVd9e:e	jUVd:d;d<ge	jUVdId;d<ge	jUVdJdKdLgdMdN Z]dOdP Z^dQdR Z_dSdT Z`dUdV ZadWdX ZbdYdZ Zce	jUVd[dJd\iedd]fdJd^ieed_fd`d ieddafd`d^ieedbfdcddieddefdcd^ieedffgdgdh Zfe	jUVdig djdkdl Zge	jUVdmg dne	jUVdod;d<gdpdq Zhe	jUVdmg dne	jUVdod;d<gdrds Zi	t	t	u	v	w	x	y	y	;	<	<	d&dzd{Zje	jUkd|e	jUVd}d~d eg dd<d;gD e	jUVdg de	jUVdd;d<ge	jUVdeCddd Zle	jUkd|e	jUVdddge	jUVdejmejLge	jUVdddge	jUVd:d;d<ge	jUVdg ddd Zndd Zoe	jUVdddge	jUVdejmejLge	jUVdddge	jUVdg ddd Zpe	jUVdg ddd Zqe	jUVdd;d<ge	jUVdg ddd Zrdd Zsdd Ztdd Zue	jUVde#d<de.fe%d<de/fgdd Zve	jUVde# e.fe% e/fge	jUVdddgdd Zwdd Zxdd Zydd Zzdd Z{e	jUVdddeQge	jUVdde3dge	jUVdeOePgdd Z|e	jUVdde3dge	jUVdeOePgdd Z}ddÄ Z~ddń Ze	jUkd|e	jUVdeseueteyeze{e~fddȄ Zddʄ Ze	jUVde$e%fdd̈́ Zddτ Ze	jUVdddeRgdd҄ Ze	jUVdddeQgddԄ Ze	jUVde#e%gddׄ Zddل Zddۄ Zdd݄ Zdd߄ Ze	jUVde#e%ge	jUVd[ddieddfddieddfddieedfgdd Ze	jUVde#e%gdd Zdd Zdd Zedd Ze	jUVd9g de	jUVdd;d<gdd Ze	jUVd9g ddd Ze	jUVdd;d<gdd Ze	jUVdd<d;ge	jUVddedge	jUVdejejLge	jUVd9g ddd  Ze	jUVd9g ddd Zdd Ze	jUVd9g de	jUVdedwdd Zd	d
 Ze	jUVde$i fe%ddife%ddifgdd Ze	jUVd9ddge	jUVd:d;d<ge	jUVdJg ddd Ze	jUVd:d;d<ge	jUVdJg ddd Ze	jUVd9g ddd Ze	jUVdJg ddd Ze	jUVdJg ddd Zdd Ze	jUkd|e	jUVdd;d<ge	jUVd9g ddd  Ze	jUjVde#e%gd!d"gd#d$d% ZdS ('      N)linalg)product)	_IS_32BIT)assert_almost_equal)assert_allclose)assert_array_almost_equal)assert_array_equal)ignore_warnings)check_sample_weights_invariance)ConvergenceWarning)datasetsmean_squared_error)make_scorer)
get_scorer)LinearRegression)ridge_regression)Ridge)	_RidgeGCV)RidgeCV)RidgeClassifier)RidgeClassifierCV)_solve_cholesky)_solve_cholesky_kernel)
_solve_svd)_solve_lbfgs)_check_gcv_mode)_X_CenterStackOp)make_low_rank_matrix)make_regression)make_classification)make_multilabel_classification)GridSearchCV)KFold)
GroupKFold)cross_val_predict)LeaveOneOut)minmax_scale)check_random_state)svd	sparse_cgcholeskylsqrsagsaga)r*   r-   )r*   r+   r,   r-   r.      c                 C   s   | S N Xr1   r1   |/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_ridge.pyDENSE_FILTERF      r5   c                 C   s
   t | S r0   )sp
csr_matrixr2   r1   r1   r4   SPARSE_FILTERJ   s   
r9   c                 C   s   t | |kS r0   )npmeany_testy_predr1   r1   r4   _accuracy_callableN   s   r?   c                 C   s   | | d   S )N   )r;   r<   r1   r1   r4   _mean_squared_error_callableR   s   rA   longwide)paramsc                 C   s  |j dkr
d\}}nd\}}t||}tj| }t||||d}d|dddf< t|\}}}	t|dks:J |ddd|f |dd|df }
}|	d|ddf |	|dddf }}|j dkr|j	d	d
|d}|| }|||j
|| dd  7 }n|j	d	d
|d}|jtd|  |
j | }d}|t| }d|d< t|j| | |j| }|||  }|||  }tj|tj|k sJ ||||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 mininum ||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.
    rB   )      )rF   rE   )	n_samples
n_featureseffective_rankrandom_state   NMbP?
   lowhighsizerS   r@   r   )rL   rL   )paramminr:   randomRandomStater   r   r)   alluniformnormalTdiagidentitysolvenorm)global_random_seedrequestrG   rH   krngr3   UsVtU1U2Vt1_coef_olsyalphad
coef_ridgeR_OLSR_Ridger1   r1   r4   ols_ridge_datasetV   s6   


**
rs   solverfit_interceptTFc                 C   sn  |\}}}}d}t |d| | dv rdnd|d}	|t| }
|||  }dt|d t|
d   }tdi |	}|d	d	d	d
f }|rL|d
 }n||jdd }||  }d}||| |d	d
 }|jt|ksrJ t	|j
| |||t|ksJ tdi |	j||t|jd d}|jt|ksJ t	|j
| |||t|ksJ d	S )zTest that Ridge converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
          ?Tr-   r.   V瞯<绽|=rn   ru   rt   tolrJ   rK   r@   NrL   r   axissample_weightr1   )dictr:   r;   sumr   fit
intercept_pytestapproxr   coef_scoreonesshape)rt   ru   rs   ra   r3   rm   rk   coefrn   rD   res_null	res_RidgeR2_Ridgemodel	interceptr1   r1   r4   test_ridge_regression   s8   	 
&r   c                 C   s   |\}}}}|j \}}	d}
t|
d || | dv rdnd|d}|ddddf }d	tj||fd
d }tj|t||	d
 ksBJ |rI|d }n||jdd }||  }d}||| |dd }|j	t
|ksoJ t|jtj||f dd dS )a  Test that Ridge converges for all solvers to correct solution on hstacked data.

    We work with a simple constructed data set with known solution.
    Fit on [X] with alpha is the same as fit on [X, X]/2 with alpha/2.
    For long X, [X, X] is a singular matrix.
    rv   r@   rw   rx   ry   rz   NrL         ?rK   r|   r   :0yE>atol)r   r   r:   concatenater   matrix_rankrV   r;   r   r   r   r   r   r   r_rt   ru   rs   ra   r3   rm   rk   r   rG   rH   rn   r   r   r1   r1   r4    test_ridge_regression_hstacked_X   s,   

r   c                 C   s   |\}}}}|j \}}	d}
td|
 || | dv rdnd|d}|ddddf }tj||fd	d
}tj|t||	ks>J tj||f }|rL|d }n||jd	d
 }||  }d	}|	|| |dd }|j
t|ksrJ t|j|dd dS )aJ  Test that Ridge converges for all solvers to correct solution on vstacked data.

    We work with a simple constructed data set with known solution.
    Fit on [X] with alpha is the same as fit on [X], [y]
                                                [X], [y] with 2 * alpha.
    For wide X, [X', X'] is a singular matrix.
    rv   r@   rw   rx   ry   rz   NrL   r   r|   r   r   )r   r   r:   r   r   r   rV   r   r;   r   r   r   r   r   r   r   r1   r1   r4    test_ridge_regression_vstacked_X   s.   

r   c                 C   s:  |\}}}}|j \}}	d}
t|
|| | dv rdnd|d}td
i |}|r:|ddddf }|d }|dd }nd}||| ||	ksH|sZ|jt|ksRJ t|j| dS t|	|| t|| | | t
jt
j|j|jf t
jt
j||f ksJ tjdd	 |jt|ksJ t|j| dS )a  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
    Note: This checks the minimum norm solution for wide X, i.e.
    n_samples < n_features:
        min ||w||_2 subject to X w = y
    r   rw   rx   ry   rz   NrL   1Ridge does not provide the minimum norm solution.reasonr1   )r   r   r   r   r   r   r   r   r   predictr:   r   r`   r   xfail)rt   ru   rs   ra   r3   rm   r   rk   rG   rH   rn   rD   r   r   r1   r1   r4   !test_ridge_regression_unpenalized  s8   

r   c                 C   sp  |\}}}}|j \}}	d}
t|
|| | dv rdnd|d}|r3|ddddf }|d }|dd }nd}dtj||fd	d
 }tj|t||	ksMJ ||| ||	ksY|sx|jt	
|kscJ | dkrkt	  t|jtj||f  dS t||| tjtj|j|jf tjtj|||f ksJ t	jdd |jt	
|ksJ t|jtj||f  dS )a^  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
    OLS fit on [X] is the same as fit on [X, X]/2.
    For long X, [X, X] is a singular matrix and we check against the minimum norm
    solution:
        min ||w||_2 subject to min ||X w - y||_2
    r   rw   rx   ry   rz   NrL   r   rK   r|   r+   r   r   )r   r   r:   r   r   r   rV   r   r   r   r   skipr   r   r   r   r`   r   rt   ru   rs   ra   r3   rm   r   rk   rG   rH   rn   r   r   r1   r1   r4   ,test_ridge_regression_unpenalized_hstacked_XR  s<   

r   c                 C   sT  |\}}}}|j \}}	d}
t|
|| | dv rdnd|d}|r3|ddddf }|d }|dd }nd}tj||fdd}tj|t||	ksKJ tj||f }||| ||	ks^|sp|j	t
|kshJ t|j| dS t||| tjtj|j	|jf tjtj||f ksJ t
jd	d
 |j	t
|ksJ t|j| dS )a  Test that unpenalized Ridge = OLS converges for all solvers to correct solution.

    We work with a simple constructed data set with known solution.
    OLS fit on [X] is the same as fit on [X], [y]
                                         [X], [y].
    For wide X, [X', X'] is a singular matrix and we check against the minimum norm
    solution:
        min ||w||_2 subject to X w = y
    r   rw   rx   ry   rz   NrL   r|   r   r   )r   r   r:   r   r   r   rV   r   r   r   r   r   r   r   r   r`   r   r   r1   r1   r4   ,test_ridge_regression_unpenalized_vstacked_X  s:   

r   sparseXrn   rv   {Gz?c                 C   s:  |r|r| t vrt  n
|s| tvrt  |\}}}}	|j\}
}tjdd|
d}t||| | dv r4dndd|d}|d	d	d	d
f }tj	||fdd}tj
||f }tj
|d| f | }|rf|	d
 }n||jdd }||  }d}|r}t|}|j|||d |	d	d
 }	|jt|ksJ t|j|	 d	S )zTest that Ridge with sample weights gives correct results.

    We use the following trick:
        ||y - Xw||_2 = (z - Aw)' W (z - Aw)
    for z=[y, y], A' = [X', X'] (vstacked), and W[:n/2] + W[n/2:] = 1, W=diag(W)
    r   rK   rP   rw   rx   ry   順 )rn   ru   rt   r{   max_iterrJ   NrL   r|   r~   )SPARSE_SOLVERS_WITH_INTERCEPTr   r    SPARSE_SOLVERS_WITHOUT_INTERCEPTr   rd   rZ   r   r:   r   r   r;   r7   r8   r   r   r   r   r   )rt   ru   r   rn   rs   ra   r3   rm   rk   r   rG   rH   swr   r   r1   r1   r4   $test_ridge_regression_sample_weights  s>   



r   c                  C   sX   t dd} tt| dgd}tttj}t|| dgd}ttj|j}t|| d S )NrL   rK   r   rn   )	
y_diabetesreshaper   
X_diabetesr:   dotr\   r   r   )rm   r   K	dual_coefcoef2r1   r1   r4   test_primal_dual_relationship  s   r   c               
   C   sp   t jd} | d}| dd}d}tjt|d t||dddd d	d
 W d    d S 1 s1w   Y  d S )Nr      rO   z3sparse_cg did not converge after [0-9]+ iterations.matchrv   r*           rK   )rn   rt   r{   r   verbose)r:   rW   rX   randnr   warnsr   r   )rd   rm   r3   warning_messager1   r1   r4   &test_ridge_regression_convergence_fail  s   
"r   c                  C   sP  t jd} d\}}| ||}| |}|d d t jf }t j|d| f }t }||| |jj	|fks9J |j
j	dksAJ t|jt jsJJ t|j
tsRJ ||| |jj	d|fksbJ |j
j	dksjJ t|jt jssJ t|j
t js|J ||| |jj	d|fksJ |j
j	dksJ t|jt jsJ t|j
t jsJ d S )Nr   r   rO   rK   r1   rK   r@   )r@   )r:   rW   rX   r   newaxisc_r   r   r   r   r   
isinstancendarrayfloat)rd   rG   rH   r3   rm   Y1Yridger1   r1   r4   test_ridge_shapes_type  s,   
r   c                  C   s   t jd} d\}}| ||}| |}t j|d| f }t }||| |j}||| t|jd | t|jd |d  d S )Nr   r   rv   rK   )	r:   rW   rX   r   r   r   r   r   r   )rd   rG   rH   r3   rm   r   r   r   r1   r1   r4   test_ridge_intercept#  s   
r   c                  C   s   t jd} d\}}| |}| ||}tddd}tdd}||| ||| t|j|j ||| ||| t|j|j d S )Nr   )r   rF   r   Frn   ru   ru   )	r:   rW   rX   r   r   r   r   r   r   )rd   rG   rH   rm   r3   r   olsr1   r1   r4   test_ridge_vs_lstsq5  s   

r   c                     s   t jd} d\}}}| || | ||t |t  fddtjD } fdddD }|D ]}t|| q9t	d d d}t
t |  W d    d S 1 saw   Y  d S )	N*      rO   r   c                    s&   g | ]\}}t |d d |jqS )r+   rn   rt   r   r   r   ).0rn   targetr2   r1   r4   
<listcomp>V  s    z3test_ridge_individual_penalties.<locals>.<listcomp>c                    s$   g | ]}t |d d jqS )-q=)rn   rt   r{   r   )r   rt   r3   	penaltiesrm   r1   r4   r   \  s    )r)   r*   r,   r+   r-   r.   rL   r   )r:   rW   rX   r   arangearrayzipr\   r   r   r   raises
ValueErrorr   )rd   rG   rH   	n_targetscoef_choleskycoefs_indiv_pencoef_indiv_penr   r1   r   r4   test_ridge_individual_penaltiesJ  s&   



"r   zparams, err_type, err_msgrL   zalpha == -1, must be >= 0.01z+alpha must be an instance of float, not strr   zmax_iter == 0, must be >= 1.z,max_iter must be an instance of int, not strr{         ztol == -1.0, must be >= 0.z)tol must be an instance of float, not strc           	      C   sx   t jd}d\}}}|||}|||}tj||d tdi | || W d   dS 1 s5w   Y  dS )z)Check the parameters validation in Ridge.r   r   r   Nr1   )r:   rW   rX   r   r   r   r   r   )	rD   err_typeerr_msgrd   rG   rH   r   r3   rm   r1   r1   r4   test_ridge_params_validationi  s   
"r   n_col)r1   r   )   c           	      C   s   t jd}|dd}|d}|t|}|jdg| R  }|jdg| R  }tt|||}t ||d d d f |  |d d d f g}t	|
||
| t	|j
||j
| d S )Nr         	   )r:   rW   rX   r   lenr   r7   r8   hstackr   r   r\   )	r   rd   r3   X_msqrt_swr   Aoperatorreference_operatorr1   r1   r4   test_X_CenterStackOp  s   
.r   r   ))rO   rK   )   r   )r      )r@   r@   )r   r   uniform_weightsc                 C   s   t jd}|j|  }|rt |jd }n|d| d }t |}t j|d|d}|| |d d d f  }|	|j
}t||d d d f  }	tdd}
|
|	|\}}t|| t|| d S Nr   rK   )r}   weightsTr   )r:   rW   rX   r   r   r   	chisquaresqrtaverager   r\   r7   r8   r   _compute_gramr   )r   r   rd   r3   r   r   X_mean
X_centered	true_gramX_sparsegcvcomputed_gramcomputed_meanr1   r1   r4   test_compute_gram     



r  c                 C   s   t jd}|j|  }|rt |jd }n|d| d }t |}t j|d|d}|| |d d d f  }|j	
|}t||d d d f  }	tdd}
|
|	|\}}t|| t|| d S r   )r:   rW   rX   r   r   r   r   r   r   r\   r   r7   r8   r   _compute_covariancer   )r   r   rd   r3   r   r   r   r   true_covariancer  r  computed_covr  r1   r1   r4   test_compute_covariance  r  r  d   r   rO   rK         *@      >@c                 C   s   t | ||||||d|d	\}}}|dkrt|g}||7 }tj|d||jdk}| }d|| < d||< |||8 }|
rW||t	|d | 7 }t	|d }|dkr_|d }|	rf|||fS ||fS )NT)	rG   rH   n_informativer   biasnoiseshuffler   rJ   rK   r   r   )
r   r:   asarrayrW   rX   binomialr   copyr   abs)rG   rH   proportion_nonzeror  r   r  X_offsetr  r  r   positiverJ   r3   rm   cmask	removed_Xr1   r1   r4   _make_sparse_offset_regression  s8   

r  z!ignore:'normalize' was deprecatedzsolver, sparse_Xc                 c   s(    | ]\}}|r|d vs||fV  qdS ))r*   ridgecvNr1   )r   rt   sparse_Xr1   r1   r4   	<genexpr>  s    r   )r+   r-   r*   r,   r.   r  z"n_samples,dtype,proportion_nonzero))r   float32皙?)(   r!  rv   )r   float64皙?	normalizeseedr   c                 C   s   d}|dkrdnd}t dd||||d\}	}
|st|	}	td||d	|	|
}|	j|d
d}	|
j|d
d}
|r<t|	}	| dkrHt|g|d}nt| d||d}||	|
 t|j	|j	ddd t|j
|j
ddd d S )Nrv   g?g      I@g     @@rO      )r  rH   r  r  rJ   rG   r)   )rt   r&  rn   F)r  r  )alphasr&  ry   )rt   r{   r&  rn   rM   r   rtol)r  r'   r   r   astyper7   r8   r   r   r   r   )rt   r  rG   dtyper  r'  r&  rn   r  r3   rm   	svd_ridger   r1   r1   r4   test_solver_consistency  s.   

r/  gcv_moder)   eigenX_constructorX_shape)r   r   )r   r   zy_shape, normalize, noise))r   Trv   )r   rK   Fr  )r   r   F     b@c              	   C   s   |\}}t |dkr|d nd}	t|||	dd|dd\}
}||}g d}t|||d	|d
}t| |||d}||
| ||
}||| |jt|jksRJ t|j	|j	dd t|j
|j
dd d S )Nr@   rL   rK   r   Fr   rG   rH   r   rJ   r  r  r  rM   r"  rv         $@g     @@neg_mean_squared_error)cvru   r)  scoringr&  )r0  ru   r)  r&  rM   r+  )r   r  r   r   r   alpha_r   r   r   r   r   )r0  r2  r3  y_shaperu   r&  r  rG   rH   r   r3   rm   r)  	loo_ridge	gcv_ridgeX_gcvr1   r1   r4   test_ridge_gcv_vs_ridge_loo_cv#  s@   

	rD  c            	   	   C   s   d} d\}}d}t |||ddddd\}}g d}t|d	|| d
}td	|| d}||| ||| |jt|jks?J t|j|jdd t|j|jdd d S )Nexplained_variance)rO   r   rK   r   Fr   r8  r9  T)r<  ru   r)  r=  )ru   r)  r=  rM   r>  )	r  r   r   r?  r   r   r   r   r   )	r=  rG   rH   r   r3   rm   r)  rA  rB  r1   r1   r4   test_ridge_loo_cv_asym_scoringY  s,   

rF  rH   r   r   zy_shape, fit_intercept, noise)r4  )r5  Tg      4@)r6  Tr7  )r6  Fr  c                    s  g d}t jd}t|dkr|d nd}td||dd|d\}	}
|
|}
d	|t|	 }||  d t	}t 
t |	jd | |t}|	  |
  }}t|	jd d
}|j|| d}t||d|d}||| t|j|d}|j|| d}t||||d}|| d  fddt |	jd D t ||	}t|d| |d}|j||
|d t|dkr|jd d d d ||jf }n|jd d ||jf }|jt|jksJ t|dd t|j|jdd t|j|jdd d S )Nr9  r   r@   rL   rK   r   F)rG   rH   r   rJ   r  r  r   )n_splits)groupsr;  )r)  r<  r=  ru   r   r<  c                    s"   g | ]}t j |k d dqS )r   r|   )r:   r   )r   iindiceskfold_errorsr1   r4   r     s    z1test_ridge_gcv_sample_weights.<locals>.<listcomp>T)r)  store_cv_valuesr0  ru   r~   rM   r>  )r:   rW   rX   r   r  r   r   rV   r,  intrepeatr   r   r   r$   splitr   r   r   r?  r%   r  
cv_values_indexr   r   r   r   r   )r0  r2  ru   rH   r@  r  r)  rd   r   r3   rm   r   X_tiledy_tiledr<  splitskfold	ridge_regpredictionsrC  rB  
gcv_errorsr1   rK  r4   test_ridge_gcv_sample_weightsw  sb   



"r[  mode)TrK   r   badr  c                 C   s   t ddd\}}t| d}tjtdd ||| W d    n1 s%w   Y  tjtdd t||  W d    d S 1 sBw   Y  d S )Nr   r@   rG   rH   )r0  zUnknown value for 'gcv_mode'r   )r   r   r   r   r   r   r   )r\  r3   rm   r  r1   r1   r4   test_check_gcv_mode_error  s   
"r_  sparsez2mode, mode_n_greater_than_p, mode_p_greater_than_n))Nr)   r1  )autor)   r1  )r1  r1  r1  )r)   r)   r)   c                 C   sH   t ddd\}}| rt|}t|||ksJ t|j||ks"J d S )Nr   r@   r^  )r   r7   r8   r   r\   )r`  r\  mode_n_greater_than_pmode_p_greater_than_nr3   rk   r1   r1   r4   test_check_gcv_mode_choice  s
   
rd  c                 C   s  t jd }g }| tk}t|d}|| t t |j}|| t}t	t
dd}td|d}||j| t t |jt|ksBJ dd }	t	|	}td|d}
||
j| t t |
jt|ksdJ td}td|d}|| t t |jt|ksJ | tkr|j| t tt|d	 |jt|ksJ tttfj}|| t | || t }|| t t || t }tt||fj|d
d |S )Nr   r   F)greater_is_better)ru   r=  c                 S   s   t | | S r0   r   )xrm   r1   r1   r4   func  s   z_test_ridge_loo.<locals>.funcr;  r~   h㈵>r>  )r   r   r5   r   r   r   r?  appendr	   r   r   r   r   r   r   r:   r   vstackr\   r   r   )filter_rG   retru   	ridge_gcvr?  fr=  
ridge_gcv2rg  
ridge_gcv3scorer
ridge_gcv4r   Y_predr>   r1   r1   r4   _test_ridge_loo  s>   


rt  c                 C   sf   t ddd}|| dt t ttddddd|jid}|| dt t |jj|j	ks1J d S )	NTr   )r&  r<  r:  r*   )r&  rt   rn   )r<  
param_grid)
r   r   r   r   r"   r   r)  best_estimator_rn   r?  )rk  ridge_cvgsr1   r1   r4   _test_ridge_cv_normalize  s   
ry  c                 C   s   t  }|| tt || t t|jjdksJ t|j	t
jks&J td}|j|d || tt || t t|jjdksIJ t|j	t
jksSJ d S )NrK   r   rI  )r   r   r   r   r   r   r   r   typer   r:   r$  r#   
set_params)rk  rw  r<  r1   r1   r4   _test_ridge_cv!  s   r|  zridge, make_dataset)rN  c                 C   s.   |ddd\}}|  || t| drJ d S )N   r   rG   rJ   rR  )r   hasattr)r   make_datasetr3   rm   r1   r1   r4   #test_ridge_gcv_cv_values_not_stored2  s   	r  r<  c                 C   sL   |ddd\}}| j d|d | || t| dsJ t| jts$J d S )Nr}  r   r~  F)rN  r<  best_score_)r{  r   r  r   r  r   )r   r  r<  r3   rm   r1   r1   r4   test_ridge_best_score@  s
   r  c               	      s  t jd} d\}}}| ||}t |d d dgf t d|ft |d d dgf dt d|f  t |d d dgf dt d|f  | ||  d fd	d
|jD }tdd |}t	||j
 tt|j
d |j|j tddd |}|j
j|fksJ |jj|fksJ |jj|t|fksJ tdddd |}|j
j|fksJ |jj|fksJ |jj||dfksJ tddd |d d df }t |j
sJ t |jsJ |jj|tfksJ tddd |}t	||j
 tt|j
d |j|j tt dd}d}tjt|d | | W d    n	1 s?w   Y  tddd}tjt|d | | W d    d S 1 sew   Y  d S )Nr   )r   r   r   r   rK   g?r@   rM   )rK   r    c                    s    g | ]}t d  |jqS )r)  )r   r   r?  )r   r   r3   r)  r1   r4   r   a  s     z6test_ridge_cv_individual_penalties.<locals>.<listcomp>T)r)  alpha_per_targetr   )r)  r  rN  r2)r)  r  r=  )r)  r<  r  z3cv!=None and alpha_per_target=True are incompatibler   r}  )r:   rW   rX   r   r   r   r\   r   r   r   r?  r   r   r   r   r  rR  r   isscalarr&   r   r   r   )rd   rG   rH   r   rm   optimal_alphasrw  msgr1   r  r4   "test_ridge_cv_individual_penaltiesN  s`   
"&&
$r  c                 C   s2   t dd}|| tt t|| ttdS )NFr   r   )r   r   r   r   r:   roundr   )rk  r   r1   r1   r4   _test_ridge_diabetes  s   
r  c                 C   s   t ttfj}tjd }tdd}|| t| |jjd|fks$J |	| t}|| tt |	| t}t
t ||fj|dd d S )NrK   Fr   r@   r   decimal)r:   rj  r   r\   r   r   r   r   r   r   r   )rk  r   rH   r   rs  r>   r1   r1   r4   _test_multi_ridge_diabetes  s   

r  c                 C   s   t tjd }tjd }t t fD ]&}|| tt |jj||fks'J |	| t}t 
t|kdks9J qtd}t|d}|| tt |	| t}t 
t|kdks]J d S )Nr   rK   gHzG?r   rI  g?)r:   uniquey_irisr   X_irisr   r   r   r   r   r;   r#   )rk  	n_classesrH   regr>   r<  r1   r1   r4   _test_ridge_classifiers  s   

r  r=  accuracyr   rk  c                 C   s>   t |rt|n|}t||d}|| tt| t d S )N)r=  r<  )callabler   r   r   r  r  r   )rk  r=  r<  scoring_clfr1   r1   r4   "test_ridge_classifier_with_scoring  s   r  c                 C   sj   dd }t jdddd}t|t||d}|| tt |jt	dks'J |j
t	|d	 ks3J d S )
Nc                 S   s   dS )NzG?r1   r<   r1   r1   r4   _dummy_score  r6   z:test_ridge_regression_custom_scoring.<locals>._dummy_scorer@   r   )num)r)  r=  r<  r  r   )r:   logspacer   r   r   r  r  r  r   r   r?  )rk  r<  r  r)  r  r1   r1   r4   $test_ridge_regression_custom_scoring  s   r  c                 C   sh   t ddd}|| tt || tt}t ddd}|| tt || tt}||ks2J d S )Nrh  F)r{   ru   rM   )r   r   r   r   r   )rk  r   r   ridge2score2r1   r1   r4   _test_tolerance  s   r  c                 C   s:   | t }| t}|d ur|d urt||dd d S d S d S )Nr   r  )r5   r9   r   )	test_func	ret_dense
ret_sparser1   r1   r4   check_dense_sparse  s
   r  r  c                 C   s   t |  d S r0   )r  )r  r1   r1   r4   test_dense_sparse  s   r  c                  C   sX  t ddgddgddgddgddgg} g d}td d}|| | t|ddggt d	g td	d
id}|| | t|ddggt dg tdd}|| | t|ddggt d	g t ddgddgddgddgg} g d}td d}|| | tdd}|| | t|jdksJ t|j	|j	 t|j
|j
 d S )Nr   r   皙rv   r   rK   rK   rK   rL   rL   class_weightr%  rK   rM   rL   balanced)rK   rK   rL   rL   r@   )r:   r   r   r   r   r   r   classes_r   r   r   )r3   rm   r  regar1   r1   r4   test_class_weights  s(   (

"

r  r  c                 C   s   |  }| tjtj | dd}| tjtj t|j|j ttjj}|tjdk  d9  < dddd}|  }| tjtj| | |d}| tjtj t|j|j |  }| tjtj|d  | |d}| tjtj| t|j|j d	S )
z5Check class_weights resemble sample_weights behavior.r  r  rK   r  rv   g      Y@)r   rK   r@   r@   N)	r   irisdatar   r   r   r:   r   r   )r  reg1reg2r   r  r1   r1   r4   "test_class_weight_vs_sample_weight"  s$   


r  c                  C   s   t ddgddgddgddgddgg} g d}td g dd}|| | td	d
ig dd}|| | t|ddggt dg d S )Nr   r   r  rv   r   r  )r   r"  rK   )r  r)  rK   rM   )r   r"  rK   rO   gɿr@   rL   )r:   r   r   r   r   r   )r3   rm   r  r1   r1   r4   test_class_weights_cv?  s   ("r  r;  c                 C   s   t jd}d}d}|||}g d}t|}t| r t| n| }t|d d|d}||}	|||	 |j	j
||fks?J d}
|||
}	|||	 |j	j
||
|fksXJ tdd| d}tjtd	d
 |||	 W d    d S 1 sxw   Y  d S )Nr   r   r   r"  rv   r:  Tr)  r<  rN  r=  r   )r<  rN  r=  zcv!=None and store_cv_valuesr   )r:   rW   rX   r   r   r  r   r   r   rR  r   r   r   r   )r=  rd   rG   rH   rf  r)  n_alphasr  rrm   r   r1   r1   r4   test_ridgecv_store_cv_valuesN  s&   
"r  c           	      C   s   t ddgddgddgddgddgg}t g d}|jd }g d}t|}t| r0t| n| }t|d d|d	}d
}||| |jj|||fksMJ t g dg dg dg	 }|jd
 }||| |jj|||fkssJ d S )Nr   r   r  rv   r   r  r  Tr  rK   )rK   rL   rK   rL   rK   )rL   rL   rK   rL   rL   )
r:   r   r   r   r  r   r   r   rR  	transpose)	r=  rf  rm   rG   r)  r  r  r  r   r1   r1   r4   (test_ridge_classifier_cv_store_cv_valuesn  s(   (

r  	Estimatorc                 C   s   t jd}d}d\}}| tu r||}n|dd|}|||}| |d}|j|u s6J d| j d||| t	|jt 
| d S )Nr   r  r   r   r@   r  z`alphas` was mutated in `z
.__init__`)r:   rW   rX   r   r   randintr)  __name__r   r   r  )r  rd   r)  rG   rH   rm   r3   	ridge_estr1   r1   r4   test_ridgecv_alphas_conversion  s   
r  c                  C   s   t jd} d}dD ]M\}}| |}| ||}d| | }td}t||d}|j|||d d|i}	tt	 |	|d	}
|
j|||d |j
|
jjksOJ t|j|
jj q
d S )
Nr   r  )r}  r   r   rv   r   )r)  r<  r~   rn   rI  )r:   rW   rX   r   randr#   r   r   r"   r   r?  rv  rn   r   r   )rd   r)  rG   rH   rm   r3   r   r<  r  
parametersrx  r1   r1   r4   test_ridgecv_sample_weight  s   
r  c               	      sP  ddg} ddg}t jd}t| |D ]\}}||| ||||d d }d}d}|d d t jf |t jd d f tdd |  |  |  fdd	} fd
d}	d}
tj	t
|
d |  W d    n1 sw   Y  d}
tj	t
|
d |	  W d    n1 sw   Y  qd S )Nr@   r   r   rK   rv   g       @r   c                            d S r0   r   r1   )r3   r   sample_weights_not_OKrm   r1   r4   fit_ridge_not_ok     zStest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_okc                      r  r0   r  r1   )r3   r   sample_weights_not_OK_2rm   r1   r4   fit_ridge_not_ok_2  r  zUtest_raises_value_error_if_sample_weights_greater_than_1d.<locals>.fit_ridge_not_ok_2z)Sample weights must be 1D array or scalarr   )r:   rW   rX   r   r   r   r   r   r   r   r   )
n_samplessn_featuressrd   rG   rH   sample_weights_OKsample_weights_OK_1sample_weights_OK_2r  r  r   r1   )r3   r   r  r  rm   r4   9test_raises_value_error_if_sample_weights_greater_than_1d  s6   

r  c                  C   s   ddg} ddg}t jd}tjtjtjtjtjg}t	ddd}t	ddd}t
| |D ]:\}}|||}||}	||d d }
|D ]}||}|j||	|
d |j||	|
d t|j|jd	d
 qEq+d S )Nr@   r   r   rv   Fr   rK   r~   r}  r  )r:   rW   rX   r7   
coo_matrixr8   
csc_matrix
lil_matrix
dok_matrixr   r   r   r   r   r   )r  r  rd   sparse_matrix_converterssparse_ridgedense_ridgerG   rH   r3   rm   sample_weightssparse_converterr  r1   r1   r4   &test_sparse_design_with_sample_weights  s,   
r  c                  C   sJ   t ddgddgddgddgddgg} g d}tdd}|| | d S )	Nr   r   r  rv   r   r  )rK   rO   r  r  )r:   r   r   r   )r3   rm   r   r1   r1   r4   test_ridgecv_int_alphas  s   (
r  r)  )rK   rL   iz alphas\[1\] == -1, must be > 0.0)gr   g      $z"alphas\[0\] == -0.1, must be > 0.0)rK   rv   r   z1alphas\[2\] must be an instance of float, not strc                 C   sl   d\}}t ||}t dd|}tj||d | di ||| W d   dS 1 s/w   Y  dS )z?Check the `alphas` validation in RidgeCV and RidgeClassifierCV.r  r   r@   r   Nr1   )rd   r   r  r   r   r   )r  rD   r   r   rG   rH   r3   rm   r1   r1   r4   test_ridgecv_alphas_validation  s   "r  c                 C   sL   d\}}t ||}| tu rt |}nt dd|}| dd|| dS )zCheck the case when `alphas` is a scalar.
    This case was supported in the past when `alphas` where converted
    into array in `__init__`.
    We add this test to ensure backward compatibility.
    r  r   r@   rK   r  N)rd   r   r   r  r   )r  rG   rH   r3   rm   r1   r1   r4   test_ridgecv_alphas_scalar#  s   r  c                      s&   dt  d  fddd S )Nz5This is not a solver (MagritteSolveCV QuantumBitcoin)zQKnown solvers are 'sparse_cg', 'cholesky', 'svd' 'lsqr', 'sag' or 'saga'. Got %s.c                     s^   t d} t d}t| |dd tj d   W d    d S 1 s(w   Y  d S )Nr   rv   r   r   )r:   eyer   r   r   r   r3   rm   	exceptionrg  messagewrong_solverr1   r4   rg  A  s   

"z=test_raises_value_error_if_solver_not_supported.<locals>.func)r   r1   r1   r  r4   /test_raises_value_error_if_solver_not_supported5  s   r  c                  C   s6   t ddd} | tt | jjd tjd ksJ d S )Nr*   rK   )rt   r   r   )r   r   r   r   r   r   )r  r1   r1   r4   test_sparse_cg_max_iterJ  s   r  c                  C   s   d} t t}}t|| dfj}tddD ]}dD ]}t||dd}||| t|j	t||  qqdD ]}t|ddd}||| |j	d u sLJ q6d S )	Nr@   rK   rF   )r-   r.   r,   r   )rt   r   r{   )r*   r)   r+   r"  )
r   r   r:   tiler\   ranger   r   r   n_iter_)r   r3   rm   y_nr   rt   r  r1   r1   r4   test_n_iterP  s   
r  )r,   r*   lbfgsra  with_sample_weightc                 C   s   | dk}t d||d\}}d}|r"tj|}d|j|jd d }| dkr(d	n| }t|d
|d}	t| d
|d}
|	j|||d |
jt	|||d t
|	j|
j t
|	j|
jdd dS )a  Check that ridge finds the same coefs and intercept on dense and sparse input
    in the presence of sample weights.

    For now only sparse_cg and lbfgs can correctly fit an intercept
    with sparse X with default tol and max_iter.
    'sag' is tested separately in test_ridge_fit_intercept_sparse_sag because it
    requires more iterations and should raise a warning if default max_iter is used.
    Other solvers raise an exception, as checked in
    test_ridge_fit_intercept_sparse_error
    r  r   )rH   rJ   r  Nrv   r   rT   ra  r*   r   )rt   r{   r  r~   gƠ>r>  )r  r:   rW   rX   rZ   r   r   r   r7   r8   r   r   r   )rt   r  ra   r  r3   rm   r   rd   dense_solverr  r  r1   r1   r4   test_ridge_fit_intercept_sparsec  s   
r  )r.   r)   r+   c                 C   sn   t ddd\}}t|}t| d}d| }tjt|d ||| W d    d S 1 s0w   Y  d S )Nr   r   )rH   rJ   rt   zsolver='{}' does not supportr   )	r  r7   r8   r   formatr   r   r   r   )rt   r3   rm   X_csrr  r   r1   r1   r4   %test_ridge_fit_intercept_sparse_error  s   


"r  c           
      C   s6  t dd|dd\}}| rtj|}d|j|jd d }nd }t|}tddd	d
dd}t	di |}t	di |}	|j
|||d t  tdt |	j
|||d W d    n1 saw   Y  t|j|	jdd t|j|	jdd tjtdd t	dd
|| W d    d S 1 sw   Y  d S )Nr   r   g      @)rH   rG   rJ   r  rv   r   rT   r-   Try   r   )rn   rt   ru   r{   r   r~   error-C6?r>  z"sag" solver requires.*r   r  r1   )r  r:   rW   rX   rZ   r   r7   r8   r   r   r   warningscatch_warningssimplefilterUserWarningr   r   r   r   r   )
r  ra   r3   rm   rd   r   r  rD   r  r  r1   r1   r4   #test_ridge_fit_intercept_sparse_sag  s.   



"r  return_interceptr   r  arr_type)ra  r*   r+   r,   r-   r.   r  c                 C   s  t d}|dd}g d}t||}d}| rd}||7 }||}	d\}
}tr*dnd	}|d
k}|dvr\| r\tjtdd t|	||
||| ||d W d   dS 1 sUw   Y  dS t|	||
|||| |d}| r|\}}t	||d|d t	||d|d dS t	||d|d dS )z=check if all combinations of arguments give valid estimationsr   r  r   )rK   r@   r"  r   g     @)rM   ư>rM   r  r  )r-   ra  zIn Ridge, only 'sag' solverr   )rn   rt   r   r   r  r{   N)rn   rt   r   r  r   r{   r   r+  r   )
r(   r  r:   r   r   r   r   r   r   r   )r   r   r  rt   rd   r3   
true_coefsrm   true_intercept	X_testingrn   r{   r   r  outr   r   r1   r1   r4   .test_ridge_regression_check_arguments_validity  sV   
r  )r)   r*   r+   r,   r-   r.   r  c                 C   s  t jd}d}| dk}d\}}|||}||}|t j}|t j}	dt t jj }
t|| d|
|d}|	||	 |j
}t|| d|
|d}|	|| |j
}|j|jks\J |j|jksdJ ||j|jksoJ ||j|jkszJ t|j
|j
dd	d
 d S )Nr   rv   r  r  r@     )rn   rt   r   r{   r  r  gMb@?r  )r:   rW   rX   r   r,  r!  finfo
resolutionr   r   r   r-  r   r   )rt   rd   rn   r  rG   rH   X_64y_64X_32y_32r{   ridge_32coef_32ridge_64coef_64r1   r1   r4   test_dtype_match  s0   


r  c                  C   s   t jd} d}d\}}}| ||}| ||}|t j}|t j}t|dd}	|	|| |	j}
t|dd}||| |j}|
j	|j	ksKJ |j	|j	ksSJ |	
|j	|j	ks^J |
|j	|j	ksiJ t|	j|jdd d S )Nr   )rv   r   )r}  r   r@   r+   r   r   r  )r:   rW   rX   r   r,  r!  r   r   r   r-  r   r   )rd   rn   rG   rH   n_targetr  r  r  r  r  r  r  r  r1   r1   r4   test_dtype_match_cholesky  s$   
r  )r)   r+   r,   r*   r-   r.   r  c                 C   s   t j|}d\}}|||}||}t ||d||  }d}| dk}	t }
| dkr1dnd}t jt jfD ]}t|	||	||| |d |	dd	d
d
d|
|< q9|
t j j
t jks^J |
t j j
t jksiJ t|
t j |
t j |d d S )Nr  r   rv   r  r*   rM   rh  r	  ry   F)	rn   rt   rJ   r   r  r   r{   return_n_iterr   r   )r:   rW   rX   r   r   r   r!  r$  r   r,  r-  r   )rt   r'  rJ   rG   rH   r3   r   rm   rn   r  resultsr   current_dtyper1   r1   r4   %test_ridge_regression_dtype_stability.  s4   
r  c                  C   sR   t dd\} }t| } | d d dd d f } |d d d }tdd| | d S )Nr   rJ   r@   r-   r  )r   r:   asfortranarrayr   r   r  r1   r1   r4   test_ridge_sag_with_X_fortranR  s
   
r  zClassifier, paramsc                 C   s   t ddd\}}|dd}tj||gdd}| d	i |||}||}|j|jks/J t|dddf |dddf  tdd|| dS )
zRCheck that multilabel classification is supported and give meaningful
    results.rK   r   )r  rJ   rL   r|   Nr-   r  r1   )	r!   r   r:   r   r   r   r   r   r   )
ClassifierrD   r3   rm   r   r  rs  r1   r1   r4   test_ridgeclassifier_multilabel\  s   
"r  ra  r  )rM   r   r"  rv   c                 C   s   t ddgddgddgddgg}t dd	g}|r$d
}||| }n||}t|d| |d}||| t |jdksAJ dS )z:Test that positive Ridge finds true positive coefficients.rK   r@   r   rF   r   r}  r   r   rN   r   Trn   r  rt   ru   r   N)r:   r   r   r   r   rY   r   )rt   ru   rn   r3   r   r   rm   r   r1   r1   r4   #test_ridge_positive_regression_testr  s   "
r!  c           
      C   s   t jd}|dd}|jdd|jd d}| r"d}|| | }n|| }||j|jd dd	 7 }g }d
D ]}t||| dd}	||		||j
 q7t|ddd dS )zTest that Ridge w/wo positive converges to the same solution.

    Ridge with positive=True and positive=False must give the same
    when the ground truth coefs are all positive.
    r   ,  r  r"  rv   rK   rT   r   r   )TFry   )rn   r  ru   r{   r  r*  N)r:   rW   rX   r   rZ   r   r[   r   ri  r   r   r   )
ru   rn   rd   r3   r   r   rm   r  r  r   r1   r1   r4   %test_ridge_ground_truth_positive_test  s   r#  )r)   r+   r,   r*   r-   r.   c              	   C   s   d}t ddgddgg}t ddg}|| }t|d| dd	}tjtd
d ||| W d   n1 s8w   Y  tjtdd t|||d| dd\}}W d   dS 1 s\w   Y  dS )z5Test input validation for positive argument in Ridge.r"  rK   r@   r   rF   rL   TFr   zdoes not support positiver   Nzonly 'lbfgs' solver can be used)r  rt   r   )r:   r   r   r   r   r   r   r   )rt   rn   r3   r   rm   r   rk   r1   r1   r4   test_ridge_positive_error_test  s   "r$  c           	         s   t dddd\ dd}d fdd		}td
 }tdd }||}||}||ks7J t|D ]}|||d}||ksIJ q;dS )z?Check ridge loss consistency when positive argument is enabled.r"  r   rG   rH   rJ   r"  r  Nr   c                    sp   | j }|d urtj|}| j|jd|| jjd }n| j}dt |  | d  d t|d   S )Nr   rT   r   r@   )r   r:   rW   rX   r   rZ   r   r   )r   rJ   noise_scaler   rd   r   r3   rn   rm   r1   r4   
ridge_loss  s   &z,test_positive_ridge_loss.<locals>.ridge_lossr   T)rn   r  r  )Nr   )r   r   r   r  )	rn   n_checksr(  r   model_positivelossloss_positiverJ   loss_perturbedr1   r'  r4   test_positive_ridge_loss  s   r.  c                 C   sj   t dddd\}}t|d}t| g} dddd}t||| fi |}t||| }t||d	d
d dS )zETest that LBGFS gets almost the same coef of svd when positive=False.r"  r   r%  rK   FgؗҜ<i  )r  r{   r   r  r   r*  N)r   r:   expand_dimsr  r   r   r   )rn   r3   rm   config
coef_lbfgsr   r1   r1   r4   test_lbfgs_solver_consistency  s   r2  c                  C   sx   t ddgddgg} t ddg}tddddd	dd
}tjtdd || | W d   dS 1 s5w   Y  dS )z1Test that LBFGS solver raises ConvergenceWarning.rK   rL   g    _g    _Br   r  Fr   T)rn   rt   ru   r{   r  r   zlbfgs solver did not converger   N)r:   r   r   r   r   r   r   )r3   rm   r   r1   r1   r4   test_lbfgs_solver_error  s   "r3  )r+   r,   r*   r)   r-   r.   r  c                 C   s&  t d| |d|dkd}tdi |}|jj}t||dd t||dd |dr0| r0td	 tj	
d
}tdddd|d\}}|jdd|jd d}tj||gdd}	tj||gdd}
tj||gdd}tdi |j||d| d}tdi |j|	|
|d}t|j|j t|j|j dS )zTest that Ridge fulfils sample weight invariance.

    Note that this test is stricter than the common test
    check_sample_weights_invariance alone.
    rv   r   r  )rn   r&  rt   r{   r  r   )kindzerosr-   z0sag/saga diverge on the second part of this testr   r  r"  rO   2   )rG   rH   rI   r  rJ   r   r@   r   rP   r|   r~   Nr1   )r   r   	__class__r  r
   
startswithr   r   r:   rW   rX   r   rZ   r   r   r   r   r   r   )r&  rt   rD   r  namerd   r3   rm   r   X_dupy_dupsw_dup	ridge_2sw	ridge_dupr1   r1   r4   #test_ridge_sample_weight_invariance  s:   

r?  r   r   )idsc                 C   sn   t ddgddgg}t ddg}| dd}tjtdd ||| W d   dS 1 s0w   Y  dS )	z|Check that the normalize deprecation warning mentions the rescaling of alphas

    Non-regression test for issue #22540
    rK   rL   r   T)r&  z5Set parameter alphas to: original_alphas \* n_samplesr   N)r:   r   r   r   FutureWarningr   )r  r3   rm   	estimatorr1   r1   r4   !test_ridgecv_normalize_deprecated.  s   
"rC  )r  r  r   rO   rK   r  r  r  TFFN)numpyr:   scipy.sparser`  r7   scipyr   	itertoolsr   r   r  sklearn.utilsr   sklearn.utils._testingr   r   r   r   r	   sklearn.utils.estimator_checksr
   sklearn.exceptionsr   sklearnr   sklearn.metricsr   r   r   sklearn.linear_modelr   r   r   sklearn.linear_model._ridger   r   r   r   r   r   r   r   r   r   sklearn.datasetsr   r   r    r!   sklearn.model_selectionr"   r#   r$   r%   r&   sklearn.preprocessingr'   r(   SOLVERSr   r   load_diabetesdiabetesr  r   r   r   r   r   indrW   rX   rd   r  	load_irisr  r8   r  r  r5   r9   r?   rA   fixturers   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   	TypeErrorr   r   r  r  r  filterwarningsr/  r  rD  rF  r[  r_  rd  rt  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r  r  r  r  r  r!  r#  r$  r.  r2  r3  r?  rC  r1   r1   r1   r4   <module>   sr   

F*&(555-	


.
!)	<
		
7
	G

#




'	

$
	
7
"
 



%

+