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,指定折數。
一個可迭代物件,產生 (訓練、測試) 分割作為索引陣列。
對於 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
會產生與使用GridSearchCV
和Lasso
模型進行超參數搜尋不同的結果。在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
fit
中sample_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
score
中sample_weight
參數的中繼資料路由。
- 傳回:
- self物件
更新後的物件。