lasso_path#
- sklearn.linear_model.lasso_path(X, y, *, eps=0.001, n_alphas=100, alphas=None, precompute='auto', Xy=None, copy_X=True, coef_init=None, verbose=False, return_n_iter=False, positive=False, **params)[原始碼]#
使用座標下降法計算 Lasso 路徑。
Lasso 的最佳化函式會根據單輸出和多輸出而有所不同。
對於單輸出任務,它是:
(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1
對於多輸出任務,它是:
(1 / (2 * n_samples)) * ||Y - XW||^2_Fro + alpha * ||W||_21
其中
||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}
即每個列的範數總和。
請在使用者指南中閱讀更多資訊。
- 參數:
- X{類陣列 (array-like), 稀疏矩陣},形狀為 (n_samples, n_features)
訓練資料。直接傳遞 Fortran 連續資料以避免不必要的記憶體複製。如果
y
是單輸出,則X
可以是稀疏的。- y{類陣列 (array-like), 稀疏矩陣},形狀為 (n_samples,) 或 (n_samples, n_targets)
目標值。
- eps浮點數 (float),預設值=1e-3
路徑的長度。
eps=1e-3
表示alpha_min / alpha_max = 1e-3
。- n_alphas整數 (int),預設值=100
沿著正規化路徑的 alpha 數量。
- alphas類陣列 (array-like),預設值=None
計算模型時的 alpha 列表。如果
None
,則會自動設定 alpha 值。- precompute‘auto’,布林值 (bool) 或形狀為 (n_features, n_features) 的類陣列 (array-like),預設值='auto'
是否使用預先計算的 Gram 矩陣來加速計算。如果設定為
'auto'
,則由程式決定。Gram 矩陣也可以作為參數傳遞。- Xy形狀為 (n_features,) 或 (n_features, n_targets) 的類陣列 (array-like),預設值=None
Xy = np.dot(X.T, y),可以預先計算。僅在預先計算 Gram 矩陣時才有用。
- copy_X布林值 (bool),預設值=True
如果為
True
,則會複製 X;否則可能會被覆寫。- coef_init形狀為 (n_features, ) 的類陣列 (array-like),預設值=None
係數的初始值。
- verbose布林值 (bool) 或整數 (int),預設值=False
詳細程度。
- return_n_iter布林值 (bool),預設值=False
是否傳回迭代次數。
- positive布林值 (bool),預設值=False
如果設定為 True,則強制係數為正值。(僅在
y.ndim == 1
時允許)。- **paramskwargs
傳遞給座標下降求解器的關鍵字參數。
- 傳回值:
- alphas形狀為 (n_alphas,) 的 ndarray
模型計算路徑上的 alpha 值。
- coefs形狀為 (n_features, n_alphas) 或 (n_targets, n_features, n_alphas) 的 ndarray
路徑上的係數。
- dual_gaps形狀為 (n_alphas,) 的 ndarray
每個 alpha 最佳化結束時的對偶間隙。
- n_iters整數列表 (list of int)
座標下降最佳化器達到每個 alpha 的指定容差所採取的迭代次數。
另請參閱
lars_path
Lasso
使用 LARS 演算法計算最小角度迴歸或 Lasso 路徑。
LassoLars
LassoCV
Lasso 是一個估計稀疏係數的線性模型。
LassoLarsCV
使用最小角度迴歸 (Lars) 擬合的 Lasso 模型。
沿著正規化路徑進行迭代擬合的 Lasso 線性模型。
使用 LARS 演算法的交叉驗證 Lasso。
sklearn.decomposition.sparse_encode
範例
可以用於將訊號轉換為固定原子稀疏線性組合的估算器。
>>> import numpy as np >>> from sklearn.linear_model import lasso_path >>> X = np.array([[1, 2, 3.1], [2.3, 5.4, 4.3]]).T >>> y = np.array([1, 2, 3.1]) >>> # Use lasso_path to compute a coefficient path >>> _, coef_path, _ = lasso_path(X, y, alphas=[5., 1., .5]) >>> print(coef_path) [[0. 0. 0.46874778] [0.2159048 0.4425765 0.23689075]]
>>> # Now use lars_path and 1D linear interpolation to compute the >>> # same path >>> from sklearn.linear_model import lars_path >>> alphas, active, coef_path_lars = lars_path(X, y, method='lasso') >>> from scipy import interpolate >>> coef_path_continuous = interpolate.interp1d(alphas[::-1], ... coef_path_lars[:, ::-1]) >>> print(coef_path_continuous([5., 1., .5])) [[0. 0. 0.46915237] [0.2159048 0.4425765 0.23668876]]