o
    ÖtBh•+  ã                   @   sŒ  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mZ d dlmZ d d	lmZ d d
lmZ e ¡ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zej  !d!e"d"ƒ¡ej  !d#d$¡d%d&„ ƒƒZ#d'd(„ Z$ej  !d!e"d)ƒ¡d*d+„ ƒZ%ej  &d,¡d-d.„ ƒZ'ej  !d/ej(ej)g¡ej  !d0eeg¡d1d2„ ƒƒZ*ej  !d0eeg¡d3d4„ ƒZ+dS )5é    )ÚlogN)Úassert_array_almost_equal)Úassert_almost_equal)Úassert_array_less)Úcheck_random_state)ÚBayesianRidgeÚARDRegression)ÚRidge)Údatasets)Úfast_logdetc                  C   sz   t  dgdgdgdgdgg¡} t  g d¢¡}tdd}d	}tjt|d
 | | |¡ W d  ƒ dS 1 s6w   Y  dS )zCheck value of n_iter.é   é   é   é   é
   ©r   r   r   r   r   r   ©Ún_iterz,n_iter should be greater than or equal to 1.)ÚmatchN)ÚnpÚarrayr   ÚpytestÚraisesÚ
ValueErrorÚfit)ÚXÚyÚclfÚmsg© r   ú|/var/www/html/riverr-enterprise-integrations-main/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_bayes.pyÚtest_n_iter   s   
"ÿr!   c                  C   s@   t jt j} }tdd}| | |¡ |jj|jd fksJ ‚dS )zCheck scores attribute shapeT©Úcompute_scorer   N)ÚdiabetesÚdataÚtargetr   r   Úscores_ÚshapeÚn_iter_©r   r   r   r   r   r    Útest_bayesian_ridge_scores"   s   
r+   c               	   C   s  t jt j} }| jd }t tj¡j}dt |¡|  }d}d}d}d}d}	|t	|ƒ |	|  }
|
|t	|ƒ ||  7 }
d| t 
|¡ d| t | | j¡  }tj ||¡}|
dt|ƒt |j|¡ |t	dtj ƒ   7 }
t||||	dddd	}| | |¡ t|jd |
d
d dS )aÀ  Check value of score on toy example.

    Compute log marginal likelihood with equation (36) in Sparse Bayesian
    Learning and the Relevance Vector Machine (Tipping, 2001):

    - 0.5 * (log |Id/alpha + X.X^T/lambda| +
             y^T.(Id/alpha + X.X^T/lambda).y + n * log(2 * pi))
    + lambda_1 * log(lambda) - lambda_2 * lambda
    + alpha_1 * log(alpha) - alpha_2 * alpha

    and check equality with the score computed during training.
    r   ç      ð?çš™™™™™¹?g      à¿r   r   FT)Úalpha_1Úalpha_2Úlambda_1Úlambda_2r   Úfit_interceptr#   é	   ©ÚdecimalN)r$   r%   r&   r(   r   ÚfinfoÚfloat64ÚepsÚvarr   ÚeyeÚdotÚTÚlinalgÚsolver   Úpir   r   r   r'   )r   r   Ú	n_samplesr8   Úalpha_Úlambda_r.   r/   r0   r1   ÚscoreÚMÚM_inv_dot_yr   r   r   r    Ú test_bayesian_ridge_score_values,   s6   
(&ÿù	rF   c               
   C   s   t  ddgddgddgddgddgddgddgg¡} t  g d	¢¡j}td
d | |¡}t|j|j d | |¡}t|j	|j	ƒ t
|j|jƒ d S )Nr   é   é   é   é   r   r   r   ©r   r   rG   r   r   rH   rI   Tr"   ©Úalpha©r   r   r<   r   r   r	   rB   rA   r   Úcoef_r   Ú
intercept_)r   r   Úbr_modelÚrr_modelr   r   r    Útest_bayesian_ridge_parameter_   s   4rS   c               
   C   s¨   t  ddgddgddgddgddgddgddgg¡} t  g d	¢¡j}t  g d
¢¡j}tddj| ||d}t|j|j dj| ||d}t|j	|j	ƒ t
|j|jƒ d S )Nr   rG   rH   rI   rJ   r   r   r   rK   )rH   rG   rG   r   r   r   rG   Tr"   )Úsample_weightrL   rN   )r   r   ÚwrQ   rR   r   r   r    Útest_bayesian_sample_weightsl   s   4ÿrV   c                  C   sl   t  dgdgdgdgdgg¡} t  g d¢¡}tdd}| | |¡ dgd	gd
gg}t| |¡g d¢dƒ d S )Nr   r   r   r   r   r   Tr"   rG   rH   ©r   rG   rH   )r   r   r   r   r   Úpredict©r   ÚYr   Útestr   r   r    Útest_toy_bayesian_ridge_object|   s   
r\   c                  C   sR   t  t  ddd¡d¡} t  g d¢¡}tddd}| | |¡ | |¡}t|dƒ d S )Nr   rH   rI   )ç        r,   r]   ç      ð¿r]   r,   gü©ñÒMbP?)Ú
alpha_initÚlambda_init)r   ÚvanderÚlinspacer   r   r   rC   r   )r   r   ÚregÚr2r   r   r    Útest_bayesian_initial_paramsˆ   s
   re   c            	      C   sˆ   d} d}t dƒ}| ¡ }| | |f¡}tj| |t |¡jd}tj| |t |¡jd}tƒ tƒ fD ]}| 	||¡ 
|¡}t||ƒ q1d S )NrH   rI   é*   ©Údtype)r   ÚrandÚrandom_sampler   Úfullr   rh   r   r   r   rX   r   )	r@   Ú
n_featuresÚrandom_stateÚconstant_valuer   r   Úexpectedr   Úy_predr   r   r    Ú6test_prediction_bayesian_ridge_ard_with_constant_input•   s   þrq   c            
      C   s|   d} d}t dƒ}| ¡ }| | |f¡}tj| |t |¡jd}d}tƒ tƒ fD ]}| 	||¡j
