
    Pis                        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j!                    Z"e"j#        e"j$        cZ%Z& ej'        e%j(        e%          Z) ej'        e%j(        e&          Z*e&j+        Z,d Z-d Z.d Z/ej0        1                    dddg          ej0        1                    dddg          d                         Z2d Z3d Z4ej0        5                    d          d             Z6ej0        5                    d          d             Z7d Z8d Z9d Z:d Z;ej0        1                    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j0        1                    d7ddg          d8             ZQej0        1                    d7ddg          d9             ZRej0        1                    d: ed;<           e            f          d=             ZSd> ZTd? ZUej0        1                    d@edi fedi fedi fedi feddAdBiff          ej0        1                    dCejV        ejW        f          dD                         ZXej0        1                    d@edi fedi fedi fedi feddAdBiff          dE             ZYej0        1                    dFdGdHg          dI             ZZej0        1                    d0ddg          dJ             Z[dS )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                     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    sJ |t          j        d         k    sJ 	 || _        d S # || _        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               /home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/sklearn/linear_model/tests/test_least_angle.pytest_simpler6   %   sC    JJJJ XZZ
'1!QubQQQ1j
!*,// 
	* 
	*HAubfQ&&&C&c""Cs3xx  ACs1s7SXX-.//D171:~~q1u}}}}} qwqz)))))
	*  


