
    -iF+                        S SK Jr  S SKrS SKrS SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJrJrJrJrJr  S SKJr  \R*                  " 5       rS rS	 rS
 r\R4                  R7                  SSS/5      S 5       rS rS rS rS r S r!S r"S r#\R4                  R7                  SS5      S 5       r$\R4                  R7                  SSS/5      S 5       r%S r&\R4                  R7                  S\RN                  \RP                  /5      \R4                  R7                  S\	\/5      S 5       5       r)\R4                  R7                  S\	\/5      S  5       r*g)!    )logN)datasets)ARDRegressionBayesianRidgeRidge)check_random_state)_convert_containerassert_allcloseassert_almost_equalassert_array_almost_equalassert_array_less)fast_logdetc                      [         R                  [         R                  p[        SS9nUR	                  X5        UR
                  R                  UR                  S-   4:X  d   eg)zCheck scores attribute shapeTcompute_score   N)diabetesdatatargetr   fitscores_shapen_iter_Xyclfs      X/var/www/html/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_bayes.pytest_bayesian_ridge_scoresr      sI    ==(//q
d
+CGGAM;;q 2222    c            
      2   [         R                  [         R                  pU R                  S   n[        R
                  " [        R                  5      R                  nS[        R                  " U5      U-   -  nSnSnSnSnSn	U[        U5      -  X-  -
  n
X[        U5      -  Xt-  -
  -  n
SU-  [        R                  " U5      -  SU-  [        R                  " X R                  5      -  -   n[        R                  R                  X5      nU
S[        U5      [        R                  " UR                  U5      -   U[        S[        R                   -  5      -  -   -  -  n
[#        UUUU	SSSS	9nUR%                  X5        ['        UR(                  S   U
S
S9  g)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_samplesr1   alpha_lambda_r%   r&   r'   r(   scoreMM_inv_dot_yr   s                 r    test_bayesian_ridge_score_valuesr?   "   sa    ==(//q
I
((2::

"
"CBFF1IO$FG GGHH s7|#h&88E	s6{"W%555Efrvvi((3=266!SS>+IIA))//!'K	TA[11IAI4NN E
 C GGAMAq9r    c            
         [         R                  " SS/SS/SS/SS/SS/SS/SS//5      n [         R                  " / S	Q5      R                  n[        S
S9R	                  X5      n[        UR                  UR                  -  S9R	                  X5      n[        UR                  UR                  5        [        UR                  UR                  5        g )Nr               r$      
   r   r$   rA   r$   r   rB   rC   Tr   alphar.   arrayr5   r   r   r   r;   r:   r   coef_r   
intercept_)r   r   br_modelrr_models       r   test_bayesian_ridge_parameterrP   U   s    
1a&1a&1a&1a&1a&1b'Aq6JKA
&'))A 4044Q:H8++hoo=>BB1HHhnnhnn=++X-@-@Ar    zn_samples, n_features)rF      )rQ   rF   c                 j   [         R                  " XUS9u  p4[        SS9R                  X45      n[        R
                  R                  UR                  [        R                  " U5      -  UR                  [        R                  " UR                  U5      -  -   5      n[        UR                  USS9  g)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.   r6   invr;   identityr:   r4   r5   r
   sigma_)r9   
n_featuresglobal_random_seedr   r   regcovariance_matrixs          r   test_bayesian_covariance_matrixr^   b   s     ##,>DA e
,
0
0
6C		bkk*--

RVVACC^0KK CJJ 1=r    c            
         [         R                  " SS/SS/SS/SS/SS/SS/SS//5      n [         R                  " / S	Q5      R                  n[         R                  " / S
Q5      R                  n[        SS9R	                  XUS9n[        UR                  UR                  -  S9R	                  XUS9n[        UR                  UR                  5        [        UR                  UR                  5        g )Nr   rA   rB   rC   rD   r$   rE   rF   rG   )rB   rA   rA   r   r   r$   rA   Tr   )sample_weightrH   rJ   )r   r   wrN   rO   s        r   test_bayesian_sample_weightsrb   r   s    
1a&1a&1a&1a&1a&1b'Aq6JKA
&'))A
&'))A 4044Q4KH8++hoo=>BB	A C H hnnhnn=++X-@-@Ar    c                      [         R                  " S/S/S/S/S//5      n [         R                  " / SQ5      n[        SS9nUR                  X5        S/S	/S
//n[	        UR                  U5      / SQS5        g )Nr   r$   rE      rF   )r   r$   rE   rd   rF   Tr   rA   rB   r   rA   rB   )r.   rK   r   r   r   predictr   Yr   tests       r   test_toy_bayesian_ridge_objectrj      sq    
1#sQC!rd+,A
!"A
d
+CGGAM C!qc?Dckk$/A>r    c                      [         R                  " [         R                  " SSS5      S5      n [         R                  " / SQ5      n[	        SSS9nUR                  X5      R                  X5      n[        US5        g )Nr   rB   rC   )        r"   rl         rl   r"   gMbP?)
alpha_initlambda_init)r.   vanderlinspacerK   r   r   r<   r   )r   r   r\   r2s       r   test_bayesian_initial_paramsrs      s^    
		"++aA&*A
+,A 3D
9C			Q	"BC r    c                     Sn Sn[        S5      nUR                  5       nUR                  X45      n[        R                  " X[        R
                  " U5      R                  S9n[        R                  " X[        R
                  " U5      R                  S9n[        5       [        5       4 H.  nUR                  XE5      R                  U5      n[        X5        M0     g )NrB   rC   *   dtype)r   randrandom_sampler.   fullrK   rw   r   r   r   rf   r   )	r9   rZ   rS   constant_valuer   r   expectedr   y_preds	            r   6test_prediction_bayesian_ridge_ard_with_constant_inputr~      s     IJ%b)L!&&(N""I#:;A
	.1I1O1OPAwwy8P8V8VWH1&&q)!&3 2r    c                  ^   Sn Sn[        S5      nUR                  5       nUR                  X45      n[        R                  " X[        R
                  " U5      R                  S9nSn[        5       [        5       4 H/  nUR                  XE5      R                  USS9u  p[        X5        M1     g )NrF   rC   ru   rv   {Gz?T
return_std)r   rx   ry   r.   rz   rK   rw   r   r   r   rf   r   )
r9   rZ   rS   r{   r   r   expected_upper_boundaryr   _y_stds
             r   /test_std_bayesian_ridge_ard_with_constant_inputr      s     IJ%b)L!&&(N""I#:;A
	.1I1O1OPA"1771=((t(<%9 2r    c                      [         R                  " SS/SS//5      n [         R                  " SS/5      n[        SS9nUR                  X5        UR                  R
                  S:X  d   eUR                  U SS9  g )Nr   r   )r)   )r   r   Tr   )r.   rK   r   r   rY   r   rf   r   s      r   test_update_of_sigma_in_ardr      sp     	1a&1a&!"A
!QA

#CGGAM ::v%%%KKdK#r    c                      [         R                  " S/S/S//5      n [         R                  " / SQ5      n[        SS9nUR                  X5        S/S/S//n[	        UR                  U5      / SQS5        g )	Nr   r$   rA   )r   r$   rA   Tr   rB   re   )r.   rK   r   r   r   rf   rg   s       r   test_toy_ard_objectr      sg    
1#sQC!A
A
d
+CGGAM C!qc?Dckk$/A>r    ))rF   d   )r   rF   c                     [         R                  R                  U 5      R                  SS9nUS S 2S4   n[	        5       nUR                  X45        [         R                  " SUR                  S   -
  5      nUS:  d   eg )N)   rA   )sizer   g|=)r.   randomRandomStatenormalr   r   absrL   )r[   r9   rZ   r   r   	regressorabs_coef_errors          r   !test_ard_accuracy_on_easy_problemr      sq     			0188h8GA	!Q$AIMM!VVA	 223NE!!!r    constructor_namerK   	dataframec                 (  ^^^ UU4S jmU4S jnSnSnSn[         R                  " / SQ5      mSm[         R                  R                  X245      n[        XP5      n[         R                  R                  XB45      n[        X`5      n[	        / SQ5       H{  u  pxU" XX5      n	[        5       n
U
R                  XY5        U
R                  US	S
9u  p[        XUS9  [        5       nUR                  XY5        UR                  US	S
9u  p[        XUS9  M}     g )Nc                 8   > [         R                  " U T5      T-   $ )N)r.   r4   )r   bra   s    r   ftest_return_std.<locals>.f   s    vva|ar    c                 t   > T" U 5      [         R                  R                  U R                  S   5      U-  -   $ )Nr   )r.   r   randnr   )r   
noise_multr   s     r   f_noise test_return_std.<locals>.f_noise   s,    tbiiooaggaj1J>>>r    rC   2   rF   )r"   rl   r"   rm   rl   r"   )r   r#   r   Tr   r,   )
r.   rK   r   r	   	enumerater   r   rf   r   r   )r   r   dn_trainn_testr   X_testr-   r   r   m1y_mean1y_std1m2y_mean2y_std2r   r   ra   s                   @@@r   test_return_stdr      s     ? 	
AGF
+,AA
		'&A1/AYYvk*F9F(8A"_
q**V*=!&gF_
q**V*=!&gF  9r    c                 p   [         R                  R                  U 5      nS=p#UR                  X#5      nSn[         R                  " SUS-   5      n[         R
                  " S/U-  5      n[        5       nUR                  XEXg5      n	UR                  XEXg5      n
[         R                  R                  X5        g )NrF   r   T)r.   r   r   r   arangerK   r   _update_sigma_update_sigma_woodburytestingr
   )r[   rngr9   rZ   r   rI   lmbdakeep_lambdar\   sigmasigma_woodburys              r   test_update_sigmar     s    
 ))

 2
3C
  I		)(AEIIaa(E((D6J./K
/Ca;E//%MNJJu5r    rw   	Estimatorc           
         [         R                  " SS/SS/SS/SS/SS/SS/SS//U S	9n[         R                  " / S
Q5      R                  nU" 5       nUR                  X#5        SS/nU H(  n[	        XF5      R
                  UR
                  :X  a  M(   e   UR                  USS9u  pxUR
                  UR
                  :X  d   eUR
                  UR
                  :X  d   eg )Nr   rA   rB   rC   rD   r$   rE   rF   rv   rG   rL   rY   Tr   )r.   rK   r5   r   getattrrw   rf   )	rw   r   r   r   model
attributes	attributey_meanr   s	            r   test_dtype_matchr      s     	1a&1a&1a&1a&1a&1b'Aq6JRWXA
&'))AKE	IIaO8$J	u(..!''999   MM!M5MF<<177""";;!''!!!r    c           
         [         R                  " SS/SS/SS/SS/SS/SS/SS//5      n[         R                  " / S	Q5      R                  nU " 5       nUR                  UR	                  [         R
                  5      U5      R                  nUR                  UR	                  [         R                  5      U5      R                  n[         R                  R                  XES
S9  g )Nr   rA   rB   rC   rD   r$   rE   rF   rG   g-C6?rT   )
r.   rK   r5   r   astypefloat32rL   r0   r   r
   )r   r   r   r   coef_32coef_64s         r   test_dtype_correctnessr   3  s    
1a&1a&1a&1a&1a&1b'Aq6JKA
&'))AKEii,a066Gii,a066GJJwd;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?   rP   markparametrizer^   rb   rj   rs   r~   r   r   r   r   r   r   r   r0   r   r    r    r   <module>r      sr       D D ,  .!!#30:f
B 08X2FG> H>B 	?
!4 :"$	? 02HI
" J
" +g{-CD G E GF60 2::rzz":;}m&DE" F <"" }m&DE< F<r    