LassoCV#

class sklearn.linear_model.LassoCV(*, eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, precompute='auto', max_iter=1000, tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=None, positive=False, random_state=None, selection='cyclic')[原始碼]#

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

請參閱 交叉驗證估計器 的詞彙條目。

最佳模型通過交叉驗證選出。

Lasso 的優化目標是:

(1 / (2 * n_samples)) * ||y - Xw||^2_2 + alpha * ||w||_1

請在 使用者指南 中閱讀更多內容。

參數:
epsfloat,預設值=1e-3

路徑的長度。 eps=1e-3 表示 alpha_min / alpha_max = 1e-3

n_alphasint,預設值=100

沿正規化路徑的 alpha 數量。

alphasarray-like,預設值=None

計算模型的 alpha 列表。如果為 None,則會自動設定 alpha。

fit_interceptbool,預設值=True

是否計算此模型的截距。如果設定為 False,則計算中不會使用截距(即資料預期會是置中的)。

precompute‘auto’、bool 或形狀為 (n_features, n_features) 的 array-like,預設值=’auto’

是否使用預先計算的 Gram 矩陣來加速計算。如果設定為 'auto',則由我們決定。Gram 矩陣也可以作為參數傳遞。

max_iterint,預設值=1000

最大迭代次數。

tolfloat,預設值=1e-4

優化的容忍度:如果更新小於 tol,則優化程式碼會檢查對偶間隙是否達到最佳化,並持續直到小於 tol

copy_Xbool,預設值=True

如果為 True,則會複製 X;否則,可能會覆寫 X。

cvint、交叉驗證產生器或可迭代物件,預設值=None

決定交叉驗證分割策略。cv 可能的輸入為:

  • None,使用預設的 5 折交叉驗證。

  • int,指定折數。

  • CV 分割器,

  • 一個可迭代物件,產生 (訓練、測試) 分割作為索引陣列。

對於 int/None 輸入,會使用 KFold

請參閱 使用者指南,了解此處可以使用的各種交叉驗證策略。

在 0.22 版本中變更:如果 None 的 cv 預設值從 3 折變更為 5 折。

verbosebool 或 int,預設值=False

詳細程度。

n_jobsint,預設值=None

交叉驗證期間要使用的 CPU 數量。 None 表示 1,除非在 joblib.parallel_backend 內容中。 -1 表示使用所有處理器。請參閱 詞彙表 以取得更多詳細資訊。

positivebool,預設值=False

如果為 positive,則將迴歸係數限制為正數。

random_stateint、RandomState 實例,預設值=None

選取要更新的隨機特徵的虛擬隨機數字產生器的種子。當 selection == ‘random’ 時使用。傳遞一個 int 以在多個函式呼叫中產生可重複的輸出。請參閱 詞彙表

selection{‘cyclic’, ‘random’},預設值=’cyclic’

如果設定為 ‘random’,則每次迭代都會更新隨機係數,而不是預設依序迴圈處理特徵。這(設定為 ‘random’)通常會導致更快的收斂,尤其是在 tol 高於 1e-4 時。

屬性:
alpha_float

由交叉驗證選擇的懲罰量。

coef_形狀為 (n_features,) 或 (n_targets, n_features) 的 ndarray

參數向量(成本函數公式中的 w)。

intercept_float 或形狀為 (n_targets,) 的 ndarray

決策函數中的獨立項。

mse_path_形狀為 (n_alphas, n_folds) 的 ndarray

每個折疊測試集的均方誤差,隨著 alpha 的變化而變化。

alphas_形狀為 (n_alphas,) 的 ndarray

用於擬合的 alpha 網格。

dual_gap_float 或形狀為 (n_targets,) 的 ndarray

最佳 alpha (alpha_) 的優化結束時的對偶間隙。

n_iter_int

座標下降求解器為了達到指定最佳 alpha 容忍度而運行的迭代次數。

n_features_in_int

fit 過程中看到的特徵數量。

在 0.24 版本中新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 過程中看到的特徵名稱。僅當 X 具有全部為字串的特徵名稱時才會定義。

在 1.0 版本中新增。

參見

lars_path

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

lasso_path

使用座標下降法計算 Lasso 路徑。

Lasso

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

LassoLars

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

LassoCV

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

LassoLarsCV

