如何用Python打卡最小二乘法拟合函数?

Python打卡:最小二乘法拟合函数的实践与应用 在数据科学与工程领域,函数拟合是揭示变量关系的核心手段。最小二乘法作为一种经典的数学优化方法,通过最小化误差平方和实现数据与模型的最佳匹配。将通过Python实践,演示如何利用最小二乘法进行函数拟合,重点析核心代码与实现逻辑。 一、数据准备与问题定义 假设存在一组实验数据`(x, y)`,需拟合为线性函数`y = ax + b`。首先使用NumPy生成模拟数据,包含线性趋势与随机噪声: ```python import numpy as np x = np.linspace(0, 10, 50) # 生成0-10间50个等间隔点 y_true = 2.5 * x + 1.8 # 真实函数 y = y_true + np.random.normal(0, 1.2, 50) # 添加高斯噪声 ``` 二、最小二乘法模型构建

核心原理

最小二乘法通过求损失函数$L(a,b) = sum_{i=1}^{n}(y_i - (ax_i + b))^2$的最小值,确定参数`a`和`b`。析公式为: $hat{a} = frac{nsum x_iy_i - sum x_isum y_i}{nsum x_i^2 - (sum x_i)^2}$,$hat{b} = bar{y} - hat{a}bar{x}$

Python实现

使用NumPy的线性代数模块直接计算参数: ```python n = len(x) sum_x = np.sum(x) sum_y = np.sum(y) sum_xy = np.sum(x * y) sum_x2 = np.sum(x **2)

a = (n * sum_xy - sum_x * sum_y) / (n * sum_x2 - sum_x** 2) b = (sum_y - a * sum_x) / n y_fit = a * x + b # 拟合结果 ```

三、结果可视化与评估 通过Matplotlib绘制原始数据与拟合曲线,并计算决定系数$R^2$评估拟合优度: ```python import matplotlib.pyplot as plt plt.scatter(x, y, label='原始数据', color='lightblue') plt.plot(x, y_fit, 'r-', label=f'拟合直线: y={a:.2f}x+{b:.2f}') 计算R² ss_total = np.sum((y - np.mean(y)) **2) ss_residual = np.sum((y - y_fit)** 2) r2 = 1 - (ss_residual / ss_total) plt.text(1, 25, f'$R^2$ = {r2:.4f}', fontsize=12)

plt.legend() plt.show() ``` 关键输出:拟合直线方程与$R^2$值越接近1表示拟合效果越好。

四、高阶拟合扩展 最小二乘法支持多项式拟合,通过NumPy的`polyfit`函数实现: ```python degree = 3 # 三次多项式拟合 coeffs = np.polyfit(x, y, degree) # 返回多项式系数 y_poly = np.poly1d(coeffs)(x) # 生成拟合函数并计算预测值 ``` 优势:通过调整`degree`参数,可灵活适配非线性数据分布。 五、应用场景 最小二乘法广泛应用于物理实验数据校准经济趋势预测机器学习线性回归等场景。在Python生态中,结合`scikit-learn`的`LinearRegression`类可实现更复杂的多变量拟合。

通过本次打卡实践,我们掌握了最小二乘法的数学原理与Python实现流程。核心在于理误差平方和最小化的优化目标,并利用NumPy与Matplotlib工具链高效成数据处理与可视化。这一方法为后续复杂模型构建奠定了基础。

延伸阅读: