lars_path#
- sklearn.linear_model.lars_path(X, y, Xy=None, *, Gram=None, max_iter=500, alpha_min=0, method='lar', copy_X=True, eps=np.float64(2.220446049250313e-16), copy_Gram=True, verbose=0, return_path=True, return_n_iter=False, positive=False)[原始碼]#
使用 LARS 演算法計算最小角度迴歸或 Lasso 路徑。
當 method='lasso' 時,最佳化目標為
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
當 method='lar' 時,目標函式僅以隱式方程式的形式得知(請參閱 [1] 中的討論)。
在使用者指南中閱讀更多內容。
- 參數:
- XNone 或形狀為 (n_samples, n_features) 的 ndarray
輸入資料。如果 X 為
None
,則 Gram 也必須為None
。如果僅有 Gram 矩陣可用,請改用lars_path_gram
。- yNone 或形狀為 (n_samples,) 的 ndarray
輸入目標。
- Xy形狀為 (n_features,) 的類陣列,預設為 None
Xy = X.T @ y
,可以預先計算。僅當預先計算 Gram 矩陣時才有用。- GramNone、'auto'、bool、形狀為 (n_features, n_features) 的 ndarray,預設為 None
預先計算的 Gram 矩陣
X.T @ X
,如果為'auto'
,則當樣本數多於特徵數時,會從給定的 X 預先計算 Gram 矩陣。- max_iterint,預設為 500
要執行的最大疊代次數,設定為無限大則沒有限制。
- alpha_minfloat,預設為 0
沿路徑的最小相關性。它對應於 Lasso 中的正規化參數
alpha
。- method{'lar'、'lasso'},預設為 'lar'
指定傳回的模型。選擇
'lar'
以用於最小角度迴歸,選擇'lasso'
以用於 Lasso。- copy_Xbool,預設為 True
如果為
False
,則X
會被覆寫。- epsfloat,預設為 np.finfo(float).eps
Cholesky 對角線因數計算中的機器精確度正規化。對於病態系統,請增加此值。與某些基於疊代的最佳化演算法中的
tol
參數不同,此參數不會控制最佳化的容差。- copy_Grambool,預設為 True
如果為
False
,則Gram
會被覆寫。- verboseint,預設為 0
控制輸出詳細程度。
- return_pathbool,預設為 True
如果為
True
,則傳回整個路徑,否則僅傳回路徑的最後一個點。- return_n_iterbool,預設為 False
是否傳回疊代次數。
- positivebool,預設為 False
限制係數必須 >= 0。此選項僅允許使用方法 'lasso'。請注意,對於小的 alpha 值,模型係數不會收斂到普通最小平方解。只有逐步 Lars-Lasso 演算法達到的最小 alpha 值(當 fit_path=True 時,
alphas_[alphas_ > 0.].min()
)之前的係數通常與座標下降lasso_path
函式的解一致。
- 傳回:
- alphas形狀為 (n_alphas + 1,) 的 ndarray
每次疊代時的共變異數最大值(絕對值)。
n_alphas
要嘛是max_iter
、n_features
,要嘛是路徑中alpha >= alpha_min
的節點數,以較小者為準。- active形狀為 (n_alphas,) 的 ndarray
路徑結尾處的活動變數的索引。
- coefs形狀為 (n_features, n_alphas + 1) 的 ndarray
沿路徑的係數。
- n_iterint
執行的疊代次數。僅當
return_n_iter
設定為 True 時才會傳回。
另請參閱
lars_path_gram
在充分統計模式下計算 LARS 路徑。
lasso_path
使用座標下降計算 Lasso 路徑。
LassoLars
使用最小角度迴歸 (又稱 Lars) 擬合的 Lasso 模型。
Lars
最小角度迴歸模型 (又稱 LAR)。
LassoLarsCV
交叉驗證的 Lasso,使用 LARS 演算法。
LarsCV
交叉驗證的最小角度迴歸模型。
sklearn.decomposition.sparse_encode
稀疏編碼。
參考文獻
範例
>>> from sklearn.linear_model import lars_path >>> from sklearn.datasets import make_regression >>> X, y, true_coef = make_regression( ... n_samples=100, n_features=5, n_informative=2, coef=True, random_state=0 ... ) >>> true_coef array([ 0. , 0. , 0. , 97.9..., 45.7...]) >>> alphas, _, estimated_coef = lars_path(X, y) >>> alphas.shape (3,) >>> estimated_coef array([[ 0. , 0. , 0. ], [ 0. , 0. , 0. ], [ 0. , 0. , 0. ], [ 0. , 46.96..., 97.99...], [ 0. , 0. , 45.70...]])