Star_Gazer
Star_Gazer

Reputation: 21

Curve fitting a large data set

Right now, I'm trying to fit a curve to a large set of data; there are two arrays, x and y, each with 352 elements. I've fit a polynomial to the data, which works fine:

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)

But I need a more accurately optimized curve, so I've been trying to fit a curve with scipy. Here's the code that I have so far:

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)

But all it returns is this:

ValueError: Unable to determine number of fit parameters.

How can I get this to work? (Or how can I fit a curve to this data?)

Upvotes: 2

Views: 2669

Answers (1)

tillsten
tillsten

Reputation: 14878

Your fit function does not make sense, it takes no parameter to fit.

Curve fit uses a non-linear optimizer, which needs a initial guess of the fitting parameters. If no guess is given, it tries to determine number of parameters via introspection, which fails for your function, and set them to one (something you almost never want.)

Upvotes: 3

Related Questions