o
    \iF+                     @   sh  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	m
Z
 d dlmZ d dlmZmZmZmZmZ d dlmZ e Zdd	 Zd
d Zdd Zejdddg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d!d"d# Z$ejd$d%d&gd'd( Z%d)d* Z&ejd+ej'ej(gejd,e	egd-d. Z)ejd,e	egd/d0 Z*dS )1    )logN)datasets)ARDRegressionBayesianRidgeRidge)check_random_state)_convert_containerassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_less)fast_logdetc                  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_score   N)diabetesdatatargetr   fitscores_shapen_iter_Xyclf r   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/linear_model/tests/test_bayes.py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   FT)alpha_1alpha_2lambda_1lambda_2max_iterfit_interceptr   	   decimalN)r   r   r   r   npfinfofloat64epsvarr   eyedotTlinalgsolver   pir   r   r
   r   )r   r   	n_samplesr.   alpha_lambda_r"   r#   r$   r%   scoreMM_inv_dot_yr   r   r   r    test_bayesian_ridge_score_values"   s6   
(&	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d
d| |}t|j|j d| |}t|j	|j	 t
|j|j d S )Nr               r!      
   r   r!   r=   r!   r   r>   r?   Tr   alphar+   arrayr2   r   r   r   r8   r7   r   coef_r
   
intercept_)r   r   br_modelrr_modelr   r   r   test_bayesian_ridge_parameterU   s   4rL   zn_samples, n_features)rB      )rM   rB   c                 C   sf   t j| ||d\}}tdd||}tj|jt| |j	t
|j|  }t|j|dd dS )zCheck the posterior covariance matrix sigma_

    Non-regression test for https://github.com/scikit-learn/scikit-learn/issues/31093
    )random_stateF)r'   gư>rtolN)r   make_regressionr   r   r+   r3   invr8   identityr7   r1   r2   r	   sigma_)r6   
n_featuresglobal_random_seedr   r   regcovariance_matrixr   r   r   test_bayesian_covariance_matrixb   s   
"rY   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   r=   r>   r?   r@   r!   rA   rB   rC   )r>   r=   r=   r   r   r!   r=   Tr   )sample_weightrD   rF   )r   r   wrJ   rK   r   r   r   test_bayesian_sample_weightsr   s   4r\   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!   rA      rB   )r   r!   rA   r]   rB   Tr   r=   r>   r   r=   r>   )r+   rG   r   r   r   predictr   Yr   testr   r   r   test_toy_bayesian_ridge_object   s   
rc   c                  C   sR   t t dddd} t g d}tddd}|| || |}t|d d S )Nr   r>   r?   )        r   rd         rd   r   gMbP?)
alpha_initlambda_init)r+   vanderlinspacerG   r   r   r9   r
   )r   r   rW   r2r   r   r   test_bayesian_initial_params   s
   rk   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 )Nr>   r?   *   dtype)r   randrandom_sampler+   fullrG   rn   r   r   r   r_   r   )	r6   rU   rN   constant_valuer   r   expectedr   y_predr   r   r   6test_prediction_bayesian_ridge_ard_with_constant_input   s   ru   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 )NrB   r?   rl   rm   {Gz?T
return_std)r   ro   rp   r+   rq   rG   rn   r   r   r   r_   r   )
r6   rU   rN   rr   r   r   expected_upper_boundaryr   _y_stdr   r   r   /test_std_bayesian_ridge_ard_with_constant_input   s   r|   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   Trw   )r+   rG   r   r   rT   r   r_   r   r   r   r   test_update_of_sigma_in_ard   s   
r}   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!   r=   )r   r!   r=   Tr   r>   r^   )r+   rG   r   r   r   r_   r`   r   r   r   test_toy_ard_object   s   
r~   ))rB   d   )r   rB   c                 C   sZ   t j| jdd}|d d df }t }||| t d|jd  }|dk s+J d S )N)   r=   )sizer   g|=)r+   randomRandomStatenormalr   r   absrH   )rV   r6   rU   r   r   	regressorabs_coef_errorr   r   r   !test_ard_accuracy_on_easy_problem   s   r   constructor_namerG   	dataframec                    s    fddfdd}d}d}d}t g dd	 t j||f}t|| }t j||f}t|| }tg d
D ];\}}|||}	t }
|
||	 |
j|dd\}}t|||d t	 }|||	 |j|dd\}}t|||d q<d S )Nc                    s   t |   S )N)r+   r1   )r   )br[   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_noiser?   2   rB   )r   rd   r   re   rd   r   )r   r    rv   Trw   r)   )
r+   rG   r   r   	enumerater   r   r_   r   r   )r   r   dn_trainn_testr   X_testr*   r   r   m1y_mean1y_std1m2y_mean2y_std2r   )r   r   r[   r   test_return_std   s,   


r   c                 C   s|   t j| }d }}|||}d}t d|d }t dg| }t }|||||}	|||||}
t j	
|	|
 d S )NrB   r   T)r+   r   r   r   arangerG   r   _update_sigma_update_sigma_woodburytestingr	   )rV   rngr6   rU   r   rE   lmbdakeep_lambdarW   sigmasigma_woodburyr   r   r   test_update_sigma  s   r   rn   	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   r=   r>   r?   r@   r!   rA   rB   rm   rC   rH   rT   Trw   )r+   rG   r2   r   getattrrn   r_   )	rn   r   r   r   model
attributes	attributey_meanr{   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   r=   r>   r?   r@   r!   rA   rB   rC   g-C6?rO   )
r+   rG   r2   r   astypefloat32rH   r-   r   r	   )r   r   r   r   coef_32coef_64r   r   r   test_dtype_correctness3  s   4r   )+mathr   numpyr+   pytestsklearnr   sklearn.linear_modelr   r   r   sklearn.utilsr   sklearn.utils._testingr   r	   r
   r   r   sklearn.utils.extmathr   load_diabetesr   r   r<   rL   markparametrizerY   r\   rc   rk   ru   r|   r}   r~   r   r   r   r   r-   r   r   r   r   r   r   <module>   s>   
3


#