
    0Ph(                     X   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 d dlmZ  ej                    Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zej         !                    dd          d             Z"ej         !                    dddg          d             Z#d Z$ej         !                    dej%        ej&        g          ej         !                    de	eg          d                         Z'ej         !                    de	eg          d             Z(dS )    )logN)datasets)ARDRegressionBayesianRidgeRidge)check_random_state)_convert_containerassert_almost_equalassert_array_almost_equalassert_array_less)fast_logdetc                      t           j        t           j        }} t          d          }|                    | |           |j        j        |j        dz   fk    sJ dS )zCheck scores attribute shapeTcompute_score   N)diabetesdatatargetr   fitscores_shapen_iter_Xyclfs      e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sklearn/linear_model/tests/test_bayes.pytest_bayesian_ridge_scoresr      sU    =(/qA
d
+
+
+CGGAqMMM;q 2222222    c            	      ,   t           j        t           j        }} | j        d         }t	          j        t          j                  j        }dt	          j        |          |z   z  }d}d}d}d}d}	|t          |          z  |	|z  z
  }
|
|t          |          z  ||z  z
  z  }
d|z  t	          j
        |          z  d|z  t	          j        | | j                  z  z   }t          j                            ||          }|
dt          |          t	          j        |j        |          z   |t          dt          j        z            z  z   z  z  }
t#          ||||	ddd	          }|                    | |           t'          |j        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_samplesr0   alpha_lambda_r$   r%   r&   r'   scoreMM_inv_dot_yr   s                 r    test_bayesian_ridge_score_valuesr>   !   s    =(/qA
I
(2:


"CBF1IIO$FG GGHH s7||#h&88E	Ws6{{"Wv%555Efrvi(((3=26!QS>>+IIA)//!Q''K	TA[111IAI4NN E
   C GGAqMMMAq999999r   c            
         t          j        ddgddgddgddgddgddgddgg          } t          j        g d	          j        }t          d
                              | |          }t          |j        |j        z                                | |          }t          |j	        |j	                   t          |j        |j                   d S )Nr               r#      
   r   r#   r@   r#   r   rA   rB   Tr   alphar-   arrayr4   r   r   r   r:   r9   r   coef_r
   
intercept_)r   r   br_modelrr_models       r   test_bayesian_ridge_parameterrO   T   s    
1a&1a&1a&1a&1a&1b'Aq6JKKA
&&&'')A 400044Q::H8+ho=>>>BB1aHHHhnhn===+X-@AAAAAr   c            
         t          j        ddgddgddgddgddgddgddgg          } t          j        g d	          j        }t          j        g d
          j        }t          d                              | ||          }t          |j        |j        z                                | ||          }t          |j	        |j	                   t          |j        |j                   d S )Nr   r@   rA   rB   rC   r#   rD   rE   rF   )rA   r@   r@   r   r   r#   r@   Tr   )sample_weightrG   rI   )r   r   wrM   rN   s        r   test_bayesian_sample_weightsrS   a   s    
1a&1a&1a&1a&1a&1b'Aq6JKKA
&&&'')A
&&&'')A 400044Q4KKH8+ho=>>>BB	1A C  H hnhn===+X-@AAAAAr   c                     t          j        dgdgdgdgdgg          } t          j        g d          }t          d          }|                    | |           dgd	gd
gg}t	          |                    |          g dd           d S )Nr   r#   rD      rE   )r   r#   rD   rU   rE   Tr   r@   rA   r   r@   rA   )r-   rJ   r   r   r   predictr   Yr   tests       r   test_toy_bayesian_ridge_objectr[   q   s    
1#sQC!rd+,,A
!!!""A
d
+
+
+CGGAqMMM C!qc?Dckk$//A>>>>>r   c                     t          j        t          j        ddd          d          } t          j        g d          }t	          dd          }|                    | |                              | |          }t          |d           d S )Nr   rA   rB   )        r!   r]         r]   r!   gMbP?)
alpha_initlambda_init)r-   vanderlinspacerJ   r   r   r;   r
   )r   r   regr2s       r   test_bayesian_initial_paramsre   }   s    
	"+aA&&**A
+++,,A 3D
9
9
9C	A		Q	"	"BC     r   c                     d} d}t          d          }|                                }|                    | |f          }t          j        | |t          j        |          j                  }t          j        | |t          j        |          j                  }t                      t                      fD ];}|	                    ||          
                    |          }t          ||           <d S )NrA   rB   *   dtype)r   randrandom_sampler-   fullrJ   ri   r   r   r   rW   r   )	r8   
