最小二乘法用numpy实现
时间: 2024-09-26 15:15:15 浏览: 38
最小二乘法是一种常用的数据拟合技术,特别是在统计学和机器学习中,用于找到数据点与其最佳拟合直线之间的最小距离平方和。在Python中,可以使用NumPy库中的函数来轻松实现这个过程。以下是一个基本的例子:
```python
import numpy as np
# 假设我们有数据点(x_data, y_data),以及假设模型是y = mx + b
x_data = np.array([...]) # 输入特征向量
y_data = np.array([...]) # 目标值
# 我们首先计算斜率m和截距b的初始猜测
m_initial = 0
b_initial = 0
# 定义线性模型函数
def linear_model(x, m, b):
return m * x + b
# 创建拟合函数,返回残差的平方和
def residual_sum_of_squares(params):
m, b = params
predicted = linear_model(x_data, m, b)
return np.sum((predicted - y_data) ** 2)
# 使用scipy.optimize.minimize函数找到最小残差的参数
from scipy.optimize import minimize
params_guess = [m_initial, b_initial]
result = minimize(residual_sum_of_squares, params_guess, method='least_squares')
# 最终得到最优的斜率和截距
optimal_m = result.x[0]
optimal_b = result.x[1]
# 现在你可以用这些参数预测新的x值
new_x = np.array([...])
predicted_y = linear_model(new_x, optimal_m, optimal_b)
```
阅读全文