Z
s   DD: :	E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    sJ |t          j        d         k    sJ d S )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IIAq*jl++ 
& 
&5"&E"""fQS#F3s883q3wS)*++qwqz>>1q5===== 171:%%%%%
& 
&    c                     t          |           t          |          k    sJ t          | |          D ]\  }}t          ||           d S )N)r)   zipr   )output1output2o1o2s       r5   _assert_same_lars_path_resultrB   U   sY    w<<3w<<''''gw''    BB   r;   r   r   lassoreturn_pathTFc           
          t          t          j        t          t          t
          | |          t          j        t          t          t          | |                     d S )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TT	    r;   c                      t          j        t          j        t                    } t          j        t          d          5  t          j	        d t          d |            d d d            d S # 1 swxY w Y   d S )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   s    	QB	z)P	Q	Q	Q : :tQTb9999: : : : : : : : : : : : : : : : : :s    A++A/2A/c                  t   t          j        t          j        t                    } t          j        t          j        t                    }dD ]l}t          j        t          t          |          }t          j        t          t          | ||          }t          ||          D ]\  }}t          ||           md S )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    
qsAA	QB  5 5'1V<<<!+AqqROOO
 44 	5 	5MHc%h4444	55 5r;   z%ignore: `rcond` parameter will changec                      dt           z  } t          j        d          }|                    | t                     t
          j                            | t                    d         }t          |j	        |           d S )N           alphar   )
r!   r   r
   fitr"   r%   r   lstsqr   r/   )X1clf
coef_lstsqs      r5   test_lars_lstsqrc   y   sc     
QB

 s
+
+
+CGGBNNNQ''*Jci44444r;   c                      t          j        t          t          d          \  } } }t          j                            t          t                    d         }t          ||d d df                    d S )NrC   rS   r   )r   r   r!   r"   r%   r   r_   r   )r,   r-   rb   s      r5   test_lasso_gives_lstsq_solutionrf      s_     $-a7CCCAq*A&&q)Jj*QQQU*;<<<<<r;   c                     t          j        g dg dg dg          } t          j        g d          }t           j                            d          }t          }  |t
          j                  | |d          \  }}}t          j        |                                          rJ t          j	        | |d d df                   |z
  }|d	z  
                                d
k     sJ d}|                    |d          } t          j        |          }t          j        | |ddddddd	  	        \  }}}t          |t          j        |                     d S )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      sc   
///???MMMBCCA
A
)


"
"CA0qq/00AFFFAq*x
##'')))))vaAAArE*++a/HaK$$$$IAA
A#-		
 
 
Aq* j"-
*C*CDDDDDr;   c                      t          j        t          t          d          \  } }}t          j        t          t          dd          \  }}}t	          ||d d df                    || d         k    sJ d S )Nr   rS   FrI   re   )r   r   r!   r"   r   alphas_r,   r-   alpha_coefs        r5   test_no_pathr      sw    )3AqGGGGQ
",Q%USSSOFAtdJqqq"u$566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 d S )Nr   )r   r8   F)r   r8   rD   re   )r   r   r!   r"   r9   r   r   s        r5   test_no_path_precomputedr      s    )3AqQOOOGQ
",	1U  OFAt dJqqq"u$5666WR[      r;   c            	      n   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 d S )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}hoqA
qsAA	QB)3	1W!s  GQ
 #,	1W1s  OFAt dJqqq"u$5666WR[      r;   
classifierc                 P   t          j        t          j        t                    } | |          } t	          |j                  t          t                    j        }dD ]E} | |          }|                    t          t                    j        }t          ||d           Fd S )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      s    
 	qsAA
*
"
"
"C'sw''1--3H1 A A
jJ///771a==&!(Ha@@@@@A 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           d S )Nr   ri   r   )r%   rs   r   r   r   r$   )r`   y1r,   	coef_paths       r5   test_singular_matrixr      sn    	As8c3Z(	)	)B	1a&		B",R44OAq)ikQFQF+;<<<<<r;   c            	      >   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        }d	t	          j        | t          j        ||          z
            d
z  z  dt	          j        |d          z  z   }t          j        dd          }|                    ||           j        }d	t	          j        | t          j        ||          z
            d
z  z  dt	          j        |d          z  z   }||dz  k     sJ d S )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(;;;yyy*QR 0 0 %c**XXa^^)
$v{q*%%%(
 (
( v{:q1112 %*3D999 $$Q**0#v{q(###(
 (
( v{8Q///0 &J//////0 0r;   c                  l   dt           j        z  } t          j        | t          d          \  }}}t          j        dd          }t          |j        |          D ]R\  }}|dk    r||_        |	                    | t                     t          j        ||j        z
            }|dk     sJ St          j        dd	d
          D ]}t          j        |          	                    | t                    }	t          j        |d          	                    | t                    }
t          j        |	j        |
j        z
            }|dk     sJ t           j        } | |                     d          z
  } | t          j
                            | d          z  } t          j        | t          d          \  }}}t          j        dd          }t          |j        |          D ]R\  }}|dk    r||_        |	                    | t                     t          j        ||j        z
            }|dk     sJ Sd S )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    	
HMA(21aHHHFAz!4@@@HJL&))  166QA.//t||||| T8R00  %E22266q!<<!4888<<QBBk$*tz122Tzzzzz 	A	AEEqEMMA	"	""A(21aHHHFAz!4@@@HJL&))  166QA.//t||||| r;   c                     g d} t           j        }| D ]}t          j        |t          d|          \  }}}t          j        dd          }|d         |_        |                    |t                     t          j	        |d d df         |j
        z
            }|dk     sJ t           j        t           j                            d	
          z
  }|t          j        	                    |d	
          z  }| D ]}t          j        |t          d|          \  }}}t          j        d          }|d         |_        |                    |t                     t          j	        |d d df         |j
        z
            }|dk     sJ d S )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qI!
 !
 !
:  %EtDDDQJqqq"u->??t||||| 	))q)111A	"	""A  	 , 6qI!
 !
 !
:  %$///QJqqq"u->??t||||| r;   c                     t          j                    } |                     t          t                     t          j        | j        d                   }|                    t          t                     t          | j        d d         |j                   t          j        t          j	        | j                  dk               sJ d S )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OOO#%-*:;;;F
JJq!emBQB/@@@6"'%-((1,-------r;   c                     t           j                            d          } d\  }}d}|                     ||          }t          j        |df          }t          j        d|          }|                     |           |d |         }t          j        |                     |d                    |                     |d          dz   z  ||<   t          j	        ||          }d}	||	 | j        |j
         z  z  }|                                }t          j        ||d          \  }
}}t          j        |||
d	
          \  }}}t          ||d           d S )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  sA    )


#
#C DAq	A		!QA
!QA
	!QAKKNNNRaR5Dgcii1oo&&#((1a..1*<=AdG
q!AE17#	##A			A , 6q!G L L LKI$/1[dSS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  |                    
           d d d            n# 1 swxY w Y   |j        } | |          }t          j        	d
          }|                    
          j        } | |          }||dz  k     sJ d S )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  s`    cCFFl#fk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  sV    
...)))4AAE. . . . . . .
 !...D<O	(	@	@	@  A              J!!*--H &U===M  A&&,H))Ff
+++++++s   A11A58A5c                  b   d} dt          j        d| dz             t          j        |           d d t           j        f         z   z  }t          j        d                              |t          j        |                     }t          j        t          j        |j                            sJ d S )Nrn   ri   r   Fr   )	r%   r   newaxisr   r   r^   r   isfiniter/   )r   Hra   s      r5   test_lars_add_featuresr     s     	
AryAE""RYq\\!!!RZ-%@@AA

%
0
0
0
4
4Q	!
E
EC6"+ci(()))))))r;   c                 
   t          j        d|           }|                    t          t                     t          |j                                        d                   dk    sJ t          |j                  dk    sJ d S )N   )n_nonzero_coefsr   r      )	r   r   r^   r!   r"   r)   r/   nonzeror   )r   r   s     r5   test_lars_n_nonzero_coefsr     sw    Q@@@DHHQNNNtz!!##A&''1,,,, t|!!!!!!r;   c                  p   t          j        t          t          dz  g          j        } | j        d         }t          j                    t          j                    t          j        d          t          j        d          g}|D ].}|                    t          |            |
                    t                    }|j        |j        |j        |j        f\  }}}}t          |          D ]}	|                    t          | d d |	f                    |
                    t                    }
t!          ||	         |j                   t!          ||	         |j                   t!          ||	         |j                   t!          ||	         |j                   t!          |d d |	f         |
           Ȑ0d S )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    s   
	1ad)A
I  U333...J   < <	a""1%%O 	&
"d y!! 	< 	<AMM!Qqqq!tW%%%&&q))F%fQi1BCCC%fQi1BCCC%d1gy???%d1gy/CDDD%fQQQTlF;;;;	<< <r;   c                  2   d} t          j                    }dD ]l}t          j        d |         }t          j        d |         }|                    ||           t          j                            | |j	                   |j	        } mt          |d          rJ d S )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! # #M'6'"OGVG$Aq

$$Y???N		w 12222222r;   c                 Z   t          j        d           t          j        dd          5  t          j        }t          j        }t          j                            d          }|	                    t          |                    }t          j        }t          j        |||f         }t                                          |          }t          j        dd          }|                    ||           d d d            n# 1 swxY w Y   d | D             }t          |          dk    sJ d S )	Nalwaysraise)divideinvalidr   rn   )rr   cvc                 ,    g | ]}t          |          S  )str).0r   s     r5   
<listcomp>z)test_lars_cv_max_iter.<locals>.<listcomp>  s    111AQ111r;   r   )warningssimplefilterr%   errstater   r   r   rt   ru   r   r)   c_r   fit_transformr   r   r^   )recwarnr!   r"   r|   xr  recorded_warningss          r5   test_lars_cv_max_iterr    sG   (###	GW	5	5	5 	 	MOi##B''IIc!ffME!Q'N**1--*A!<<<Aq	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 21111 !!Q&&&&&&s   CC??DDc                     t          j        d          } t          j        d          }t          j                            d          }t
          j        }t          j        ||                    |j	        d         d          f         }t                                          |          }|                     |t                     |                    |t                     t          j        | j                  d         }t          j        |j                  d         }| j        |j        k    sJ t#          |          t#          |          k     sJ t          j        |          t
          j        j	        d         k     sJ d S )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'    s3   
 '..H'..H
)


#
#CA
a171:q)))*A&&q))ALLALLA(8>**1-K(8>**1-K?X_,,,,{c+......6+!4Q!7777777r;   c                      t          t          t          d          } t          |           5 \  }}}}t	          ||||d           d d d            d S # 1 swxY w Y   d S )Nr   )random_stateF)copy)r   r!   r"   r   r   )splitted_dataX_trainX_testy_trainy_tests        r5   test_lars_path_readonly_datar0    s    
 %Q;;;M	M	"	" J&HwGWff5IIIIJ J J J J J J J J J J J J J J J J Js   AAAc                     d} t          j        t          |           5  t          j        t
          d         t
          d         dd           d d d            n# 1 swxY w Y   d}t          j        t          t          d|d	
          \  }}}|                                dk     sJ t          j        t          t          d|d
          \  }}}|                                dk    sJ d S )Nz:Positive constraint not supported for 'lar' coding method.rL   r   r   r   Tr   positiverC   F)rD   r   r3  r   )	rN   rO   rP   r   r   r   r!   r"   min)err_msgr   r,   coefss       r5   "test_lars_path_positive_constraintr7    s0    KG	z	1	1	1 
 
Vhx0	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

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

#a)) 	 k$*tz122Tzzzzz 	))q)111A	"	""A(21aRVWWWFAz!4$OOOHJL"%vcrc{33  1QA.//t|||||	 r;   c                  V   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        }t          ||d           d S )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_implementationrH  n  s   
 	RRRSSA
$$$---777???III	
	 	A 	
A 	   LKK      M2	
4	 4	Al $-AUKKKA +IaB777777r;   rp   c                 6   t          | d          }t          j                            d          }|                    ddd          }|                                }|dddf         }|                    ||           | t          j        ||          k    sJ dS )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_behaviourrQ    s     Fu===J
)


"
"C

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

    Fr   r   r   rJ  Nrm   )rp   rK  rN  s         r5   #test_lasso_lars_fit_copyX_behaviourrS    s     ...J
)


"
"C

1a""AVVXXF	!!!Q$ANN1aN'''R^Av........r;   estr   r\   c                    t          |           } t          j        g dg dg          }ddg}g d}|                     d           t          |                               dd	          }|                     ||           |                    ||           t          j        | j        |j        z
  d