使用 LARS 演算法進行交叉驗證的 Lasso。

註解

fit 中,一旦通過交叉驗證找到最佳參數 alpha,模型會再次使用整個訓練集進行擬合。

為了避免不必要的記憶體重複,fit 方法的 X 參數應直接作為 Fortran 連續的 NumPy 陣列傳遞。

例如,請參閱 examples/linear_model/plot_lasso_model_selection.py

LassoCV 會產生與使用 GridSearchCVLasso 模型進行超參數搜尋不同的結果。在 LassoCV 中,給定懲罰 alpha 的模型會使用正規化路徑上最接近模型(在前一次迭代中訓練)的係數進行暖啟動。這往往會加速超參數搜尋。

範例

>>> from sklearn.linear_model import LassoCV
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(noise=4, random_state=0)
>>> reg = LassoCV(cv=5, random_state=0).fit(X, y)
>>> reg.score(X, y)
0.9993...
>>> reg.predict(X[:1,])
array([-78.4951...])
fit(X, y, sample_weight=None, **params)[原始碼]#

使用座標下降法擬合 Lasso 模型。

擬合是在 alpha 網格上進行的,並且最佳 alpha 是通過交叉驗證估計的。

參數:
X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣

訓練資料。直接作為 Fortran 連續資料傳遞,以避免不必要的記憶體重複。如果 y 是單輸出,則 X 可以是稀疏的。請注意,不接受需要 int64 索引的大型稀疏矩陣和陣列。

y形狀為 (n_samples,) 的類陣列

目標值。

sample_weightfloat 或形狀為 (n_samples,) 的類陣列,預設值為 None

用於擬合和評估每個 cv 折疊加權均方誤差的樣本權重。請注意,最終用於找到最佳模型的交叉驗證 MSE 是每個測試折疊(加權)MSE 的無權重平均值。

**params字典,預設值為 None

要傳遞給 CV 分割器的參數。

在 1.4 版本中新增: 僅當 enable_metadata_routing=True 時可用,可以使用 sklearn.set_config(enable_metadata_routing=True) 設定。請參閱 Metadata Routing 使用者指南 以了解更多詳細資訊。

傳回:
self物件

傳回已擬合模型的實例。

get_metadata_routing()[原始碼]#

取得此物件的元資料路由。

請檢查 使用者指南,了解路由機制如何運作。

在 1.4 版本中新增。

傳回:
routingMetadataRouter

一個封裝路由資訊的 MetadataRouter

get_params(deep=True)[原始碼]#

取得此估計器的參數。

參數:
deepbool,預設值為 True

如果為 True,將傳回此估計器和包含的子物件(也是估計器)的參數。

傳回:
paramsdict

參數名稱對應到其值的字典。

static 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形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣

訓練資料。直接以 Fortran 相鄰的資料傳遞,以避免不必要的記憶體重複。如果 y 是單一輸出,則 X 可以是稀疏矩陣。

y形狀為 (n_samples,) 或 (n_samples, n_targets) 的類陣列 (array-like) 或稀疏矩陣

目標值。

epsfloat,預設值=1e-3

路徑的長度。 eps=1e-3 表示 alpha_min / alpha_max = 1e-3

n_alphasint,預設值=100

沿正規化路徑的 alpha 數量。

alphasarray-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_Xbool,預設值=True

如果為 True,則會複製 X;否則,可能會覆寫 X。

coef_init形狀為 (n_features, ) 的類陣列 (array-like),預設值為 None

係數的初始值。

verbosebool 或 int,預設值=False

詳細程度。

return_n_iterbool,預設值為 False

是否返回迭代次數。

positivebool,預設值=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_itersint 的列表

座標下降優化器達到每個 alpha 指定容差所需的迭代次數。

參見

lars_path

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

Lasso

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

LassoLars

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

LassoCV

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

LassoLarsCV

使用 LARS 演算法進行交叉驗證的 Lasso。

sklearn.decomposition.sparse_encode

可用於將訊號轉換為固定原子稀疏線性組合的估算器。

註解

例如,請參閱examples/linear_model/plot_lasso_lasso_lars_elasticnet_path.py

為了避免不必要的記憶體重複,fit 方法的 X 參數應直接作為 Fortran 相鄰的 NumPy 陣列傳遞。

