现在,我正在尝试将曲线拟合到大量数据中;有两个数组,x和y,每个都有352个元素。我已经将多项式拟合到数据中,这很好用:
import numpy as np
import matplotlib.pyplot as plt
coeff=np.polyfit(x, y, 20)
coeff=np.polyfit(x, y, 20)
poly=np.poly1d(coeff)
但是我需要一条更精确优化的曲线,所以我一直在尝试用scipy拟合曲线。这是我到目前为止的代码:
import numpy as np
import scipy
from scipy import scipy.optimize as sp
coeff=np.polyfit(x, y, 20)
coeff=np.polyfit(x, y, 20)
poly=np.poly1d(coeff)
poly_y=poly(x)
def poly_func(x): return poly(x)
param=sp.curve_fit(poly_func, x, y)
但它返回的是:
ValueError: Unable to determine number of fit parameters.
我怎样才能让它发挥作用? (或者我如何为这些数据拟合曲线?)
答案 0 :(得分:3)
你的拟合函数没有意义,它不需要参数。
曲线拟合使用非线性优化器,需要初始猜测拟合参数。 如果没有给出猜测,它会尝试通过内省来确定参数的数量,这对你的函数来说是失败的,并将它们设置为一个(你几乎不需要的东西。)