z            dk    sJ t          j                            |j        |d           d S )N)r[   r[   r[         r[   )r[   rV  r[   r[   r[   g      )r         @r   rW  r   Fr   gHz>r   )jitterr)  rm   r   r   )rtol)	r   r%   rs   
set_paramsr^   meanr/   r  r   )rT  r!   r"   expected_coef
est_jitters        r5   test_lars_with_jitterr^    s    
**C 	,,,.H.H.HIJJA	tA'''M NNN'''s&&e!&DDJGGAqMMMNN1a7CI
 00Q677#====Jz/TJJJJJr;   c                      t          j        t          d          5  t          d t	          j        dg          d           d d d            d S # 1 swxY w Y   d S )Nz$X cannot be None if Gram is not NonerL   r   T)r!   r"   r8   )rN   rO   rP   r   r%   rs   r  r;   r5   test_X_none_gram_not_noner`    s    	z)O	P	P	P 6 6DBHaSMM55556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   &AAAc                     t           j                            d          } |                     dd          }|                     d          }|                                }t          j        ||ddd           t          ||           d S )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_gramrc    sx     )


#
#CAAAvvxxH1afT'JJJJAx     r;   zLARS, has_coef_path, argsrr   rn   dtypec                    t           j                            d          }|                    dd                              |          }|                    d                              |          } | di |}|                    ||           |j        j        |k    sJ |r|j        j        |k    sJ |j	        j        |k    sJ d S )Nr   r   r   r  )
r%   rt   ru   ry   astyper^   r/   rd  r-   
intercept_)LARShas_coef_pathargsrd  r|   r!   r"   models           r5   test_lars_dtype_matchrl    s     )


