使用matplotlib绘制最佳拟合直线
参考:line of best fit matplotlib
在数据可视化中,绘制最佳拟合直线是一种常见的方法,可以帮助我们更好地理解数据之间的关系。在本文中,我们将使用matplotlib库来实现这一目标。首先,让我们从简单的线性回归开始。
1. 简单线性回归
简单线性回归是一种通过最小化残差平方和来拟合一条直线与一组数据的方法。下面是一个简单的示例代码,其中我们生成一组随机数据,并使用最小二乘法得到其最佳拟合直线。
Output:
在上面的示例中,我们首先生成了一组随机数据,然后使用np.polyfit()
函数进行最小二乘法拟合,得到了最佳拟合直线。最后,我们使用plt.scatter()
函数绘制数据点,使用plt.plot()
函数绘制最佳拟合直线,并使用plt.legend()
添加图例。
2. 多项式拟合
除了简单线性回归外,我们还可以使用多项式拟合来拟合数据。下面是一个示例代码,其中我们生成一个二次多项式拟合的例子。
Output:
在上面的示例中,我们生成了一个二次多项式函数,并使用np.polyfit()
函数拟合数据,得到了最佳拟合曲线。然后,我们使用plt.scatter()
函数绘制数据点,使用plt.plot()
函数绘制最佳拟合曲线,并使用plt.legend()
添加图例。
3. 自定义拟合函数
除了使用numpy库中的np.polyfit()
函数外,我们还可以自定义拟合函数来拟合数据。下面是一个示例代码,其中我们自定义了一个指数函数来拟合一组随机数据。
Output:
在上面的示例中,我们首先定义了一个指数函数exp_func()
,然后生成了一组随机数据。接着,我们使用curve_fit()
函数拟合数据,并绘制出数据点和最佳拟合曲线。
4. 加权拟合
有时数据点的权重不同,我们可以进行加权拟合来更好地拟合数据。下面是一个示例代码,其中我们生成一组带有权重的随机数据,并进行加权拟合。
Output:
在上面的示例中,我们首先生成了一组带有权重的随机数据,然后使用np.polyfit()
函数进行加权拟合,得到了带有权重的最佳拟合直线。最后,我们使用plt.scatter()
函数绘制数据点,使用plt.plot()
函数绘制带有权重的最佳拟合直线,并使用plt.legend()
添加图例。
5. 非线性拟合
除了线性和多项式拟合外,我们还可以进行非线性拟合。下面是一个示例代码,其中我们使用指数函数进行非线性拟合。
在上面的示例中,我们生成了一组随机数据,并使用指数函数exp_func()
进行非线性拟合。然后,我们使用curve_fit()
函数拟合数据,得到了最佳拟合曲线。最后,我们使用plt.scatter()
函数绘制数据点,使用plt.plot()
函数绘制非线性最佳拟合曲线,并使用plt.legend()
添加图例。
6. 使用残差图评估拟合效果
除了绘制最佳拟合直线或曲线外,我们还可以通过绘制残差图来评估拟合效果。下面是一个示例代码,其中我们生成一组随机数据,并绘制残差图。
Output:
在上面的示例中,我们首先生成了一组随机数据,然后使用最小二乘法拟合直线,并计算了残差。最后,我们使用plt.scatter()
函数绘制了残差图,并使用plt.axhline()
函数绘制了零残差线,用于评估拟合效果。
7. 使用R方值评估拟合质量
除了残差图外,我们还可以使用R方值来评估拟合质量。R方值表示拟合模型对数据方差的解释程度,取值范围为0到1,值越接近1表示拟合效果越好。下面是一个示例代码,计算R方值并输出。
在上面的示例中,我们首先计算了总平方和和残差平方和,然后根据公式计算了R方值,用于评估拟合模型的质量。
结语
在本文中,我们介绍了如何使用matplotlib库绘制最佳拟合直线,涵盖了简单线性回归、多项式拟合、自定义拟合函数、加权拟合、非线性拟合等多种情况。通过这些示例代码,希望读者能够更好地理解如何使用matplotlib库进行数据可视化和拟合分析。如果想要深入了解更多细节,可以查阅matplotlib官方文档或其他相关资料。