當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn ElasticNetCV用法及代碼示例


本文簡要介紹python語言中 sklearn.linear_model.ElasticNetCV 的用法。

用法:

class sklearn.linear_model.ElasticNetCV(*, l1_ratio=0.5, eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, normalize='deprecated', precompute='auto', max_iter=1000, tol=0.0001, cv=None, copy_X=True, verbose=0, n_jobs=None, positive=False, random_state=None, selection='cyclic')

沿正則化路徑迭代擬合的彈性網絡模型。

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

在用戶指南中閱讀更多信息。

參數

l1_ratio浮點數或浮點數列表,默認=0.5

0 和 1 之間的浮點數傳遞給 ElasticNet(在 l1 和 l2 懲罰之間縮放)。對於l1_ratio = 0,懲罰是 L2 懲罰。對於l1_ratio = 1,這是 L1 懲罰。對於 0 < l1_ratio < 1 ,懲罰是 L1 和 L2 的組合。此參數可以是一個列表,在這種情況下,通過交叉驗證測試不同的值,並使用給出最佳預測分數的值。請注意,l1_ratio 值列表的一個不錯選擇通常是放置更多接近 1 的值(即 Lasso)和不太接近 0(即 Ridge),如 [.1, .5, .7, .9, .95, .99, 1] 中。

eps浮點數,默認=1e-3

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

n_alphas整數,默認=100

正則化路徑上的 alpha 數量,用於每個 l1_ratio。

alphasndarray,默認=無

計算模型的 alpha 列表。如果 None alphas 是自動設置的。

fit_intercept布爾,默認=真

是否計算此模型的截距。如果設置為 false,則不會在計算中使用截距(即數據應居中)。

normalize布爾,默認=假

fit_intercept 設置為 False 時忽略此參數。如果為 True,則回歸量 X 將在回歸前通過減去均值並除以 l2 範數進行歸一化。如果您希望標準化,請在使用 normalize=False 對估計器調用 fit 之前使用 StandardScaler

precompute‘auto’,布爾型或類似數組的形狀 (n_features, n_features),默認=’auto’

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

max_iter整數,默認=1000

最大迭代次數。

tol浮點數,默認=1e-4

優化的容差:如果更新小於 tol ,則優化代碼檢查對偶間隙的最優性並繼續直到它小於 tol

cvint,交叉驗證生成器或可迭代,默認=無

確定交叉驗證拆分策略。 cv 的可能輸入是:

  • 無,使用默認的 5 折交叉驗證,
  • int,指定折疊次數。
  • CV分配器,
  • 一個可迭代的 yield (train, test) 拆分為索引數組。

對於 int/None 輸入,使用 KFold

有關可在此處使用的各種交叉驗證策略,請參閱用戶指南。

copy_X布爾,默認=真

如果 True ,X 將被複製;否則,它可能會被覆蓋。

verbosebool 或 int,默認 = 0

詳細程度。

n_jobs整數,默認=無

交叉驗證期間要使用的 CPU 數量。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

positive布爾,默認=假

當設置為 True 時,強製係數為正。

random_stateint,RandomState 實例,默認=無

選擇要更新的隨機特征的偽隨機數生成器的種子。當selection == ‘random’ 時使用。傳遞 int 以獲得跨多個函數調用的可重現輸出。請參閱詞匯表。

selection{‘cyclic’, ‘random’},默認='循環'

如果設置為‘random’,則每次迭代都會更新隨機係數,而不是默認情況下按順序循環特征。這(設置為‘random’)通常會導致收斂速度顯著加快,尤其是當 tol 高於 1e-4 時。

屬性

alpha_浮點數

交叉驗證選擇的懲罰量。

l1_ratio_浮點數

交叉驗證選擇的 l1 和 l2 懲罰之間的折衷。

coef_ndarray 形狀 (n_features,) 或 (n_targets, n_features)

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

intercept_形狀的浮點數或 ndarray (n_targets, n_features)

決策函數中的獨立項。

mse_path_ndarray 形狀(n_l1_ratio,n_alpha,n_folds)

每次折疊測試集的均方誤差,變化的 l1_ratio 和 alpha。

alphas_ndarray 形狀 (n_alphas,) 或 (n_l1_ratio, n_alphas)

對於每個 l1_ratio,用於擬合的 alpha 網格。

dual_gap_浮點數

最優 alpha 優化結束時的對偶間隙。

n_iter_int

坐標下降求解器運行的迭代次數,以達到最佳 alpha 的指定容差。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

注意

例如,請參見例子/linear_model/plot_lasso_model_selection.py.

為避免不必要的內存重複,fit 方法的 X 參數應直接作為 Fortran-contiguous numpy 數組傳遞。

參數 l1_ratio 對應於 glmnet R 包中的 alpha,而 alpha 對應於 glmnet 中的 lambda 參數。更具體地說,優化目標是:

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

如果您有興趣分別控製 L1 和 L2 懲罰,請記住這相當於:

a * L1 + b * L2

為了:

alpha = a + b and l1_ratio = a / (a + b).

例子

>>> from sklearn.linear_model import ElasticNetCV
>>> from sklearn.datasets import make_regression
>>> X, y = make_regression(n_features=2, random_state=0)
>>> regr = ElasticNetCV(cv=5, random_state=0)
>>> regr.fit(X, y)
ElasticNetCV(cv=5, random_state=0)
>>> print(regr.alpha_)
0.199...
>>> print(regr.intercept_)
0.398...
>>> print(regr.predict([[0, 0]]))
[0.398...]

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.linear_model.ElasticNetCV。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。