
    sgs                        d dl Z d dlZd dl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mZmZmZmZm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mZm Z   ejB                         Z"e"jF                  e"jH                  cZ%Z& ejN                  e%jP                  e%      Z) ejN                  e%jP                  e&      Z*e&jV                  Z,d Z-d Z.d Z/ej`                  jc                  dddg      ej`                  jc                  dddg      d               Z2d Z3d Z4ej`                  jk                  d      d        Z6ej`                  jk                  d      d        Z7d Z8d Z9d Z:d Z;ej`                  jc                  dej                  ej                  ej$                  g      d         Z<d! Z=d" Z>d# Z?d$ Z@d% ZAd& ZBd' ZCd( ZDdKd)ZEd* ZFd+ ZGd, ZHd- ZId. ZJd/ ZKd0diZLd1d2ii i d3ZMd4 ZNd5 ZOd6 ZPej`                  jc                  d7ddg      d8        ZQej`                  jc                  d7ddg      d9        ZRej`                  jc                  d: ed;<       e       f      d=        ZSd> ZTd? ZUej`                  jc                  d@edi fedi fedi fedi feddAdBiff      ej`                  jc                  dCej                  ej                  f      dD               ZXej`                  jc                  d@edi fedi fedi fedi feddAdBiff      dE        ZYej`                  jc                  dFdGdHg      dI        ZZej`                  jc                  d0ddg      dJ        Z[y)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                  z   dd l } ddlm} | j                  }	  |       | _        t	        j
                  t        t        dd      \  }}}|| _        t        |j                        D ]  \  }}t        t        j                  t        |      z
  }t        j                  t        j                  |      }t        j                  t        |            }	d}
