- Scikit-learn 教程
- Scikit-learn - 首頁
- Scikit-learn - 簡介
- Scikit-learn - 建模過程
- Scikit-learn - 資料表示
- Scikit-learn - 估計器 API
- Scikit-learn - 約定
- Scikit-learn - 線性建模
- Scikit-learn - 擴充套件線性建模
- 隨機梯度下降
- Scikit-learn - 支援向量機
- Scikit-learn - 異常檢測
- Scikit-learn - K 近鄰
- Scikit-learn - KNN 學習
- 樸素貝葉斯分類
- Scikit-learn - 決策樹
- 隨機決策樹
- Scikit-learn - 整合方法
- Scikit-learn - 聚類方法
- 聚類效能評估
- 使用 PCA 進行降維
- Scikit-learn 有用資源
- Scikit-learn - 快速指南
- Scikit-learn - 有用資源
- Scikit-learn - 討論
Scikit-learn - 嶺迴歸
嶺迴歸或 Tikhonov 正則化是一種執行 L2 正則化的正則化技術。它透過新增等效於係數大小平方的懲罰項(收縮量)來修改損失函式。
$$\displaystyle\sum\limits_{j=1}^m\left(Y_{i}-W_{0}-\displaystyle\sum\limits_{i=1}^nW_{i}X_{ji} \right)^{2}+\alpha\displaystyle\sum\limits_{i=1}^nW_i^2=loss_{-}function+\alpha\displaystyle\sum\limits_{i=1}^nW_i^2$$sklearn.linear_model.Ridge 是用於解決迴歸模型的模組,其中損失函式是線性最小二乘函式,正則化是 L2。
引數
下表包含 Ridge 模組使用的引數:
| 序號 | 引數及描述 |
|---|---|
| 1 |
alpha − {float, array-like}, shape(n_targets) Alpha 是一個調整引數,決定我們希望對模型進行多少懲罰。 |
| 2 |
fit_intercept − 布林值 此引數指定是否應將常數(偏差或截距)新增到決策函式中。如果設定為 False,則計算中不會使用截距。 |
| 3 |
tol − float,可選,預設為 1e-4 它表示解的精度。 |
| 4 |
normalize − 布林值,可選,預設為 False 如果此引數設定為 True,則迴歸前將對迴歸量 X 進行標準化。標準化將透過減去均值併除以 L2 範數來完成。如果 fit_intercept = False,則忽略此引數。 |
| 5 |
copy_X − 布林值,可選,預設為 True 預設情況下,它是 True,這意味著 X 將被複制。但如果將其設定為 False,則 X 可能會被覆蓋。 |
| 6 |
max_iter − int,可選 顧名思義,它表示共軛梯度求解器所採用的最大迭代次數。 |
| 7 |
solver − str, {‘auto’, ‘svd’, ‘cholesky’, ‘lsqr’, ‘sparse_cg’, ‘sag’, ‘saga’} 此引數表示在計算例程中使用哪個求解器。以下是此引數下選項的屬性:
|
| 8 |
random_state − int,RandomState 例項或 None,可選,預設為 None 此引數表示用於在洗牌資料時生成的偽隨機數的種子。以下是選項:
|
屬性
下表包含 Ridge 模組使用的屬性:
| 序號 | 屬性及描述 |
|---|---|
| 1 |
coef_ − array,shape(n_features,) 或 (n_target, n_features) 此屬性提供權重向量。 |
| 2 |
Intercept_ − float | array,shape = (n_targets) 它表示決策函式中的獨立項。 |
| 3 |
n_iter_ − array 或 None,shape (n_targets) 僅適用於 ‘sag’ 和 ‘lsqr’ 求解器,返回每個目標的實際迭代次數。 |
實現示例
以下 Python 指令碼提供了一個實現嶺迴歸的簡單示例。我們使用 15 個樣本和 10 個特徵。在我們的案例中,alpha 的值為 0.5。有兩個方法,即 fit() 和 score(),分別用於擬合此模型並計算得分。
from sklearn.linear_model import Ridge import numpy as np n_samples, n_features = 15, 10 rng = np.random.RandomState(0) y = rng.randn(n_samples) X = rng.randn(n_samples, n_features) rdg = Ridge(alpha = 0.5) rdg.fit(X, y) rdg.score(X,y)
輸出
0.76294987
輸出顯示上述嶺迴歸模型給出了大約 76% 的得分。為了提高準確性,我們可以增加樣本和特徵的數量。
示例
對於上述示例,我們可以藉助以下 Python 指令碼來獲取權重向量:
rdg.coef_
輸出
array([ 0.32720254, -0.34503436, -0.2913278 , 0.2693125 , -0.22832508, -0.8635094 , -0.17079403, -0.36288055, -0.17241081, -0.43136046])
示例
類似地,我們可以藉助以下 Python 指令碼來獲取截距的值:
rdg.intercept_
輸出
0.527486