"
"CQu%%AE""ADLL4LLE	IIaOOO;%%%% /%....!U******r;   c                 8   d}d}t           j                            d          }|                    dd          }|                    d          } | di |                    ||          } | di |                    |                    t           j                  |                    t           j                            }	t          |j        |	j        ||           |rt          |j	        |	j	        ||           t          |j
        |	j
        ||           d S )Ngh㈵>r   r   r   )rY  atolr  )r%   rt   ru   ry   r^   rf  float32r   r/   r-   rg  )
rh  ri  rj  rY  rn  r|   X_64y_64model_64model_32s
             r5   test_lars_numeric_consistencyrt  &  s    DD
)


"
"C88B??D88B<<Dt||d||d++Ht||d||BJ 7 7RZ9P9PQQHHNHNDIIII X+X-@tRVWWWWH')<4dSSSSSSr;   	criterionr!  r   c                     t          t                      t          |                     }|                    t          t
                     t          j        |d         j                  }|dk    sJ dS )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.
    )ru  re   r   N)	r   r   r   r^   r!   r"   r%   argmin
criterion_)ru  rk  best_alpha_selecteds      r5    test_lassolarsic_alpha_selectionrz  D  sc     .**K),L,L,LMME	IIaOOO)E"I$899!######r;   c                    t           j                            d          }t          j        dd| z
  |          \  }}t          t                      t          |                     }d}t          j	        t          |          5  |                    ||           ddd           n# 1 swxY w Y   |                    d	
           |                    ||                              |           dS )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^   rZ  r   )r   r|   r!   r"   rk  r5  s         r5   test_lassolarsic_noise_variancer  S  s(    )


"
"C#m!3#  DAq .**Km,T,T,TUUE	'  
z	1	1	1  		!Q               
555	IIaOOAs   B''B+.B+)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'  r0  r7  r<  r=  r@  rB  rH  rQ  rS  r^  r`  rc  ro  float64rl  rt  rz  r  r  r;   r5   <module>r     s               * * * * * * * *       1 1 1 1 1 1                B A A A A A 4 4 4 4 4 4 * * * * * * 0 0 0 0 0 0            "8!##}ho1
BF13NNRVAC^^F	     <& & &$      E7#344u66  76 54: : :5 5 5 CDD5 5 ED5 CDD= = ED=E E E:! ! !! ! !! ! !" <$l&9<;ST 	A 	A 	A= = =0 0 0*" " "J  B. . .A A A:, , ,<* * *" " " "< < <>3 3 3 ' ' '*8 8 8(J J J  < %e,  3  ) ) )*1 1 1hT8 T8 T8n D%=11/ / 21/ D%=11/ / 21/ !6!6!6 ?@@K K A@K*6 6 6

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