numpy 实现线性回归模型
时间: 2023-11-12 13:47:56 浏览: 70
基于Numpy的线性回归模型
5星 · 资源好评率100%
要使用NumPy实现线性回归模型,可以按照以下步骤进行:
1. 导入NumPy库:首先,需要导入NumPy库来进行数值计算和数组操作。
2. 准备数据:准备输入特征矩阵X和对应的目标变量Y。X是一个 m×n 的矩阵,其中m是样本数量,n是特征数量。Y是一个 m×1 的列向量。
3. 添加偏置列:为了方便计算,可以在特征矩阵X中添加一列全为1的偏置列。
4. 初始化参数:初始化待学习的参数向量θ。
5. 定义损失函数:使用最小二乘法定义损失函数,如均方误差(MSE)。
6. 梯度下降优化:使用梯度下降法来优化参数,更新参数向量θ。
下面是一个使用NumPy实现线性回归的示例代码:
```python
import numpy as np
# 准备数据
X = np.array([[1, 1], [1, 2], [1,3], [1, 4]]) # 输入特征矩阵
Y = np.array([[2], [3], [4], [5]]) # 目标变量
# 添加偏置列
X = np.concatenate((np.ones((X.shape[0], 1)), X), axis=1)
# 初始化参数
theta = np.zeros((X.shape[1], 1))
# 定义损失函数
def loss_function(X, Y, theta):
m = len(Y)
predictions = X.dot(theta)
loss = (1/(2*m)) * np.sum(np.square(predictions - Y))
return loss
# 梯度下降优化
def gradient_descent(X, Y, theta, learning_rate, num_iterations):
m = len(Y)
losses = []
for i in range(num_iterations):
predictions = X.dot(theta)
errors = predictions - Y
gradient = (1/m) * X.T.dot(errors)
theta -= learning_rate * gradient
loss = loss_function(X, Y, theta)
losses.append(loss)
return theta, losses
# 设置学习率和迭代次数
learning_rate = 0.01
num_iterations = 1000
# 执行梯度下降优化
theta_optimized, losses = gradient_descent(X, Y, theta, learning_rate, num_iterations)
print("最优参数向量:")
print(theta_optimized)
# 相关问题:
阅读全文