語法:
ElasticNet(self, alpha=1.0, l1_ratio=0.5, fit_intercept=True, normalize=False, precompute=False, max_iter=1000, copy_X=True, tol=1e-4, warm_start=False, positive=False, random_state=None, selection=’cyclic’)
類型:
sklearn.linear_model.coordinate_descent 中的類,使用L1和L2組合作為正則項的線性回歸。最小化目標函數為
1(2∗nsamples)||y−Xw||22+α∗l1_ratio∗||w||1+0.5∗ alpha∗(1−l1_ratio)∗||w||221(2∗nsamples)||y−Xw||22+α∗l1_ratio∗||w||1+0.5∗ alpha∗(1−l1_ratio)∗||w||22
如果關注L1和L2懲罰項的分類,記住下面的公式:
a=L1+b∗L2a=L1+b∗L2
這里:
α=a+bl1_ratio=a/(a+b)α=a+bl1_ratio=a/(a+b)
這里參數l1_ratio對用R中的glmnet包中的αα ,αα 對用R中的λλ ,特別的,l1_ratio = 1 是lasso懲罰,當前l1_ratio≤0.01l1_ratio≤0.01 是不可靠的,除非你使用自己定義的alpha序列。
在用戶指南中讀取更多。
輸入參數:
- 參數名:alpha
- 類型:float, optional
- 說明:混合懲罰項的常數,morning是1,看筆記的得到有關這個參數的精確數學定義。alpha = 0等價於傳統最小二乘回歸,通過LinearRegression求解。因為數學原因,使用alpha = 0的lasso回歸時不推薦的,如果是這樣,你應該使用 LinearRegression 。*
- 參數名:l1_ratio
- 類型:float
- 說明:彈性網混合參數,0 <= l1_ratio <= 1,對於 l1_ratio = 0,懲罰項是L2正則懲罰。對於 l1_ratio = 1是L1正則懲罰。對於 0
屬性
- 參數名:coef_
- 類型:array, shape (n_features,) | (n_targets, n_features)
- 說明:參數向量(損失函數表達式中的ww )
- 參數名:sparse_coef_
- 類型:scipy.sparse matrix, shape (n_features, 1) | (n_targets, n_features)
- 說明:sparse_coef_ 是從coef_ 導出的只讀屬性
- 參數名:intercept_
- 類型:float | array, shape (n_targets,)
- 說明:決策函數中的獨立項,即截距
- 參數名:n_iter_
- 類型:array-like, shape (n_targets,)
- 說明:由坐標下降求解器運行的,達到指定公差的迭代次數。
實例:
#導入彈性網 from sklearn.linear_model import ElasticNet from sklearn.datasets import make_regression # 初始化數據,模擬數據 X, y = make_regression(n_features=2, random_state=0) # 實例化彈性網類,設定隨機種子,保證每次計算結果都相同 regr = ElasticNet(random_state=0) # 訓練彈性網 regr.fit(X, y) # 打印系數,結果是[ 18.83816048 64.55968825] print(regr.coef_) # 打印截距,結果是1.45126075617 print(regr.intercept_) # 打印預測值,結果是[ 1.45126076] print(regr.predict([[0, 0]]))
為了避免不必要的內存復制,應該將fit方法的X參數直接作為一個fortranguous numpy數組傳遞
參閱
- SGDRegressor:采用增量式培訓實現彈性凈回歸。
- SGDClassifier:用彈性網懲罰實現邏輯回歸。
- (SGDClassifier(loss=”log”, penalty=”elasticnet”)).