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函数)。