n_featuresrandom_stateconstant_valuer   r   expectedr   y_preds	            r   6test_prediction_bayesian_ridge_ard_with_constant_inputrr      s     IJ%b))L!&&((N""Iz#:;;A
	>.1I1I1OPPPAwy.8P8P8VWWWH1 4 4A&&q))!&(33334 4r   c                     d} d}t          d          }|                                }|                    | |f          }t          j        | |t          j        |          j                  }d}t                      t                      fD ]@}|	                    ||          
                    |d          \  }}	t          |	|           Ad S )NrE   rB   rg   rh   {Gz?T
return_std)r   rj   rk   r-   rl   rJ   ri   r   r   r   rW   r   )
r8   rm   rn   ro   r   r   expected_upper_boundaryr   _y_stds
             r   /test_std_bayesian_ridge_ard_with_constant_inputrz      s     IJ%b))L!&&((N""Iz#:;;A
	>.1I1I1OPPPA"1 : :771a==((t(<<5%!89999: :r   c                     t          j        ddgddgg          } t          j        ddg          }t          d          }|                    | |           |j        j        dk    sJ |                    | d           d S )Nr   r   )r(   )r   r   Tru   )r-   rJ   r   r   sigma_r   rW   r   s      r   test_update_of_sigma_in_ardr}      s     	1a&1a&!""A
!QA

#
#
#CGGAqMMM :v%%%%KKdK#####r   c                     t          j        dgdgdgg          } t          j        g d          }t          d          }|                    | |           dgdgdgg}t	          |                    |          g dd           d S )	Nr   r#   r@   )r   r#   r@   Tr   rA   rV   )r-   rJ   r   r   r   rW   rX   s       r   test_toy_ard_objectr      s    
1#sQC!!A
A
d
+
+
+CGGAqMMM C!qc?Dckk$//A>>>>>r   zn_samples, n_features))rE   d   )r   rE   c                     t           j                            |                               d          }|d d df         }t	                      }|                    ||           t          j        d|j        d         z
            }|dk     sJ d S )N)   r@   )sizer   g|=)r-   randomRandomStatenormalr   r   absrK   )global_random_seedr8   rm   r   r   	regressorabs_coef_errors          r   !test_ard_accuracy_on_easy_problemr      s     		01188h8GGA	!!!Q$AIMM!QVA	 2233NE!!!!!!r   constructor_namerJ   	dataframec                    fdfd}d}d}d}t          j        g d          dt           j                            ||f          }t          ||           }t           j                            ||f          }t          ||           }t	          g d          D ]\  }} |||          }	t                      }
|
                    ||	           |
                    |d	
          \  }}t          |||           t                      }|                    ||	           |                    |d	
          \  }}t          |||           d S )Nc                 4    t          j        |           z   S )N)r-   r3   )r   brR   s    r   fztest_return_std.<locals>.f   s    va||ar   c                 v     |           t           j                            | j        d                   |z  z   S )Nr   )r-   r   randnr   )r   
noise_multr   s     r   f_noisez test_return_std.<locals>.f_noise   s/    qttbiooagaj11J>>>r   rB   2   rE   )r!   r]   r!   r^   r]   r!   )r   r"   rt   Tru   r+   )
r-   rJ   r   r	   	enumerater   r   rW   r   r   )r   r   dn_trainn_testr   X_testr,   r   r   m1y_mean1y_std1m2y_mean2y_std2r   r   rR   s                   @@@r   test_return_stdr      s              ? ? ? ? ? 	
AGF
+++,,AA
	'1&&A1.//AYvqk**F(899F(88 G GGAz""__
q!**V*==!&*gFFFF__
q!**V*==!&*gFFFFFG Gr   c                    t           j                            |           }dx}}|                    ||          }d}t          j        d|dz             }t          j        dg|z            }t                      }|                    ||||          }	|                    ||||          }
t           j	        
                    |	|
           d S )NrE   r   T)r-   r   r   r   arangerJ   r   _update_sigma_update_sigma_woodburytestingassert_allclose)r   rngr8   rm   r   rH   lmbdakeep_lambdarc   sigmasigma_woodburys              r   test_update_sigmar      s    
 )

 2
3
3C
  I
		)Z((AEIaa((E(D6J.//K
//Ca{;;E//5%MMNJun55555r   ri   	Estimatorc           
         t          j        ddgddgddgddgddgddgddgg| 	          }t          j        g d
          j        } |            }|                    ||           ddg}|D ]"}t	          ||          j        |j        k    sJ #|                    |d          \  }}|j        |j        k    sJ |j        |j        k    sJ d S )Nr   r@   rA   rB   rC   r#   rD   rE   rh   rF   rK   r|   Tru   )r-   rJ   r4   r   getattrri   rW   )	ri   r   r   r   model
attributes	attributey_meanry   s	            r   test_dtype_matchr     s     	1a&1a&1a&1a&1a&1b'Aq6JRWXXXA
&&&'')AIKKE	IIaOOO8$J : :	ui((.!'99999MM!M55MFE<17"""";!'!!!!!!r   c           
         t          j        ddgddgddgddgddgddgddgg          }t          j        g d	          j        } |             }|                    |                    t           j                  |          j        }|                    |                    t           j                  |          j        }t           j        	                    ||d
           d S )Nr   r@   rA   rB   rC   r#   rD   rE   rF   g-C6?)rtol)
r-   rJ   r4   r   astypefloat32rK   r/   r   r   )r   r   r   r   coef_32coef_64s         r   test_dtype_correctnessr   "  s    
1a&1a&1a&1a&1a&1b'Aq6JKKA
&&&'')AIKKEii,,a006Gii,,a006GJwd;;;;;r   ))mathr   numpyr-   pytestsklearnr   sklearn.linear_modelr   r   r   sklearn.utilsr   sklearn.utils._testingr	   r
   r   r   sklearn.utils.extmathr   load_diabetesr   r   r>   rO   rS   r[   re   rr   rz   r}   r   markparametrizer   r   r   r   r/   r   r    r   r   <module>r      s~                    D D D D D D D D D D , , , , , ,            . - - - - -!8!##3 3 30: 0: 0:f
B 
B 
BB B B 	? 	? 	?
! 
! 
!4 4 4 : : :"$ $ $	? 	? 	? 02HII
" 
" JI
" +g{-CDD G  G ED GF6 6 60 2:rz":;;}m&DEE" " FE <;"" }m&DEE< < FE< < <r   