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

lars_path

Lasso

使用 LARS 演算法計算最小角度迴歸或 Lasso 路徑。

LassoLars

Lasso

LassoCV

Lasso 是一個估計稀疏係數的線性模型。

LassoLarsCV

LassoLars

使用最小角度迴歸 (Lars) 擬合的 Lasso 模型。

LassoCV

沿著正規化路徑進行迭代擬合的 Lasso 線性模型。

LassoLarsCV

使用 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]]
為了避免不必要的記憶體複製,fit 方法的 X 引數應直接以 Fortran 連續的 numpy 陣列傳遞。