python最小二乘法迭代代码
时间: 2024-07-17 15:00:57 浏览: 109
Python 中最小二乘法(Least Squares Method)用于拟合数据,寻找一条直线或曲线,使实际值和预测值之间的误差平方和达到最小。迭代法通常用于解决大型线性系统的求解问题,例如梯度下降法。这里是一个简单的最小二乘法的迭代求解线性回归的代码示例:
```python
import numpy as np
# 假设我们有一个输入矩阵 X 和目标输出 y
X = np.array([[1, 2], [3, 4], [5, 6]]) # 输入特征
y = np.array([7, 8, 9]) # 目标值
def gradient_descent(X, y, theta, alpha, num_iterations):
m = len(y) # 样本数量
X_b = np.c_[np.ones((m, 1)), X] # 添加截距列
J_history = []
for iteration in range(num_iterations):
h = np.dot(X_b, theta)
error = h - y # 计算预测值和真实值的差
gradient = (1 / m) * np.dot(X_b.T, error) # 计算梯度
theta -= alpha * gradient # 更新参数
J_history.append(np.mean(error**2)) # 记录每次迭代的损失函数
return theta, J_history
initial_theta = np.zeros(2) # 初始猜测的参数向量
alpha = 0.01 # 学习率
num_iterations = 1500 # 迭代次数
theta, cost_curve = gradient_descent(X, y, initial_theta, alpha, num_iterations)
print("最优参数:", theta)
print("迭代过程中损失函数的变化:", cost_curve)
```
这个代码中,`gradient_descent` 函数执行了梯度下降算法,通过迭代更新参数 `theta` 来最小化损失函数(均方误差)。最后输出的是最优参数和损失函数随着迭代的演变。
阅读全文