機器學習實踐(十四)—sklearn之嶺迴歸(線性迴歸的改進)
阿新 • • 發佈:2018-12-03
帶有 L2 正則化的線性迴歸就是嶺迴歸。
嶺迴歸,其實也是一種線性迴歸。
只不過在演算法建立迴歸方程時候,加上正則化的限制,從而達到解決過擬合的效果。
加上正則化,也就是使權重滿足劃分正確結果的同時儘量的小
一、嶺迴歸 - API
-
嶺迴歸 - API
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver=“auto”, normalize=False)
- 具有 L2 正則化的線性迴歸
- alpha
- 正則化力度,也叫 λ
- λ 取值在01或者1
- fit_intercept
- 偏置,預設True
- solver
- 會根據資料自動選擇優化方法
- 如果資料集、特徵都比較大,可以設定為 ‘sag’ ,進行隨機梯度下降優化
- normalize
- 資料是否進行標準化
- normalize=True 時會進行標準化操作,我們就可以不使用 StandardScaler 進行標準化操作啦
- Ridge.coef_
- 迴歸權重
- Ridge.intercept_
- 迴歸偏置
All last four solvers support both dense and sparse data. However,
only ‘sag’ supports sparse input whenfit_intercept
is True. -
SGDRegressor-API 實現嶺迴歸
SGDRegressor(penalty=‘l2’, loss=“squared_loss”)
-
使用梯度下降API實現嶺迴歸
-
penalty
- 乘法的意思,表示使用L2
-
loss
- 損失函式使用什麼
- squared_loss - 最小二乘
-
推薦使用 Ridge,因為它實現了 SAG 優化
-
-
嶺迴歸 - 實現了交叉驗證 - API
sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)
- 具有 L2 正則化的線性迴歸,可以進行交叉驗證
- coef_
- 迴歸係數
二、案例 - 嶺迴歸 - 波士頓房價預測
-
在之前案例基礎上使用嶺迴歸
-
完整程式碼
from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import Ridge from sklearn.datasets import load_boston from sklearn.metrics import mean_squared_error # 獲取資料 boston = load_boston() # 劃分資料集 x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=6) # 特徵工程:標準化 # 1)例項化一個轉換器類 transfer = StandardScaler() # 2)呼叫fit_transform x_train = transfer.fit_transform(x_train) x_test = transfer.transform(x_test) # 嶺迴歸的預估器流程 estimator = Ridge() estimator.fit(x_train, y_train) y_predict = estimator.predict(x_test) print("嶺迴歸求出模型引數的方法預測的房屋價格為:\n", y_predict) # 列印模型相關屬性 print("嶺迴歸求出的迴歸係數為:\n", estimator.coef_) print("嶺迴歸求出的偏置為:\n", estimator.intercept_) # 模型評估——均方誤差 error = mean_squared_error(y_test, y_predict) print("嶺迴歸的均方誤差為:\n", error)