数据拟合的相关函数(图像及应用实例 )- 基于python
本文提到的、的数学拟合需要基于numpy
这个库,而为了将拟合更加直观的展示出来,用于绘图的matplotlib
也是必要的,如果有想要跟着本文这些不值一提的思路去尝试实现的读者,需要预先安装这两个库。
本教程较为基础,因为笔者也是初学,只是做整理工作而已,因此在正式介绍拟合函数相关的内容之前有一些前置的会用到的函数说明,读者亦可跳过,直接前往拟合函数,有不熟悉的再往前翻阅亦可。
其他函数
numpy.linspace(start, end, number)
& numpy.arange(start, end, step)
numpy.linspace
这个函数可以生成相等间隔的数组(等差数列),几个参数分别是首项,尾项和项数,还有一些其他参数包括是否包括尾项、是否返回步长等等,可自行了解。
numpy.arange
这个函数和numpy.linspace
非常相像,前两个参数都是首项和尾项,只不过对于numpy.linspace
来说,第三个参数是项数,而numpy.arrange
的第三个系数是公差。另外numpy.linspace
是默认包括尾项的,numpy.arange
是默认不包括尾项的。
import numpy as np
print(np.linspace(1,5,5)) # [1,2,3,4,5]
print(np.arange(1,5,1)) # [1,2,3,4]
绘图函数
matplotlib.pyplot.scatter (x,y,c=None,marker =None)
作为一个绘图函数,matplotlib.pyplot.plot ()
可以绘制散点图,这个函数有非常多的样式方面的自定义项,包括颜色、透明度、色彩映射等等,我们只选取颜色和散点形状讲解(大部分时候用于绘图时候的区分是足够了)
x
和y
是横纵坐标c
是颜色,颜色可以用很多方式去声明,我们不需要颜色特别的精确,直接用特征字符串(‘red’ , ‘green’ 等)去声明就足够了marker
是点的形状,常用的有(’o’ , ‘x’ , ‘+’ ,‘*’)他们的形状就像他们看到的那样
举例:简单散点图
import numpy as np
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 2, 2, 2, 2]
plt.scatter(x, y, c='red', marker='x')
y = [1, 1, 1, 1, 1]
plt.scatter(x, y, c='green', marker='o')
plt.show()
举例:随机散点图
也可以随机的生成一些散点
import numpy as np
import matplotlib.pyplot as plt
# 随机数组
x = np.random.rand(30)
y = np.random.rand(30)
plt.scatter(x,y,marker='*')
plt.show()
matplotlib.pyplot.plot ()
绘制折线图,只需要横纵坐标的值就可以画出折线图,本质是折线图了,因为是把点和点连在一起,但是只要点取得密集一点就可以了
例子 :不同描点密度的正弦函数
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0,3*np.pi,0.1)
y = np.sin(x)
x_2 = np.arange(0,3*np.pi,0.75)
y_2 = np.sin(x_2)
# 意思是把画板分成两行一列,这个子面板占据第一列
plt.subplot(2,1,1)
plt.plot(x,y,color = 'blue',label = 'step = 0.1')
plt.legend()
# 意思是把画板分成两行一列,这个子面板占据第二列
plt.subplot(2,1,2)
plt.plot(x_2,y_2,color = 'red',label = 'step = 0.75')
plt.legend()
plt.show()
拟合函数
numpy.polyfit (x, y, deg) -> List
该函数可以根据一组数据来拟合多项式曲线,其中
x
和y
是数据的横纵坐标,可以是任何以整形或浮点型为数据的可迭代对象,常用的有列表list
和np.array
deg
是多项式次数
另有: