使用numpy 实现线性回归模型
时间: 2024-05-25 17:04:57 浏览: 115
基于Numpy的线性回归模型
5星 · 资源好评率100%
要使用numpy实现线性回归模型,可以遵循以下步骤:
1. 导入所需的库:
```python
import numpy as np
```
2. 准备数据:
假设我们有m个训练样本,每个样本包含n个特征。将输入特征存储在一个形状为(m, n)的numpy数组X中,并将目标值存储在一个形状为(m, 1)的numpy数组y中。
3. 初始化模型参数:
将模型参数w和b初始化为0。使用numpy数组来表示w和b。
4. 定义损失函数:
使用均方误差作为损失函数。可以使用numpy的矩阵乘法和广播功能来实现损失函数计算。
5. 定义梯度下降算法:
使用梯度下降算法来更新模型参数w和b。在每次迭代中,计算损失函数的梯度,并根据学习率更新模型参数。
下面是一段示例代码,演示如何使用numpy实现线性回归模型:
```python
import numpy as np
# 准备数据
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
y = np.array([[3], [4], [5], [6]])
# 初始化模型参数
n_features = X.shape[1]
w = np.zeros((n_features, 1))
b = 0
# 定义损失函数
def compute_loss(X, y, w, b):
m = X.shape[0]
y_pred = np.dot(X, w) + b
loss = np.sum((y_pred - y)**2) / (2*m)
return loss
# 定义梯度下降算法
def gradient_descent(X, y, w, b, learning_rate, num_iterations):
m = X.shape[0]
for i in range(num_iterations):
# 计算梯度
y_pred = np.dot(X, w) + b
dw = np.dot(X.T, (y_pred - y)) / m
db = np.sum(y_pred - y) / m
# 更新模型参数
w -= learning_rate * dw
b -= learning_rate * db
# 打印损失函数值
if i % 100 == 0:
loss = compute_loss(X, y, w, b)
print(f'Iteration {i}, Loss: {loss}')
return w, b
# 执行梯度下降算法
learning_rate = 0.01
num_iterations = 1000
w, b = gradient_descent(X, y, w, b, learning_rate, num_iterations)
```
阅读全文