用Python手写岭回归算法
时间: 2023-11-19 21:06:49 浏览: 38
好的,以下是用 Python 手写岭回归算法的示例代码:
```python
import numpy as np
class RidgeRegression:
def __init__(self, alpha=1.0):
self.alpha = alpha
def fit(self, X, y):
X = np.insert(X, 0, 1, axis=1)
n_features = X.shape[1]
self.w_ = np.linalg.inv(X.T.dot(X) + self.alpha * np.eye(n_features)).dot(X.T).dot(y)
def predict(self, X):
X = np.insert(X, 0, 1, axis=1)
return X.dot(self.w_)
```
在上面的代码中,`RidgeRegression` 类有两个方法:`fit` 和 `predict`。`fit` 方法用于拟合模型,`predict` 方法用于预测新样本的输出。
在 `fit` 方法中,我们首先将输入数据 `X` 的第一列插入全为 1 的一列,以使模型学习到截距。然后,我们计算岭回归系数 `self.w_`,其中 `np.eye(n_features)` 用于构造单位矩阵,以在计算逆矩阵时确保矩阵可逆。
在 `predict` 方法中,我们同样将输入数据 `X` 的第一列插入全为 1 的一列,并使用已经拟合好的岭回归系数 `self.w_` 进行预测。
现在,我们可以使用上面的代码来训练和测试岭回归模型了。例如,以下代码演示了如何使用 `RidgeRegression` 类拟合一个简单的数据集:
```python
# 生成一些随机数据
X = np.random.rand(100, 5)
y = np.random.rand(100)
# 初始化岭回归模型并拟合数据
rr = RidgeRegression(alpha=0.1)
rr.fit(X, y)
# 使用拟合好的模型进行预测
X_test = np.random.rand(10, 5)
y_pred = rr.predict(X_test)
print(y_pred)
```