python - 如何从 Numpy 的 polyfit 推导出方程?

标签 python numpy

给定一个 x 和 y 值数组,以下代码将计算这些数据点的回归曲线。

# calculate polynomial
z = np.polyfit(x, y, 5)
f = np.poly1d(z)

# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)

plt.plot(x,y,'o', x_new, y_new)
plt.xlim([x[0]-1, x[-1] + 1 ])
plt.show()

我如何使用上面的公式推导出这条曲线的实际方程?

最佳答案

如果要显示方程式,可以使用sympy输出latex:

from sympy import S, symbols, printing
from matplotlib import pyplot as plt
import numpy as np

x=np.linspace(0,1,100)
y=np.sin(2 * np.pi * x)

p = np.polyfit(x, y, 5)
f = np.poly1d(p)

# calculate new x's and y's
x_new = np.linspace(x[0], x[-1], 50)
y_new = f(x_new)

x = symbols("x")
poly = sum(S("{:6.2f}".format(v))*x**i for i, v in enumerate(p[::-1]))
eq_latex = printing.latex(poly)

plt.plot(x_new, y_new, label="${}$".format(eq_latex))
plt.legend(fontsize="small")
plt.show()

结果:

enter image description here

关于python - 如何从 Numpy 的 polyfit 推导出方程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39801403/

相关文章:

python - 使用 pip 安装多个版本的包

python - 检测图像中的漫画对话气泡区域

python - 为什么 UnicodeEncodeError 只在 emacs 的 python shell 中引发?

python - 使用 Python 编辑 Parquet 文件会导致日期时间格式错误

python - 为什么 numpy.allclose 使用非对称比较?

python - 在数组中找到最 "empty"的地方

python - 如何将文件列表的名称从同一文件夹中的同一numpy文件中按顺序排列?

python - 返回既为零又不为零的未屏蔽元素的索引

python - 如何检查 GUI 应用程序是否在 Ubuntu 上运行?

python - 通过Python读取.nc文件