t        ||	|
z
  t        |      k           }|t        j                  d   k  r||dz   k(  rJ |t        j                  d   k(  rJ  	 || _        y # || _        w xY w)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.12/site-packages/sklearn/linear_model/tests/test_least_angle.pytest_simpler6   %   s    J Z
'11!QubQ1j
!*,,/ 
	*HAubffQ&&C&&c"Cs3x ACs1s7SX-./D1771:~q1u}$} qwwqz)))
	*  
Z
s   C3D1 D1 %D1 1	D:c                     t        j                  t        t        t        d      \  } } }t        |j                        D ]  \  }}t        t        j                  t        |      z
  }t        j                  t        j                  |      }t        j                  t        |            }d}t        |||z
  t        |      k           }|t        j                  d   k  r||dz   k(  rJ |t        j                  d   k(  rJ  y )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+ 
&5"&&E""ffQSS#FF3s83q3wS)*+qwwqz>1q5= = 1771:%%%
&    c                 v    t        |       t        |      k(  sJ t        | |      D ]  \  }}t        ||        y )N)r)   zipr   )output1output2o1o2s       r5   _assert_same_lars_path_resultrB   U   s<    w<3w<'''gw'  BB r;   r   r   lassoreturn_pathTFc           
          t        t        j                  t        t        t
        | |      t        j                  t        t        t        | |             y )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   [   s=     "##Yv;	
 	q!!FT	r;   c                      t        j                  t        j                  t              } t        j                  t        d      5  t        j                  d t        d |        d d d        y # 1 sw Y   y xY w)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   sM    	QB	z)P	Q :tQTb9: : :s   A++A4c                  v   t        j                  t        j                  t              } t        j                  t        j                  t              }dD ]d  }t        j                  t        t        |      }t        j                  t        t        | ||      }t        ||      D ]  \  }}t        ||        f y )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   s    
qssAA	QB  5''1V<!++AqqRO
 4 	5MHc%h4	55r;   z%ignore: `rcond` parameter will changec                      dt         z  } t        j                  d      }|j                  | t               t
        j                  j                  | t              d   }t        |j                  |       y )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                      t        j                  t        t        d      \  } } }t        j
                  j                  t        t              d   }t        ||d d df          y )NrC   rS   r   )r   r   r!   r"   r%   r   r_   r   )r,   r-   rb   s      r5   test_lasso_gives_lstsq_solutionrf      sK     $--a7CAq*A&q)Jj*QU*;<r;   c                     t        j                  g dg dg dg      } t        j                  g d      }t         j                  j                  d      }t        }  |t
        j                        | |d      \  }}}t        j                  |      j                         rJ t        j                  | |d d df         |z
  }|d	z  j                         d
k  sJ d}|j                  |d      } t        j                  |      }t        j                  | |ddddddd	      \  }}}t        |t        j                  |             y )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0q//0AFAq*xx
#'')))vvaArE*+a/HaK$$$IAA
A#--		
Aq* j"--
*CDr;   c                      t        j                  t        t        d      \  } }}t        j                  t        t        dd      \  }}}t	        ||d d df          || d   k(  sJ y )Nr   rS   FrI   re   )r   r   r!   r"   r   alphas_r,   r-   alpha_coefs        r5   test_no_pathr      s^    )33AqGGQ
",,Q%USOFAtdJq"u$56WR[   r;   c                      t        j                  t        t        dt              \  } }}t        j                  t        t        dt        d      \  }}}t        ||d d df          || d   k(  sJ y )Nr   )r   r8   F)r   r8   rD   re   )r   r   r!   r"   r9   r   r   s        r5   test_no_path_precomputedr      sg    )33AqQOGQ
",,	1UOFAt dJq"u$56WR[   r;   c            	         dt         j                  z  t         j                  }} t        j                  | j
                  |       }t        j                  | j
                  |      }t        j                  | |d||d      \  }}}t        j                  | |d||dd      \  }}}t        ||d d df          ||d   k(  sJ y )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}}hooqA
qssAA	QB)33	1W!sGQ
 #,,	1W1sOFAt dJq"u$56WR[   r;   
classifierc                 F   t        j                  t        j                  t              } | |      } t	        |j
                        t        t              j                  }dD ]=  } | |      }|j                  t        t              j                  }t        ||d       ? y )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      sz    
 	qssAA

"C'sww'1-33H1 A
J/771a=&&!(Ha@Ar;   c                      t        j                  ddgddgg      } t        j                  ddg      }t        j                  | |      \  }}}t	        |j
                  ddgddgg       y )Nr   ri   r   )r%   rs   r   r   r   r$   )r`   y1r,   	coef_paths       r5   test_singular_matrixr      sb    	As8c3Z(	)B	1a&	B",,R4OAq)ikkQFQF+;<r;   c            	      R   g d} ddgddgddggg dg dg dgfD ]	  }t        j                  d      }|j                  ||       j                  }d	t	        j
                  | t        j                  ||      z
        d
z  z  dt	        j
                  |d      z  z   }t        j                  dd      }|j                  ||       j                  }d	t	        j
                  | t        j                  ||      z
        d
z  z  dt	        j
                  |d      z  z   }||dz  k  r
J  y )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 0 %%c*XXa^))
$v{{q*%%(
( v{{:q112 %**3D9 $$Q*00#v{{q(##(
( v{{8Q//0 &J////0r;   c                     dt         j                  z  } t        j                  | t        d      \  }}}t        j
                  dd      }t        |j                  |      D ]Q  \  }}|dk(  r||_        |j                  | t               t        j                  ||j                  z
        }|dk  rQJ  t        j                  dd	d
      D ]  }t        j                  |      j                  | t              }	t        j
                  |d      j                  | t              }
t        j                  |	j                  |
j                  z
        }|dk  rJ  t         j                  } | | j!                  d      z
  } | t        j                  j                  | d      z  } t        j                  | t        d      \  }}}t        j
                  dd      }t        |j                  |      D ]Q  \  }}|dk(  r||_        |j                  | t               t        j                  ||j                  z
        }|dk  rQJ  y )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FAz!!4@HJLL&) 16QA./t|| T8R0 %%E266q!<!!48<<QBkk$**tzz12Tzz	 	A	AEEqEMA	""A(221aHFAz!!4@HJLL&) 16QA./t||r;   c                     g d} t         j                  }| D ]  }t        j                  |t        d|      \  }}}t        j
                  dd      }|d   |_        |j                  |t               t        j                  |d d df   |j                  z
        }|dk  rJ  t         j                  t         j                  j                  d	
      z
  }|t        j                  j                  |d	
      z  }| D ]  }t        j                  |t        d|      \  }}}t        j
                  d      }|d   |_        |j                  |t               t        j                  |d d df   |j                  z
        }|dk  rJ  y )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   !  s]    !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                     t        j                         } | j                  t        t               t        j                  | j
                  d         }|j                  t        t               t        | j
                  d d |j
                         t        j                  t        j                  | j
                        dk        sJ y )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                     t         j                  j                  d      } d\  }}d}| j                  ||      }t        j                  |df      }t        j
                  d|      }| j                  |       |d | }t        j                  | j                  |d            | j                  |d      dz   z  ||<   t        j                  ||      }d}	||	 | j                  |j                   z  z  }|j                         }t        j                  ||d      \  }
}}t        j                  |||
d	
      \  }}}t        ||d       y )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 DAq	A		!QA
!QA
		!QAKKNRa5Dggcii1o&#((1a.1*<=AdG
q!AE177#	##A			A , 6 6q!G LKI$//1[dSA{Aia@r;   c                    	
 g dg dg dgg d
d		
fd} t        j                  	      }d}t        j                  t        |	      5  |j                  
       d d d        |j                  } | |      }t        j                  	d
      }|j                  
      j                  } | |      }||dz  k  sJ y # 1 sw Y   cxY w)N)@xDr   r   )g3#Ir   r   )r   r   r   )r   r   r   r   c                     ddt              z  z  t        j                  t        j                  |       z
        dz  z  t        j                  | d      z  z   S )Nri   rj   rm   r   )r)   r   r   r%   r&   )r   r!   r]   r"   s    r5   objective_functionzHtest_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J!*-H &&U=M  A&,,H)Ff
++++ s   CCc                  p   d} dt        j                  d| dz         t        j                  |       d d t         j                  f   z   z  }t        j                  d      j                  |t        j                  |             }t        j                  t        j                  |j                              sJ y )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                     t        j                  d|       }|j                  t        t               t        |j                  j                         d         dk(  sJ t        |j                        dk(  sJ y )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                  ^   t        j                  t        t        dz  g      j                  } | j                  d   }t        j                         t        j                         t        j                  d      t        j                  d      g}|D ]  }|j                  t        |        |j                  t              }|j                  |j                  |j                  |j                  f\  }}}}t        |      D ]  }	|j                  t        | d d |	f          |j                  t              }
t!        ||	   |j                         t!        ||	   |j                         t!        ||	   |j                         t!        ||	   |j                         t!        |d d |	f   |
         y )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    sc   
		1ad)A
I U3.J   <	a""1%OO  	&
"d y! 	<AMM!Qq!tW%&&q)F%fQi1B1BC%fQi1B1BC%d1gy?%d1gy/C/CD%fQTlF;	<<r;   c                  6   d} t        j                         }dD ]p  }t        j                  d | }t        j                  d | }|j                  ||       t        j                  j                  | |j                         |j                  } r t        |d      rJ y )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$Aq


$$Y?NN	# w 12222r;   c                 b   t        j                  d       t        j                  dd      5  t        j
                  }t        j                  }t        j                  j                  d      }|j                  t        |            }t        j
                  }t        j                  |||f   }t               j                  |      }t        j                  dd      }|j!                  ||       d d d        | D cg c]  }t#        |       }}t        |      dk(  sJ y # 1 sw Y   2xY wc c}w )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!Q'N**1-**A!<Aq	 *11AQ11 !Q&&&!	 	 2s   CD ;D, D)c                     t        j                  d      } t        j                  d      }t        j                  j	                  d      }t
        j                  }t        j                  ||j                  |j                  d   d      f   }t               j                  |      }| j                  |t               |j                  |t               t        j                  | j                        d   }t        j                  |j                        d   }| j                   |j                   kD  sJ t#        |      t#        |      k  sJ t        j$                  |      t
        j                  j                  d   k  sJ y )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                      t        t        t        d      } t        |       5 \  }}}}t	        ||||d       d d d        y # 1 sw Y   y xY w)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,    sN    
 %Q;M	M	" J&HwGWff5IJ J Js   AA
c                     d} t        j                  t        |       5  t        j                  t
        d   t
        d   dd       d d d        d}t        j                  t        t        d|d	
      \  }}}|j                         dk  sJ t        j                  t        t        d|d
      \  }}}|j                         dk\  sJ y # 1 sw Y   xY w)Nz:Positive constraint not supported for 'lar' coding method.rL   r   r   r   Tr   positiverC   F)rD   r   r/  r   )	rN   rO   rP   r   r   r   r!   r"   min)err_msgr   r,   coefss       r5   "test_lars_path_positive_constraintr3    s     KG	z	1 
Vhx0	


 F((	1$vKAq% 99;??((	1$vKAq% 99;!
 
s   (CCr   r]   r   r
   r   r   c                     ddi} ddii i d}|D ]  }| j                         }|j                  ||           t        t        |      d	ddi|}|j	                  t
        t               |j                  j                         dk  sJ  t        t        |      d	ddi|}|j	                  t
        t               t        |j                        dk\  rJ  y )
Nr   Fr]   r   r4  r/  r   T )	r&  updategetattrr   r^   r!   r"   r/   r0  )default_parameterestimator_parameter_mapestnameparamsr   s        r5   )test_estimatorclasses_positive_constraintr=  %  s     )%0 s^
 + )"'')-g672GL'2LELVL	a""$q(((2GL'2KDKFK	a9??#q((()r;   c                     dt         j                  z  } t        j                  | t        dd      \  }}}t        j
                  ddd      }t        |j                  |      D ]Q  \  }}|dk(  r||_        |j                  | t               t        j                  ||j                  z
        }|d	k  rQJ  t        j                  d
dd      D ]  }t        j                  d|d      j                  | t              }	t        j
                  d|dd      j                  | t              }
t        j                  |	j                  |
j                  z
        }|dk  rJ  t         j                  t         j                  j!                  d      z
  } | t        j                  j                  | d      z  } t        j                  | t        dd      \  }}}t        j
                  ddd      }t        |j                  d d |d d       D ]K  \  }}||_        |j                  | t               t        j                  ||j                  z
        }|d	k  rKJ  y )NrZ   rC   Tr.  Fr   )r   r   r/  r   rk   g333333?r   r   )r   r]   r/  )r   r]   r   r/  r   r   re   r   r   s               r5   $test_lasso_lars_vs_lasso_cd_positiver?  :  s    	
HMMA(221aRVWFAz!!4$OHJLL&) 16QA./t||" T8R0 %%ut

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

#a) 	 kk$**tzz12Tzz 	))q)11A	""A(221aRVWFAz!!4$OHJLL"%vcr{3 1QA./t||	r;   c                  `   t        j                  g d      } t        j                  g dg dg dg dg dg      }|j                  }t        j                  g dg dg d	g d
g dg      }t        j                  dd      }|j                  ||        |j                  }t        ||d       y )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_implementationrE  n  s    
 	RSA
$-7?I	
	A 	
A 	 LM2	
4	Al $--AUKA ++IaB7r;   rp   c                    t        | d      }t        j                  j                  d      }|j	                  ddd      }|j                         }|dddf   }|j                  ||       | t        j                  ||      k(  sJ y)zq
    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_behaviourrN    su     Fu=J
))


"C

1a"AVVXF	!Q$ANN1aR^^Av....r;   c                    t        d      }t        j                  j                  d      }|j	                  ddd      }|j                         }|dddf   }|j                  |||        | t        j                  ||      k(  sJ y)	zS
    Test that user input to .fit for copy_X overrides default __init__ value

    Fr   r   r   rG  Nrm   )rp   rH  rK  s         r5   #test_lasso_lars_fit_copyX_behaviourrP    sw     .J
))


"C

1a"AVVXF	!Q$ANN1aN'R^^Av....r;   estr   r\   c                    t        j                  g dg dg      }ddg}g d}| j                  d       t        |       j                  dd	      }| j	                  ||       |j	                  ||       t        j
                  | j                  |j                  z
  d
z        dkD  sJ t         j                  j                  |j                  |d       y )N)r[   r[   r[         r[   )r[   rS  r[   r[   r[   g      )r         @r   rT  r   Fr   gHz>r   )jitterr%  rm   r   r   )rtol)	r%   rs   
set_paramsr   r^   meanr/   r  r   )rQ  r!   r"   expected_coef
est_jitters        r5   test_lars_with_jitterr[    s    
 	,.HIJA	tA'M NNN's&&e!&DJGGAqMNN1a77CII
 0 00Q67#===JJz//TJr;   c                      t        j                  t        d      5  t        d t	        j
                  dg      d       d d d        y # 1 sw Y   y xY w)Nz$X cannot be None if Gram is not NonerL   r   T)r!   r"   r8   )rN   rO   rP   r   r%   rs   r6  r;   r5   test_X_none_gram_not_noner]    s<    	z)O	P 6DBHHaSM56 6 6s   #AAc                      t         j                  j                  d      } | j                  dd      }| j                  d      }|j	                         }t        j                  ||ddd       t        ||       y )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_gramr`    s_     ))


#CAAAvvxH1afT'JAx r;   zLARS, has_coef_path, argsrr   rn   dtypec                    t         j                  j                  d      }|j                  dd      j	                  |      }|j                  d      j	                  |      } | di |}|j                  ||       |j                  j                  |k(  sJ |r|j                  j                  |k(  sJ |j                  j                  |k(  sJ y )Nr   r   r   r6  )
r%   rt   ru   ry   astyper^   r/   ra  r-   
intercept_)LARShas_coef_pathargsra  r|   r!   r"   models           r5   test_lars_dtype_matchri    s     ))


"CQu%AE"AL4LE	IIaO;;%%%%%...!!U***r;   c                 :   d}d}t         j                  j                  d      }|j                  dd      }|j                  d      } | di |j	                  ||      } | di |j	                  |j                  t         j                        |j                  t         j                              }	t        |j                  |	j                  ||       |r#t        |j                  |	j                  ||       t        |j                  |	j                  ||       y )Ngh㈵>r   r   r   )rV  atolr6  )r%   rt   ru   ry   r^   rc  float32r   r/   r-   rd  )
re  rf  rg  rV  rk  r|   X_64y_64model_64model_32s
             r5   test_lars_numeric_consistencyrq  %  s     DD
))


"C88B?D88B<D|d|d+H|d|BJJ 7RZZ9PQHHNNHNNDI++X-@-@tRVWH'')<)<4dSr;   	criterionr  r  c                     t        t               t        |             }|j                  t        t
               t        j                  |d   j                        }|dk(  sJ y)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.
    )rr  re   r   N)	r   r   r   r^   r!   r"   r%   argmin
criterion_)rr  rh  best_alpha_selecteds      r5    test_lassolarsic_alpha_selectionrw  C  sL     .*K),LME	IIaO))E"I$8$89!###r;   c                    t         j                  j                  d      }t        j                  dd| z
  |      \  }}t        t               t        |             }d}t        j                  t        |      5  |j                  ||       ddd       |j                  d	
       |j                  ||      j                  |       y# 1 sw Y   =xY w)ziCheck 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^   rW  r   )r   r|   r!   r"   rh  r1  s         r5   test_lassolarsic_noise_variancer}  R  s     ))


"C##m!3#DAq .*Km,TUE	'  
z	1 		!Q 
5	IIaOA	 s   9C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,  r3  r9  r:  r=  r?  rE  rN  rP  r[  r]  r`  rl  float64ri  rq  rw  r}  r6  r;   r5   <module>r     s       *  1  B 4 * 0  "8!!#}}hoo1
BFF133NRVVACC^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;   