|dd\}}	t|	|ƒ q'd S )Nr   rI   rf   rg   ç{®Gáz„?T©Ú
return_std)r   ri   rj   r   rk   r   rh   r   r   r   rX   r   )
r@   rl   rm   rn   r   r   Úexpected_upper_boundaryr   Ú_Úy_stdr   r   r    Ú/test_std_bayesian_ridge_ard_with_constant_input¥   s   þrx   c                  C   s\   t  ddgddgg¡} t  ddg¡}tdd}| | |¡ |jjdks%J ‚|j| dd d S )Nr   r   r   )r   r   Trs   )r   r   r   r   Úsigma_r(   rX   r*   r   r   r    Útest_update_of_sigma_in_ard¶   s   
rz   c                  C   sd   t  dgdgdgg¡} t  g d¢¡}tdd}| | |¡ dgdgdgg}t| |¡g d¢dƒ d S )	Nr   r   rG   )r   r   rG   Tr"   rH   rW   )r   r   r   r   r   rX   rY   r   r   r    Útest_toy_ard_objectÄ   s   
r{   Úseedéd   zn_samples, n_features))r   r}   )r}   r   c                 C   s\   t jj| djdd}|d d …df }tƒ }| ||¡ t  d|jd  ¡}|dk s,J ‚d S )N)r|   )éú   rG   )Úsizer   g»½×Ùß|Û=)r   ÚrandomÚRandomStateÚnormalr   r   ÚabsrO   )r|   r@   rl   r   r   Ú	regressorÚabs_coef_errorr   r   r    Ú!test_ard_accuracy_on_easy_problemÐ   s   r†   c                     sà   ‡ ‡fdd„‰‡fdd„} d}d}d}t  g d¢¡‰d	‰ t j ||f¡}t j ||f¡}tg d
¢ƒD ];\}}| ||ƒ}tƒ }	|	 ||¡ |	j|dd\}
}t|||d tƒ }| ||¡ |j|dd\}}t|||d q2d S )Nc                    s   t  | ˆ¡ˆ  S )N)r   r;   )r   )ÚbrU   r   r    Úfá   s   ztest_return_std.<locals>.fc                    s   ˆ | ƒt j | jd ¡|  S )Nr   )r   r€   Úrandnr(   )r   Ú
noise_mult)rˆ   r   r    Úf_noiseä   s   z test_return_std.<locals>.f_noiserI   é2   r   )r,   r]   r,   r^   r]   r,   )r   r-   rr   Trs   r4   )	r   r   r€   Ú	enumerater   r   rX   r   r   )r‹   ÚdÚn_trainÚn_testr   ÚX_testr5   rŠ   r   Úm1Úy_mean1Úy_std1Úm2Úy_mean2Úy_std2r   )r‡   rˆ   rU   r    Útest_return_stdß   s(   
õr˜   r   c                 C   s|   t j | ¡}d }}| ||¡}d}t  d|d ¡}t  dg| ¡}tƒ }| ||||¡}	| ||||¡}
t j	 
|	|
¡ d S )Nr   r   T)r   r€   r   r‰   Úaranger   r   Ú_update_sigmaÚ_update_sigma_woodburyÚtestingÚassert_allclose)r|   Úrngr@   rl   r   rM   ÚlmbdaÚkeep_lambdarc   ÚsigmaÚsigma_woodburyr   r   r    Útest_update_sigmaÿ   s   r£   z!ignore:'normalize' was deprecatedc                  C   sD   t dd} |  ddgddgddggg d¢¡ | jddggdd dS )	z¦Check that we can predict with `normalize=True` and `return_std=True`.
    Non-regression test for:
    https://github.com/scikit-learn/scikit-learn/issues/18605
    T)Ú	normalizer   r   r   )r   r   r   rs   N)r   r   rX   )r   r   r   r    Ú*test_ard_regression_predict_normalize_true  s   
"r¥   rh   Ú	Estimatorc           	   	   C   s¸   t jddgddgddgddgddgddgddgg| d	}t  g d
¢¡j}|ƒ }| ||¡ ddg}|D ]}t||ƒj|jks@J ‚q3|j|dd\}}|j|jksRJ ‚|j|jksZJ ‚d S )Nr   rG   rH   rI   rJ   r   r   r   rg   rK   rO   ry   Trs   )r   r   r<   r   Úgetattrrh   rX   )	rh   r¦   r   r   ÚmodelÚ
attributesÚ	attributeÚy_meanrw   r   r   r    Útest_dtype_match$  s   8r¬   c              
   C   sŒ   t  ddgddgddgddgddgddgddgg¡}t  g d	¢¡j}| ƒ }| | t j¡|¡j}| | t j¡|¡j}t jj	||d
d d S )Nr   rG   rH   rI   rJ   r   r   r   rK   g-Cëâ6?)Úrtol)
r   r   r<   r   ÚastypeÚfloat32rO   r7   rœ   r   )r¦   r   r   r¨   Úcoef_32Úcoef_64r   r   r    Útest_dtype_correctness7  s   4r²   ),Úmathr   Únumpyr   r   Úsklearn.utils._testingr   r   r   Úsklearn.utilsr   Úsklearn.linear_modelr   r   r	   Úsklearnr
   Úsklearn.utils.extmathr   Úload_diabetesr$   r!   r+   rF   rS   rV   r\   re   rq   rx   rz   r{   ÚmarkÚparametrizeÚranger†   r˜   r£   Úfilterwarningsr¥   r¯   r7   r¬   r²   r   r   r   r    Ú<module>   sH   

3 



