对this question的公认回答
提供了
您只需将x和y点的数组以及所需的拟合度(顺序)传递到multipolyfit。这将返回系数,然后可以使用numpy的polyval绘制。
注意:下面的代码已修改为进行多变量拟合,但绘图图像是早期非多变量答案的一部分。import numpy
import matplotlib.pyplot as plt
import multipolyfit as mpf
data = [[1,1],[4,3],[8,3],[11,4],[10,7],[15,11],[16,12]]
x, y = zip(*data)
plt.plot(x, y, 'kx')
stacked_x = numpy.array([x,x+1,x-1])
coeffs = mpf(stacked_x, y, deg)
x2 = numpy.arange(min(x)-1, max(x)+1, .01) #use more points for a smoother plot
y2 = numpy.polyval(coeffs, x2) #Evaluates the polynomial for each x2 value
plt.plot(x2, y2, label="deg=3")
注意:这是之前答案的一部分,如果没有多元数据,它仍然是相关的。使用coeffs = numpy.polyfit(x,y,3),而不是coeffs = mpf(...
对于非多元数据集,最简单的方法可能是使用numpy的^{}:numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
Least squares polynomial fit.
Fit a polynomial p(x) = p[0] * x**deg + ... + p[deg] of degree deg to points (x, y). Returns a vector of coefficients p that minimises the squared error.