多任務套索交叉驗證 (MultiTaskLassoCV)#
- class sklearn.linear_model.MultiTaskLassoCV(*, eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, max_iter=1000, tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=None, random_state=None, selection='cyclic')[來源]#
使用 L1/L2 混合範數作為正規化器的多任務 Lasso 模型。
請參閱 交叉驗證估計器 的詞彙表條目。
MultiTaskLasso 的最佳化目標為
(1 / (2 * n_samples)) * ||Y - XW||^Fro_2 + alpha * ||W||_21
其中
||W||_21 = \sum_i \sqrt{\sum_j w_{ij}^2}
也就是每個列的範數總和。
在使用者指南中閱讀更多資訊。
於 0.15 版本新增。
- 參數:
- epsfloat,預設值為 1e-3
路徑長度。
eps=1e-3
表示alpha_min / alpha_max = 1e-3
。- n_alphasint,預設值為 100
沿正規化路徑的 alpha 數量。
- alphasarray-like,預設值為 None
計算模型的 alpha 列表。如果未提供,則自動設定。
- fit_interceptbool,預設值為 True
是否計算此模型的截距。如果設定為 false,則計算中不會使用截距(即,預期資料為中心化)。
- max_iterint,預設值為 1000
最大迭代次數。
- tolfloat,預設值為 1e-4
最佳化的容差:如果更新小於
tol
,最佳化程式碼會檢查對偶間隙是否達到最佳,並持續執行直到它小於tol
。- copy_Xbool,預設值為 True
如果
True
,則會複製 X;否則,可能會覆寫它。- cvint、交叉驗證產生器或可迭代物件,預設值為 None
決定交叉驗證分割策略。cv 的可能輸入為
None,使用預設的 5 折交叉驗證,
int,指定折數。
一個產生 (train, test) 分割作為索引陣列的可迭代物件。
對於 int/None 輸入,會使用
KFold
。請參考使用者指南,以了解此處可以使用的各種交叉驗證策略。
在 0.22 版本中變更:如果 cv 為 None,預設值從 3 折變更為 5 折。
- verbosebool 或 int,預設值為 False
詳細程度。
- n_jobsint,預設值為 None
交叉驗證期間要使用的 CPU 數量。請注意,只有在提供 l1_ratio 的多個值時才會使用此值。
None
表示 1,除非在joblib.parallel_backend
內容中。-1
表示使用所有處理器。請參閱詞彙表以了解更多詳細資訊。- random_stateint、RandomState 實例,預設值為 None
偽隨機數產生器的種子,用於選擇要更新的隨機特徵。當
selection
== 'random' 時使用。傳遞一個 int 以在多個函式呼叫中產生可重複的輸出。請參閱詞彙表。- selection{‘cyclic’, ‘random’},預設值為 ‘cyclic’
如果設定為 'random',則每次迭代都會更新一個隨機係數,而不是預設依序循環處理特徵。這(設定為 'random')通常會導致顯著更快的收斂,尤其是在 tol 高於 1e-4 時。
- 屬性:
- intercept_形狀為 (n_targets,) 的 ndarray
決策函式中的獨立項。
- coef_形狀為 (n_targets, n_features) 的 ndarray
參數向量(成本函式公式中的 W)。請注意,
coef_
儲存W
的轉置,W.T
。- alpha_float
交叉驗證選擇的懲罰量。
- mse_path_形狀為 (n_alphas, n_folds) 的 ndarray
每個折疊的測試集均方誤差,隨著 alpha 值變化。
- alphas_形狀為 (n_alphas,) 的 ndarray
用於擬合的 alpha 值網格。
- n_iter_int
坐標下降求解器為達到最佳 alpha 值的指定容差而運行的迭代次數。
- dual_gap_float
最佳 alpha 值優化結束時的對偶間隙。
- n_features_in_int
在 fit 期間看到的特徵數量。
在版本 0.24 中加入。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在 fit 期間看到的特徵名稱。僅當
X
具有全部為字串的特徵名稱時才定義。在版本 1.0 中加入。
另請參閱
MultiTaskElasticNet
以 L1/L2 混合範數作為正規化器的多任務 ElasticNet 模型。
ElasticNetCV
使用交叉驗證選擇最佳模型的 Elastic net 模型。
MultiTaskElasticNetCV
具有內建交叉驗證的多任務 L1/L2 ElasticNet。
注意事項
用於擬合模型的演算法是坐標下降法。
在
fit
中,一旦通過交叉驗證找到最佳參數alpha
,就會使用整個訓練集再次擬合模型。為了避免不必要的記憶體重複,
fit
方法的X
和y
參數應直接作為 Fortran 相鄰的 numpy 陣列傳遞。範例
>>> from sklearn.linear_model import MultiTaskLassoCV >>> from sklearn.datasets import make_regression >>> from sklearn.metrics import r2_score >>> X, y = make_regression(n_targets=2, noise=4, random_state=0) >>> reg = MultiTaskLassoCV(cv=5, random_state=0).fit(X, y) >>> r2_score(y, reg.predict(X)) 0.9994... >>> reg.alpha_ np.float64(0.5713...) >>> reg.predict(X[:1,]) array([[153.7971..., 94.9015...]])
- fit(X, y, **params)[來源]#
使用坐標下降法擬合 MultiTaskLasso 模型。
擬合是在 alpha 值網格上進行,並通過交叉驗證估計最佳 alpha 值。
- 參數:
- X形狀為 (n_samples, n_features) 的 ndarray
資料。
- y形狀為 (n_samples, n_targets) 的 ndarray
目標。如有必要,將轉換為 X 的 dtype。
- **paramsdict,預設值為 None
要傳遞給 CV 分割器的參數。
在版本 1.4 中加入:僅當
enable_metadata_routing=True
時才可用,可以使用sklearn.set_config(enable_metadata_routing=True)
設定。有關詳細資訊,請參閱 中繼資料路由使用者指南。
- 傳回值:
- 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類陣列 (array-like) 或稀疏矩陣 (sparse matrix),形狀為 (n_samples, n_features)
訓練資料。直接傳遞 Fortran 連續資料以避免不必要的記憶體重複。如果
y
是單輸出,則X
可以是稀疏的。- y類陣列 (array-like) 或稀疏矩陣 (sparse matrix),形狀為 (n_samples,) 或 (n_samples, n_targets)
目標值。
- 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類陣列 (array-like),形狀為 (n_features,) 或 (n_features, n_targets),預設值為 None
Xy = np.dot(X.T, y),可以預先計算。僅當預先計算 Gram 矩陣時才有用。
- copy_Xbool,預設值為 True
如果
True
,則會複製 X;否則,可能會覆寫它。- coef_init類陣列 (array-like),形狀為 (n_features, ),預設值為 None
係數的初始值。
- verbosebool 或 int,預設值為 False
詳細程度。
- return_n_iter布林值 (bool),預設值為 False
是否返回迭代次數。
- positive布林值 (bool),預設值為 False
如果設定為 True,則強制係數為正值。(僅當
y.ndim == 1
時允許)。- **paramskwargs
傳遞給座標下降求解器的關鍵字引數。
- 傳回值:
- alphasndarray,形狀為 (n_alphas,)
沿著路徑計算模型的 alpha 值。
- coefsndarray,形狀為 (n_features, n_alphas) 或 (n_targets, n_features, n_alphas)
沿著路徑的係數。
- dual_gapsndarray,形狀為 (n_alphas,)
每個 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) 或稀疏矩陣 (sparse matrix),形狀為 (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
的期望值而忽略輸入特徵的常數模型,將獲得 0.0 的 \(R^2\) 分數。- 參數:
- X類陣列 (array-like),形狀為 (n_samples, n_features)
測試樣本。對於某些估算器,這可能是一個預先計算的核矩陣或一個通用物件列表,形狀為
(n_samples, n_samples_fitted)
,其中n_samples_fitted
是用於估算器擬合的樣本數量。- y類陣列 (array-like),形狀為 (n_samples,) 或 (n_samples, n_outputs)
X
的真實值。- sample_weight類陣列 (array-like),形狀為 (n_samples,),預設值為 None
樣本權重。
- 傳回值:
- score浮點數 (float)
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$') MultiTaskLassoCV [原始碼]#
請求傳遞給
fit
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制的運作方式。每個參數的選項為
True
:請求中繼資料,並在提供時傳遞給fit
。如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,且元估計器不會將其傳遞給fit
。None
:不請求中繼資料,如果使用者提供中繼資料,元估計器會引發錯誤。str
:中繼資料應該以指定的別名傳遞給元估計器,而不是原始名稱。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這讓您可以變更某些參數的請求,而不是其他參數的請求。在 1.3 版本中新增。
注意
只有當此估計器用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何效果。- 參數:
- sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
用於
fit
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
已更新的物件。
- set_params(**params)[原始碼]#
設定此估計器的參數。
此方法適用於簡單的估計器以及巢狀物件(例如
Pipeline
)。後者具有<component>__<parameter>
形式的參數,因此可以更新巢狀物件的每個組件。- 參數:
- **params字典
估計器參數。
- 傳回值:
- self估計器實例
估計器實例。
- set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') MultiTaskLassoCV [原始碼]#
請求傳遞給
score
方法的中繼資料。請注意,只有在
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。請參閱 使用者指南,了解路由機制的運作方式。每個參數的選項為
True
:請求中繼資料,並在提供時傳遞給score
。如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,且元估計器不會將其傳遞給score
。None
:不請求中繼資料,如果使用者提供中繼資料,元估計器會引發錯誤。str
:中繼資料應該以指定的別名傳遞給元估計器,而不是原始名稱。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 會保留現有的請求。這讓您可以變更某些參數的請求,而不是其他參數的請求。在 1.3 版本中新增。
注意
只有當此估計器用作元估計器的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何效果。- 參數:
- sample_weightstr、True、False 或 None,預設值=sklearn.utils.metadata_routing.UNCHANGED
用於
score
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
已更新的物件。