請注意,在某些情況下,Lars 求解器可以更快地實現此功能。特別是,可以使用線性插值來檢索 lars_path 輸出值之間的模型係數。

範例

比較 lasso_path 和 lars_path 與插值

>>> 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]]
predict(X)[來源]#

使用線性模型進行預測。

參數:
X類陣列 (array-like) 或稀疏矩陣,形狀 (n_samples, n_features)

樣本。

傳回:
C陣列,形狀 (n_samples,)

返回預測值。

score(X, y, sample_weight=None)[來源]#

返回預測的判定係數。

判定係數 \(R^2\) 定義為 \((1 - \frac{u}{v})\),其中 \(u\) 是殘差平方和 ((y_true - y_pred)** 2).sum(),而 \(v\) 是總平方和 ((y_true - y_true.mean()) ** 2).sum()。最佳分數為 1.0,且可能為負值 (因為模型可能任意差)。始終預測 y 的期望值的常數模型,將忽略輸入特徵,獲得的 \(R^2\) 分數為 0.0。

參數:
X形狀為 (n_samples, n_features) 的類陣列 (array-like)

測試樣本。對於某些估算器,這可能是預先計算的核矩陣,或形狀為 (n_samples, n_samples_fitted) 的通用物件列表,其中 n_samples_fitted 是估算器擬合中使用的樣本數。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like)

X 的真實值。

sample_weight形狀為 (n_samples,) 的類陣列 (array-like),預設值為 None

樣本權重。

傳回:
scorefloat

self.predict(X) 相對於 y\(R^2\)

註解

在回歸器上呼叫 score 時使用的 \(R^2\) 分數從版本 0.23 開始使用 multioutput='uniform_average',以與 r2_score 的預設值保持一致。這會影響所有多輸出回歸器的 score 方法 (除了 MultiOutputRegressor)。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LassoCV[原始碼]#

請求傳遞至 fit 方法的中繼資料。

請注意,此方法僅在 enable_metadata_routing=True 時才相關(請參閱 sklearn.set_config)。請參閱關於路由機制如何運作的使用者指南

每個參數的選項為

  • True:請求中繼資料,如果提供,則傳遞至 fit。如果未提供中繼資料,則會忽略請求。

  • False:不請求中繼資料,並且 meta-estimator 不會將其傳遞至 fit

  • None:不請求中繼資料,如果使用者提供,meta-estimator 會引發錯誤。

  • str:中繼資料應使用給定的別名(而不是原始名稱)傳遞至 meta-estimator。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您變更某些參數的請求,而其他參數則不變。

新增於版本 1.3。

注意

僅當此估算器用作 meta-estimator 的子估算器時,此方法才相關,例如在 Pipeline 中使用。否則它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

fitsample_weight 參數的中繼資料路由。

傳回:
self物件

更新後的物件。

set_params(**params)[原始碼]#

設定此估算器的參數。

此方法適用於簡單估算器以及巢狀物件(例如 Pipeline)。後者具有 <component>__<parameter> 形式的參數,因此可以更新巢狀物件的每個元件。

參數:
**paramsdict

估算器參數。

傳回:
self估算器實例

估算器實例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') LassoCV[原始碼]#

請求傳遞至 score 方法的中繼資料。

請注意,此方法僅在 enable_metadata_routing=True 時才相關(請參閱 sklearn.set_config)。請參閱關於路由機制如何運作的使用者指南

每個參數的選項為

  • True:請求中繼資料,如果提供,則傳遞至 score。如果未提供中繼資料,則會忽略請求。

  • False:不請求中繼資料,並且 meta-estimator 不會將其傳遞至 score

  • None:不請求中繼資料,如果使用者提供,meta-estimator 會引發錯誤。

  • str:中繼資料應使用給定的別名(而不是原始名稱)傳遞至 meta-estimator。

預設值 (sklearn.utils.metadata_routing.UNCHANGED) 會保留現有的請求。這允許您變更某些參數的請求,而其他參數則不變。

新增於版本 1.3。

注意

僅當此估算器用作 meta-estimator 的子估算器時,此方法才相關,例如在 Pipeline 中使用。否則它沒有任何作用。

參數:
sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

scoresample_weight 參數的中繼資料路由。

傳回:
self物件

更新後的物件。