Python实现岭回归
时间: 2023-07-11 16:46:09 浏览: 90
岭回归是一种常用的线性回归方法,它通过对回归系数加上L2正则化项来避免过拟合。下面是一个简单的 Python 实现:
```
import numpy as np
class RidgeRegression:
def __init__(self, alpha=1.0):
self.alpha = alpha
def fit(self, X, y):
n_samples, n_features = X.shape
# add bias term
X = np.c_[X, np.ones(n_samples)]
# calculate coefficients using closed-form solution
self.coef_ = np.linalg.inv(X.T.dot(X) +
self.alpha * np.identity(n_features + 1)).dot(X.T).dot(y)
def predict(self, X):
n_samples = X.shape[0]
# add bias term
X = np.c_[X, np.ones(n_samples)]
return X.dot(self.coef_)
```
这个类的 `fit` 方法接受一个 $n \times m$ 的特征矩阵 `X` 和一个 $n \times 1$ 的标签向量 `y`,其中 $n$ 是样本数,$m$ 是特征数。在 `fit` 方法中,我们首先将特征矩阵 `X` 增加一列全为 1 的偏置项,然后使用闭式解法计算系数。系数的计算公式为:
$$
\boldsymbol{\beta} = (\mathbf{X}^T\mathbf{X} + \alpha\mathbf{I})^{-1}\mathbf{X}^T\mathbf{y}
$$
其中 $\mathbf{X}$ 是增加偏置项后的特征矩阵,$\mathbf{y}$ 是标签向量,$\alpha$ 是超参数,$\mathbf{I}$ 是单位矩阵。
`predict` 方法接受一个 $n' \times m$ 的特征矩阵 `X`,其中 $n'$ 是待预测样本数。在 `predict` 方法中,我们同样将特征矩阵 `X` 增加一列全为 1 的偏置项,然后使用学习到的系数预测标签。预测的公式为:
$$
\hat{\mathbf{y}} = \mathbf{X}\boldsymbol{\beta}
$$
其中 $\boldsymbol{\beta}$ 是学习到的系数,$\hat{\mathbf{y}}$ 是预测的标签向量。
阅读全文