
    -is                        S SK r S SKrS SKrS SKJr  S SKJrJr  S SK	J
r
  S SKJr  S SKJrJrJrJrJrJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJrJrJrJ r   \RB                  " 5       r"\"RF                  \"RH                  sr%r&\RN                  " \%RP                  \%5      r)\RN                  " \%RP                  \&5      r*\&RV                  r,S r-S r.S r/\R`                  Rc                  SSS/5      \R`                  Rc                  SSS/5      S 5       5       r2S r3S r4\R`                  Rk                  S5      S 5       r6\R`                  Rk                  S5      S 5       r7S r8S r9S r:S r;\R`                  Rc                  S\R                  \R                  \R$                  /5      S  5       r<S! r=S" r>S# r?S$ r@S% rAS& rBS' rCS( rDSKS) jrES* rFS+ rGS, rHS- rIS. rJS/ rKS0S0rLS1S200 0 S3.rMS4 rNS5 rOS6 rP\R`                  Rc                  S7SS/5      S8 5       rQ\R`                  Rc                  S7SS/5      S9 5       rR\R`                  Rc                  S:\" S;S<9\" 5       45      S= 5       rSS> rTS? rU\R`                  Rc                  S@\S0 4\S0 4\S0 4\S0 4\SSASB0445      \R`                  Rc                  SC\R                  \R                  45      SD 5       5       rX\R`                  Rc                  S@\S0 4\S0 4\S0 4\S0 4\SSASB0445      SE 5       rY\R`                  Rc                  SFSGSH/5      SI 5       rZ\R`                  Rc                  S0SS/5      SJ 5       r[g)L    N)linalg)datasetslinear_model)clone)ConvergenceWarning)LarsLarsCV	LassoLarsLassoLarsCVLassoLarsIC	lars_path)_lars_path_residues)train_test_split)make_pipeline)StandardScaler)
