python中最小二乘法详细讲解

  • Post category:Python

Python中最小二乘法详细讲解

简介

最小二乘法是一种数学优化方法,用于处理一组数据中的误差最小的函数模型参数。在Python中,我们可以使用NumPy库中的polyfit()函数来实现最小二乘法。本文将详细讲解最小二乘法的使用步骤及示例。

步骤

1. 导入库

在开始使用最小二乘法之前,我们需要先导入Numpy库。

import numpy as np

2. 准备数据

准备输入数据和目标数据,以便用于拟合线性函数模型。

x = np.array([1, 2, 3, 4, 5])
y = np.array([3, 5, 7, 9, 11])

3. 拟合线性函数模型

使用polyfit()函数对输入数据进行拟合。

fitting_params = np.polyfit(x, y, 1)

其中,1代表拟合的多项式次数。在线性函数模型中,次数为1。

4. 计算拟合直线斜率和截距

接下来通过拟合参数计算拟合直线的斜率和截距。

slope = fitting_params[0]
intercept = fitting_params[1]

5. 可视化结果

使用Matplotlib库可视化数据及拟合直线。

import matplotlib.pyplot as plt

plt.plot(x, y, 'o')
plt.plot(x, slope * x + intercept)
plt.title('Linear Fit')
plt.xlabel('Input Data')
plt.ylabel('Output Data')
plt.show()

这个例子中最小二乘法使用数据输入x和实际输出y进行线性拟合。使用polyfit()函数进行拟合,然后计算斜率和截距。最后,我们使用Matplotlib库展示原始数据和线性拟合线。

示例

示例1:多项式2次拟合

x = np.array([1, 2, 3, 4, 5])
y = np.array([1, 4, 9, 16, 25])

fitting_params = np.polyfit(x, y, 2)

a = fitting_params[0]
b = fitting_params[1]
c = fitting_params[2]

plt.plot(x, y, 'o')
plt.plot(x, a*x**2 + b*x + c)
plt.title('Quadratic Fit')
plt.show()

在此示例中,我们使用了多项式2次拟合,将次数设为2即可。

示例2:拟合指数函数

x = np.array([1, 2, 3, 4, 5])
y = np.array([2.7183, 7.3890, 20.0855, 54.5982, 148.4132])

fitting_params = np.polyfit(x, np.log(y), 1)

slope = fitting_params[0]
intercept = fitting_params[1]

plt.plot(x, y, 'o')
plt.plot(x, np.exp(intercept+slope*x))
plt.title('Exponential Fit')
plt.show()

在此示例中,我们拟合的是指数函数。但是,指数函数不是线性的,因此,我们需要将y值取自然对数,然后通过拟合线性函数进行拟合,最后通过幂运算获得指数函数拟合结果。注意,在这个例子中,我们使用np.exp函数来计算幂函数的值。

结论

本文中,我们了解了使用最小二乘法进行线性拟合的详细过程。除了线性函数,最小二乘法也可以用于拟合曲线(非线性函数)。当使用非线性函数时,我们可能需要使用不同的拟合方法,如曲线拟合(使用curve_fit函数)。