利用梯度下降进行线性回归预测的程序Python
时间: 2024-02-16 22:35:09 浏览: 70
Python用梯度下降法做线性回归模型训练
下面是一个利用梯度下降进行线性回归预测的 Python 程序:
```python
import numpy as np
class LinearRegression:
def __init__(self, learning_rate=0.01, num_iterations=1000):
self.learning_rate = learning_rate
self.num_iterations = num_iterations
def fit(self, X, y):
m, n = X.shape
self.theta = np.zeros((n, 1))
for i in range(self.num_iterations):
y_pred = np.dot(X, self.theta)
error = y_pred - y
gradient = np.dot(X.T, error) / m
self.theta -= self.learning_rate * gradient
def predict(self, X):
return np.dot(X, self.theta)
```
其中,`fit` 方法用于训练模型,`predict` 方法用于预测结果。`X` 是一个 m 行 n 列的矩阵,表示 m 个样本的 n 个特征;`y` 是一个 m 行 1 列的矩阵,表示 m 个样本的标签。`learning_rate` 是学习率,用于控制每次更新参数的步长;`num_iterations` 是迭代次数,用于控制梯度下降算法的迭代次数。
在使用时,可以先创建一个 `LinearRegression` 的对象,然后调用 `fit` 方法进行训练,最后调用 `predict` 方法进行预测。例如:
```python
X = np.array([[1, 2], [3, 4], [5, 6]])
y = np.array([[3], [7], [11]])
lr = LinearRegression(learning_rate=0.01, num_iterations=1000)
lr.fit(X, y)
X_test = np.array([[7, 8], [9, 10]])
y_pred = lr.predict(X_test)
print(y_pred)
```
这里的 `X` 和 `y` 表示三个样本,每个样本有两个特征和一个标签。`lr` 是一个 `LinearRegression` 的对象,使用 `fit` 方法对模型进行训练。然后,使用 `X_test` 进行预测,并将预测结果打印出来。
阅读全文