TempMemmapassert_allcloseassert_array_almost_equalignore_warningsc                  x   SS K n SSKJn  U R                  n U" 5       U l        [        R
                  " [        [        SSS9u    p4X l        [        UR                  5       H  u  pV[        [        R                  " [        U5      -
  n[        R                  " [        R                  U5      n[        R                  " [        U5      5      n	Sn
[        XU
-
  [        U5      :     5      nU[        R                  S   :  a  XS-   :X  d   eM  U[        R                  S   :X  a  M   e   X l        g ! X l        f = f)Nr   )StringIOlar
   )methodverboseMbP?   )sysior   stdoutr   r   Xy	enumerateTnpdotmaxabslenshape)r   r   
old_stdout_
coef_path_icoef_rescovCepsocurs               ^/var/www/html/venv/lib/python3.13/site-packages/sklearn/linear_model/tests/test_least_angle.pytest_simpler6   %   s     J Z
'11!QubQ1
!*,,/HAbffQ&&C&&c"Cs3x ACss7SX-./D1771:~1u}$} qwwqz))) 0  
Z
s   D
D1 &D1 1D9c                     [         R                  " [        [        [        SS9u    p[        UR                  5       H  u  p#[        [        R                  " [        U5      -
  n[        R                  " [        R                  U5      n[        R                  " [        U5      5      nSn[        XVU-
  [        U5      :     5      nU[        R                  S   :  a  XS-   :X  d   eM  U[        R                  S   :X  a  M   e   g )Nr   )Gramr   r   r   )r   r   r!   r"   Gr#   r$   r%   r&   r'   r(   r)   r*   )	r,   r-   r.   r/   r0   r1   r2   r3   r4   s	            r5   test_simple_precomputedr:   C   s     $--a5IAqjll+"&&E""ffQSS#FF3s833wS)*+qwwqz>q5= = 1771:%%% ,    c                 v    [        U 5      [        U5      :X  d   e[        X5       H  u  p#[        X#5        M     g )N)r)   zipr   )output1output2o1o2s       r5   _assert_same_lars_path_resultrB   U   s1    w<3w<'''g' (r;   r   r   lassoreturn_pathTFc                     [        [        R                  " [        [        [
        XS9[        R                  " [        [        [        XS95        g )N)Xyr8   	n_samplesr   rD   )r8   r   rD   )	rB   r   lars_path_gramrF   r9   rG   r   r!   r"   r   rD   s     r5   test_lars_path_gram_equivalentrJ   [   s9     "##Yv	
 	q!!FT	r;   c                      [         R                  " [        R                  [        5      n [
        R                  " [        SS9   [        R                  " S [        S U S9  S S S 5        g ! , (       d  f       g = f)Nz%X and Gram cannot both be unspecifiedmatch)r8   rF   )
r%   r&   r!   r$   r"   pytestraises
ValueErrorr   r   )rF   s    r5   (test_x_none_gram_none_raises_value_errorrQ   f   sE    	QB	z)P	QtQTb9 
R	Q	Qs   A((
A6c            	      r   [         R                  " [        R                  [        5      n [         R                  " [        R                  [        5      nS H_  n[
        R                  " [        [        US9n[
        R                  " [        [        XUS9n[        X45       H  u  pV[        XV5        M     Ma     g )N)r   rC   r   )r8   rF   r   )	r%   r&   r!   r$   r"   r   r   r=   r   )r9   rF   r   output
output_preexpectedgots          r5   test_all_precomputedrX   m   su    
qssAA	QB ''1V<!++AqqO
 4MH%h4 5 !r;   z%ignore: `rcond` parameter will changec                      S[         -  n [        R                  " SS9nUR                  U [        5        [
        R                  R                  U [        5      S   n[        UR                  U5        g )N           alphar   )
r!   r   r
   fitr"   r%   r   lstsqr   r/   )X1clf
coef_lstsqs      r5   test_lars_lstsqrc   y   sQ     
QB

 
 s
+CGGBNQ'*Jcii4r;   c                      [         R                  " [        [        SS9u    p[        R
                  R                  [        [        5      S   n[        X!S S 2S4   5        g )NrC   rS   r   )r   r   r!   r"   r%   r   r_   r   )r,   r-   rb   s      r5   test_lasso_gives_lstsq_solutionrf      sG     $--a7CAqA&q)JjQU*;<r;   c                     [         R                  " / SQ/ SQ/ SQ/5      n [         R                  " / SQ5      n[         R                  R                  S5      n[        nU" [
        R                  5      " XSS9u    pE[         R                  " U5      R                  5       (       a   e[         R                  " XS S 2S4   5      U-
  nUS	-  R                  5       S
:  d   eSnUR                  US5      n [         R                  " U5      n[
        R                  " U USSSSSSSS9	u    pE[        U[         R                  " U5      5        g )N)      @rh         ?)       @rj   r[   )ri   ri   r   )ri   r[   r   r   {Gz?)	alpha_minre      ri   r      autoFr[   rC   i  )r8   copy_X	copy_Gramrl   r   r   max_iter)r%   arrayrandomRandomStater   r   r   isnananyr&   sumrandzerosr   
zeros_like)r!   r"   rngfr,   r-   residualrG   s           r5   test_collinearityr      s   
/?MBCA
A
))


"CA//0FAqxx
#''))))vvaArE*+a/HaK$$$IAA
A#--		
Aq j"--
*CDr;   c                      [         R                  " [        [        SS9u  pn[         R                  " [        [        SSS9u  p1n[	        XBS S 2S4   5        X0S   :X  d   eg )Nr   rS   FrI   re   )r   r   r!   r"   r   alphas_r,   r-   alpha_coefs        r5   test_no_pathr      sV    )33AqGG
",,Q%USOFtdq"u$56R[   r;   c                      [         R                  " [        [        S[        S9u  pn[         R                  " [        [        S[        SS9u  p1n[        XBS S 2S4   5        X0S   :X  d   eg )Nr   )r   r8   F)r   r8   rD   re   )r   r   r!   r"   r9   r   r   s        r5   test_no_path_precomputedr      s_    )33AqQOG
",,	1UOFt dq"u$56R[   r;   c            
      n   S[         R                  -  [         R                  p[        R                  " U R
                  U 5      n[        R                  " U R
                  U5      n[        R                  " XSX2SS9u  pEn[        R                  " XSX#SSS9u  pun[        XS S 2S4   5        XtS   :X  d   eg )NrZ   rC   ?)r   rF   r8   rl   F)r   r8   rF   rl   rD   re   )	diabetesdatatargetr%   r&   r$   r   r   r   )	r!   r"   r9   rF   r   r,   r-   r   r   s	            r5   test_no_path_all_precomputedr      s     x}}hooq
qssAA	QB)33	WsG
 #,,	W1sOFt dq"u$56R[   r;   
classifierc                 8   [         R                  " [        R                  [        5      nU " US9n[	        UR
                  5      " [        [        5      R                  nS H7  nU " US9nUR                  [        [        5      R                  n[        X5SS9  M9     g )N
precompute)TFro   N   decimal)	r%   r&   r!   r$   r   r^   r"   r/   r   )r   r9   ra   output_1r   output_2s         r5   test_lars_precomputer      so    
 	qssAA

"Csww'1-33H1
J/771a=&&!(a@ 2r;   c                      [         R                  " SS/SS//5      n [         R                  " SS/5      n[        R                  " X5      u    p#[	        UR
                  SS/SS//5        g )Nr   ri   r   )r%   rs   r   r   r   r$   )r`   y1r,   	coef_paths       r5   test_singular_matrixr      s^    	As8c3Z(	)B	1a&	B",,R4OAqikkQFQF+;<r;   c            	      X   / SQn SS/SS/SS/// SQ/ SQ/ SQ/4 GH  n[         R                  " S5      nUR                  X5      R                  nS	[        R
                  " U [        R                  " X5      -
  5      S
-  -  S[        R
                  " US5      -  -   n[         R                  " SSS9nUR                  X5      R                  nS	[        R
                  " U [        R                  " X5      -
  5      S
-  -  S[        R
                  " US5      -  -   nXGS-  :  a  GM   e   g )N)rn   r   rn   rn   r   r   )r   r   r   )g3#I9r   r   )r   r   r   皙?gUUUUUU?rm   r   ư>tol1  ?)	r   r
   r^   r/   r   normr%   r&   Lasso)r"   r!   lars
coef_lars_obj_larscoord_descentcoef_cd_obj_cds           r5   test_rank_deficient_designr      s!    	A1v1vBx(;y*QR %%c*XXa^))
$v{{q%%(
( v{{:q112 %**3D9 $$Q*00#v{{q##(
( v{{8Q//0 J//// Sr;   c                  t   S[         R                  -  n [        R                  " U [        SS9u  pn[        R
                  " SSS9n[        UR                  U5       HS  u  pVUS:X  a  M  Xdl        UR                  U [        5        [        R                  " XTR                  -
  5      nUS:  a  MS   e   [        R                  " SS	S
5       H  n[        R                  " US9R                  U [        5      n	[        R
                  " USS9R                  U [        5      n
[        R                  " U	R                  U
R                  -
  5      nUS:  a  M   e   [         R                  n X R!                  SS9-
  n U [        R                  R                  U SS9-  n [        R                  " U [        SS9u  pn[        R
                  " SSS9n[        UR                  U5       HS  u  pVUS:X  a  M  Xdl        UR                  U [        5        [        R                  " XTR                  -
  5      nUS:  a  MS   e   g )NrZ   rC   rS   F:0yE>fit_interceptr   r   rk   Gz?   r\   r]   r   r   axisr   r   r   r   r"   r   r=   r$   r]   r^   r   r   r/   r%   linspacer
   rx   r!   alphasr,   
lasso_pathlasso_cdcaerrorr]   clf1clf2errs               r5   test_lasso_lars_vs_lasso_cdr      s    	
HMMA(221aHFz!!4@HJLL&)6QA./t|| * T8R0%%E266q!<!!48<<QBkk$**tzz12Tzz	 1 	A	EEqEMA	""A(221aHFz!!4@HJLL&)6QA./t|| *r;   c                      / SQn [         R                  nU  H  n[        R                  " U[        SUS9u  p4n[        R
                  " SSS9nUS   Ul        UR                  U[        5        [        R                  " US S 2S4   UR                  -
  5      nUS:  a  M   e   [         R                  [         R                  R                  S	S
9-
  nU[        R                  R                  US	S
9-  nU  H  n[        R                  " U[        SUS9u  p4n[        R
                  " SS9nUS   Ul        UR                  U[        5        [        R                  " US S 2S4   UR                  -
  5      nUS:  a  M   e   g )N)r   r   -C6?rC   )r   rl   Fr   r   re   rk   r   r   r   )r   r   r   r   r"   r   r]   r^   r   r   r/   rx   r%   )
alphas_minr!   rl   r   r,   r   r   r   s           r5   *test_lasso_lars_vs_lasso_cd_early_stoppingr   !  sO    !JA	 , 6 6qI!
:  %%EtDQJq"u->?t||   	))q)11A	""A	 , 6 6qI!
:  %%$/QJq"u->?t||  r;   c                     [         R                  " 5       n U R                  [        [        5        [         R                  " U R
                  S   S9nUR                  [        [        5        [        U R
                  S S UR
                  5        [        R                  " [        R                  " U R
                  5      S:  5      (       d   eg )Nrm   r\   rZ   r   )
r   r
   r^   r!   r"   r   r   r%   alldiff)rC   lasso2s     r5   test_lasso_lars_path_lengthr   B  s    ""$E	IIaO##%--*:;F
JJq!emmBQ/@66"''%--(1,----r;   c                  x   [         R                  R                  S5      n Su  pSnU R                  X5      n[         R                  " US45      n[         R
                  " SU5      nU R                  U5        US U n[         R                  " U R                  US5      5      U R                  US5      S-   -  XW'   [         R                  " XE5      nSn	XU R                  " UR                  6 -  -  nUR                  5       n[        R                  " XHSS9u  pn[        R                  " XHU
S	S
9u  pn[        XSS9  g )N*   )F   d   rn   r   r   g?rC   rS   r   )r   r   r   )r%   rt   ru   randnrz   arangeshufflesignry   r&   r*   squeezer   r   r   r   )r|   nmkr!   wr.   suppr"   sigmalars_alphasr,   	lars_coeflasso_coef2s                 r5   +test_lasso_lars_vs_lasso_cd_ill_conditionedr   M  s	    ))


#C DA	A		!A
!QA
		!QAKKNRa5Dggcii1o&#((1a.1*<=AG
qAE177#	##A			A , 6 6qG LKI$//[dSAAia@r;   c                    ^^	^
 / SQ/ SQ/ SQ/m/ SQm
Sm	UU	U
4S jn [         R                  " T	S9nSn[        R                  " [        US	9   UR                  TT
5        S S S 5        UR                  nU " U5      n[         R                  " T	SS
9nUR                  TT
5      R                  nU " U5      nXGS-  :  d   eg ! , (       d  f       Nf= f)N)@xDr   r   )g3#Ir   r   )r   r   r   )r   r   r   r   c                    > SS[        T5      -  -  [        R                  " T[        R                  " TU 5      -
  5      S-  -  T[        R                  " U S5      -  -   $ )Nri   rj   rm   r   )r)   r   r   r%   r&   )r   r!   r]   r"   s    r5   objective_functionHtest_lasso_lars_vs_lasso_cd_ill_conditioned2.<locals>.objective_functionu  sZ    cCFl#fkkq$'
' T1--. 	.r;   r\   z$Regressors in active set degenerate.rL   r   r   )r   r
   rN   warnsr   r^   r/   r   )r   r   warning_message
lars_coef_lars_objr   cd_coef_cd_objr!   r]   r"   s           @@@r5   ,test_lasso_lars_vs_lasso_cd_ill_conditioned2r   j  s     
.)4AAE.
 !!.D<O	(	@A 
AJ!*-H &&U=M  A&,,H)F
++++ 
A	@s   B??
Cc                     Sn S[         R                  " SU S-   5      [         R                  " U 5      S S 2[         R                  4   -   -  n[        R                  " SS9R                  U[         R                  " U 5      5      n[         R                  " [         R                  " UR                  5      5      (       d   eg )Nrn   ri   r   Fr   )	r%   r   newaxisr   r   r^   r   isfiniter/   )r   Hra   s      r5   test_lars_add_featuresr     s     	
AryyAE"RYYq\!RZZ-%@@AA


%
0
4
4Q		!
EC66"++cii())))r;   c                     [         R                  " SU S9nUR                  [        [        5        [        UR                  R                  5       S   5      S:X  d   e[        UR                  5      S:X  d   eg )N   )n_nonzero_coefsr   r      )	r   r   r^   r!   r"   r)   r/   nonzeror   )r   r   s     r5   test_lars_n_nonzero_coefsr     s_    Q@DHHQNtzz!!#A&'1,,, t||!!!r;   c                  X   [         R                  " [        [        S-  /5      R                  n U R                  S   n[
        R                  " 5       [
        R                  " 5       [
        R                  " SS9[
        R                  " SS9/nU GH  nUR                  [        U 5        UR                  [        5      nUR                  UR                  UR                  UR                  4u  pVpx[        U5       H  n	UR                  [        U S S 2U	4   5        UR                  [        5      n
[!        XY   UR                  5        [!        Xi   UR                  5        [!        Xy   UR                  5        [!        X   UR                  5        [!        US S 2U	4   U
5        M     GM     g )Nrm   r   Fr   )r%   vstackr"   r$   r*   r   r
   r   r^   r!   predictr   active_r/   r-   ranger   )Y	n_targets
estimators	estimatorY_predr   activer   pathr   y_preds              r5   test_multitargetr    sM   
		1ad)A
I U3.J  	a""1%OO  	&
" y!AMM!Qq!tW%&&q)F%fi1B1BC%fi1B1BC%dgy?%dgy/C/CD%fQTlF; "  r;   c                  B   Sn [         R                  " 5       nS Ho  n[        R                  S U n[        R                  S U nUR                  X45        [        R                  R                  XR                  5        UR                  n Mq     [        US5      (       a   eg )Nr   )i     r   r   )r   r   r   r   r   r^   r%   testingassert_array_lessr   hasattr)	old_alphalars_cvlengthr!   r"   s        r5   test_lars_cvr    s    
 I&&(G!MM'6"OOGV$A


$$Y?NN	 " w 122222r;   c                 j   [         R                  " S5        [        R                  " SSS9   [        R
                  n[        R                  n[        R                  R                  S5      nUR                  [        U5      5      n[        R
                  n[        R                  XU4   n[        5       R                  U5      n[        R                  " SSS9nUR!                  X5        S S S 5        U  Vs/ s H  n[#        U5      PM     nn[        U5      S:X  d   eg ! , (       d  f       N;= fs  snf )Nalwaysraise)divideinvalidr   rn   )rr   cvr   )warningssimplefilterr%   errstater   r   r   rt   ru   r   r)   c_r   fit_transformr   r   r^   str)recwarnr!   r"   r|   xr	  r   recorded_warningss           r5   test_lars_cv_max_iterr    s    (#	GW	5MMOOii##B'IIc!fMMEE!'N**1-**A!<A 
6 *11AQ1 !Q&&&! 
6	5 2s   B>D6D0
D-c                     [         R                  " S5      n [         R                  " S5      n[        R                  R	                  S5      n[
        R                  n[        R                  X2R                  UR                  S   S5      4   n[        5       R                  U5      nU R                  U[        5        UR                  U[        5        [        R                  " U R                  5      S   n[        R                  " UR                  5      S   nU R                   UR                   :  d   e[#        U5      [#        U5      :  d   e[        R$                  " U5      [
        R                  R                  S   :  d   eg )Nbicaicr   r   rn   r   )r   r   r%   rt   ru   r   r   r  r   r*   r   r  r^   r"   wherer/   r   r)   r'   )lars_biclars_aicr|   r!   nonzero_bicnonzero_aics         r5   test_lasso_lars_icr$    s   
 ''.H''.H
))


#CA
a1771:q))*A&&q)ALLALLA((8>>*1-K((8>>*1-K??X__,,,{c+....66+!4!4Q!7777r;   c            	          [        [        [        SS9n [        U 5       u  pp4[	        XX$SS9  S S S 5        g ! , (       d  f       g = f)Nr   )random_stateF)copy)r   r!   r"   r   r   )splitted_dataX_trainX_testy_trainy_tests        r5   test_lars_path_readonly_datar-    s9    
 %Q;M	M	"&HwGf5I 
#	"	"s	   7
Ac                     Sn [         R                  " [        U S9   [        R                  " [
        S   [
        S   SSS9  S S S 5        Sn[        R                  " [        [        SUS	S
9u    p#UR                  5       S:  d   e[        R                  " [        [        SUSS
9u    p#UR                  5       S:  d   eg ! , (       d  f       N= f)Nz:Positive constraint not supported for 'lar' coding method.rL   r   r   r   Tr   positiverC   F)rD   r   r0  r   )	rN   rO   rP   r   r   r   r!   r"   min)err_msgr   r,   coefss       r5   "test_lars_path_positive_constraintr4    s     KG	z	1Vhx0	
 
2
 F((	1$vKAq 99;??((	1$vKAq 99;! 
2	1s   &B??
Cr   r]   r   r
   r   r   c                     SS0n SS00 0 S.nU H  nU R                  5       nUR                  X   5        [        [        U5      " S	SS0UD6nUR	                  [
        [        5        UR                  R                  5       S:  d   e[        [        U5      " S	SS0UD6nUR	                  [
        [        5        [        UR                  5      S:  a  M   e   g )
Nr   Fr]   r   r5  r0  r   T )	r'  updategetattrr   r^   r!   r"   r/   r1  )default_parameterestimator_parameter_mapestnameparamsr   s        r5   )test_estimatorclasses_positive_constraintr>  %  s     )%0 s^
 +"'')-67L'2LELVL	a""$q(((L'2KDKFK	a9??#q((( +r;   c                     S[         R                  -  n [        R                  " U [        SSS9u  pn[        R
                  " SSSS9n[        UR                  U5       HS  u  pVUS:X  a  M  Xdl        UR                  U [        5        [        R                  " XTR                  -
  5      nUS	:  a  MS   e   [        R                  " S
SS5       H  n[        R                  " SUSS9R                  U [        5      n	[        R
                  " SUSSS9R                  U [        5      n
[        R                  " U	R                  U
R                  -
  5      nUS:  a  M   e   [         R                  [         R                  R!                  SS9-
  n U [        R                  R                  U SS9-  n [        R                  " U [        SSS9u  pn[        R
                  " SSSS9n[        UR                  S S US S 5       HK  u  pVXdl        UR                  U [        5        [        R                  " XTR                  -
  5      nUS	:  a  MK   e   g )NrZ   rC   Tr/  Fr   )r   r   r0  r   rk   g333333?r   r   )r   r]   r0  )r   r]   r   r0  r   r   re   r   r   s               r5   $test_lasso_lars_vs_lasso_cd_positiver@  :  s    	
HMMA(221aRVWFz!!4$OHJLL&)6QA./t|| *" T8R0%%ut

#a) 	 !!u$

#a) 	 kk$**tzz12Tzz 1 	))q)11A	""A(221aRVWFz!!4$OHJLL"%vcr{3QA./t||	 4r;   c                  X   [         R                  " / SQ5      n [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/5      nUR                  n[         R                  " / SQ/ SQ/ S	Q/ S
Q/ SQ/5      n[        R                  " SSS9nUR                  X 5        UR                  n[        X5SS9  g )N)gMPg~5j2gW:!g>ޒ}@g@Jk3)gJE?r   r   r   r   )g!?gŖX~s?r   r   r   )g%haE?g;4g\P?r   r   )g8k荿g0HUngx2Fڤ?gYQ?r   )g{J2ghXJ?g=Da?g%7g{?)
r   r   r   r   r   gZ,SgrTg[0Tg#l/TgJ#U)
r   r   r   r   g޿r   r   r   r   g)44ә?)
r   gW]g` g&gdug
fտr   r   g>S?gQ7X?)
r   r   r   gnrCO;@g/z@@g|~@g#B@gN)@gS@gQT잇@)
r   r   gVs5~gtTXlgFgBFgm_gGg8GgӫGg`Hr   F)r]   r      r   )r%   rs   r$   r   r
   r^   r-   r   )r"   r  r!   rmodel_lasso_lars	skl_betass         r5   #test_lasso_lars_vs_R_implementationrF  n  s    
 	RSA
$-7?I	
	A 	
A 	 LM2	
4	Al $--AUK ++IaB7r;   rp   c                    [        U SS9n[        R                  R                  S5      nUR	                  SSS5      nUR                  5       nUSS2S4   nUR                  X55        U [        R                  " X45      :X  d   eg)ze
Test that user input regarding copy_X is not being overridden (it was until
at least version 0.21)

F)rp   r   r   r   r   rn   Nrm   r   r%   rt   ru   normalr'  r^   array_equalrp   
lasso_larsr|   r!   X_copyr"   s         r5   test_lasso_lars_copyX_behaviourrO    sq     Fu=J
))


"C

1a"AVVXF	!Q$ANN1R^^A....r;   c                    [        SS9n[        R                  R                  S5      nUR	                  SSS5      nUR                  5       nUSS2S4   nUR                  X5U S9  U [        R                  " X45      :X  d   eg)	zK
Test that user input to .fit for copy_X overrides default __init__ value

Fr   r   r   rH  Nrm   )rp   rI  rL  s         r5   #test_lasso_lars_fit_copyX_behaviourrQ    ss     .J
))


"C

1a"AVVXF	!Q$ANN1N'R^^A....r;   estr   r\   c                    [         R                  " / SQ/ SQ/5      nSS/n/ SQnU R                  SS9  [        U 5      R                  SSS	9nU R	                  X5        UR	                  X5        [         R
                  " U R                  UR                  -
  S
-  5      S:  d   e[         R                  R                  UR                  USS9  g )N)r[   r[   r[         r[   )r[   rT  r[   r[   r[   g      )r         @r   rU  r   Fr   gHz>r   )jitterr&  rm   r   r   )rtol)	r%   rs   
set_paramsr   r^   meanr/   r  r   )rR  r!   r"   expected_coef
est_jitters        r5   test_lars_with_jitterr\    s    
 	,.HIJA	tA'M NNN's&&e!&DJGGAMNN177CII
 0 00Q67#===JJz//TJr;   c                      [         R                  " [        SS9   [        S [        R
                  " S/5      SS9  S S S 5        g ! , (       d  f       g = f)Nz$X cannot be None if Gram is not NonerL   r   T)r!   r"   r8   )rN   rO   rP   r   r%   rs   r7  r;   r5   test_X_none_gram_not_noner^    s4    	z)O	PDBHHaSM5 
Q	P	Ps   !A
Ac                      [         R                  R                  S5      n U R                  SS5      nU R                  S5      nUR	                  5       n[
        R                  " XSSSS9  [        X5        g )Nr   r   ro   TrC   )r8   rp   r   )r%   rt   ru   ry   r'  r   r   r   )r|   r!   r"   X_befores       r5   test_copy_X_with_auto_gramra    s[     ))


#CAAAvvxH1fT'JA r;   zLARS, has_coef_path, argsrr   rn   dtypec                    [         R                  R                  S5      nUR                  SS5      R	                  U5      nUR                  S5      R	                  U5      nU " S0 UD6nUR                  XV5        UR                  R                  U:X  d   eU(       a  UR                  R                  U:X  d   eUR                  R                  U:X  d   eg )Nr   r   r   r7  )
r%   rt   ru   ry   astyper^   r/   rb  r-   
intercept_)LARShas_coef_pathargsrb  r|   r!   r"   models           r5   test_lars_dtype_matchrj    s     ))


"CQu%AE"AL4LE	IIaO;;%%%%%...!!U***r;   c                 *   SnSn[         R                  R                  S5      nUR                  SS5      nUR                  S5      nU " S0 UD6R	                  Xg5      nU " S0 UD6R	                  UR                  [         R                  5      UR                  [         R                  5      5      n	[        UR                  U	R                  X4S9  U(       a  [        UR                  U	R                  X4S9  [        UR                  U	R                  X4S9  g )Ngh㈵>r   r   r   )rW  atolr7  )r%   rt   ru   ry   r^   rd  float32r   r/   r-   re  )
rf  rg  rh  rW  rl  r|   X_64y_64model_64model_32s
             r5   test_lars_numeric_consistencyrr  %  s     DD
))


"C88B?D88B<D|d|+H|d|BJJ 7RZZ9PQHHNNHNNI++X-@-@tWH'')<)<4Sr;   	criterionr  r  c                     [        [        5       [        U S95      nUR                  [        [
        5        [        R                  " US   R                  5      nUS:X  d   eg)zCheck that we properly compute the AIC and BIC score.

In this test, we reproduce the example of the Fig. 2 of Zou et al.
(reference [1] in LassoLarsIC) In this example, only 7 features should be
selected.
)rs  re   r   N)	r   r   r   r^   r!   r"   r%   argmin
criterion_)rs  ri  best_alpha_selecteds      r5    test_lassolarsic_alpha_selectionrx  C  sL     .*K),LME	IIaO))E"I$8$89!###r;   c                    [         R                  R                  S5      n[        R                  " SSU -
  US9u  p#[        [        5       [        U S95      nSn[        R                  " [        US9   UR                  X#5        SSS5        UR                  S	S
9  UR                  X#5      R                  U5        g! , (       d  f       N>= f)zeCheck the behaviour when `n_samples` < `n_features` and that one needs
to provide the noise variance.r   r      )rG   
n_featuresr&  r   zhYou are using LassoLarsIC in the case where the number of samples is smaller than the number of featuresrL   Nri   )lassolarsic__noise_variance)r%   rt   ru   r   make_regressionr   r   r   rN   rO   rP   r^   rX  r   )r   r|   r!   r"   ri  r2  s         r5   test_lassolarsic_noise_variancer~  R  s     ))


"C##m!3#DA .*Km,TUE	'  
z	1		! 
2 
5	IIaOA	 
2	1s   1B;;
C	)F)\r  numpyr%   rN   scipyr   sklearnr   r   sklearn.baser   sklearn.exceptionsr   sklearn.linear_modelr   r	   r
   r   r   r   !sklearn.linear_model._least_angler   sklearn.model_selectionr   sklearn.pipeliner   sklearn.preprocessingr   sklearn.utils._testingr   r   r   r   load_diabetesr   r   r   r!   r"   r&   r$   r9   rF   sizerG   r6   r:   rB   markparametrizerJ   rQ   rX   filterwarningsrc   rf   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r-  r4  r:  r;  r>  r@  rF  rO  rQ  r\  r^  ra  rm  float64rj  rr  rx  r~  r7  r;   r5   <module>r     s       *  1  B 4 * 0  !!#}}hoo1FF133NVVACC^FF	 <&$  E7#34u6 7 5:5 CD5 E5 CD= E=E:!!!" <$$l&9&9<;S;ST	A	A=0*"JB.A:,<*"<>3 '*8(J< %e,  3 )*1hT8n D%=1/ 2/ D%=1/ 2/ !6 ?@K AK(6

! 	tR	D"	eR 	r	dZO,
 2::rzz":;+ <
+ 	tR	D"	eR 	r	dZO,
T
T& uen5$ 6$ 4-8 9r;   