基于梯度下降的线性回归算法实现
时间: 2023-08-31 16:39:33 浏览: 94
Desktop.zip_linear regression_rpo_梯度下降_线性回归_线性回归梯度
以下是基于梯度下降的线性回归算法的 Python 实现示例:
```python
import numpy as np
class LinearRegression:
def __init__(self, learning_rate=0.01, max_iter=1000):
self.learning_rate = learning_rate
self.max_iter = max_iter
self.w = None
self.b = None
def fit(self, X, y):
n_samples, n_features = X.shape
self.w = np.zeros(n_features)
self.b = 0
for i in range(self.max_iter):
y_pred = np.dot(X, self.w) + self.b
gradient_w = (1/n_samples) * np.dot(X.T, (y_pred - y))
gradient_b = (1/n_samples) * np.sum(y_pred - y)
self.w -= self.learning_rate * gradient_w
self.b -= self.learning_rate * gradient_b
def predict(self, X):
return np.dot(X, self.w) + self.b
```
该实现中,`LinearRegression` 类包括两个主要方法:`fit` 和 `predict`。`fit` 方法用于训练线性回归模型,接受输入数据 `X` 和输出数据 `y` 作为参数,使用梯度下降算法更新模型参数。`predict` 方法用于预测新的输入数据 `X` 的输出结果。
在 `fit` 方法中,首先初始化模型参数 `self.w` 和 `self.b`,然后重复执行梯度下降算法,直到达到最大迭代次数或损失函数收敛。在每次迭代中,计算模型预测值 `y_pred`,以及损失函数对模型参数的梯度 `gradient_w` 和 `gradient_b`,然后更新模型参数 `self.w` 和 `self.b`。
在 `predict` 方法中,使用训练好的模型参数 `self.w` 和 `self.b` 对新的输入数据 `X` 进行预测,得到输出结果。
阅读全文