Verwendung von curve_fit passen Daten

Ich bin neu in scipy und matplotlib, und ich habe versucht, fit-Funktionen auf die Daten. Das erste Beispiel in der Scipy Kochbuch funktioniert fantastisch, aber wenn ich versuche es mit Punkten aus einer Datei gelesen, die ersten Koeffizienten gebe ich (p0 unten) scheinen nie zu ändern, und die Kovarianz-matrix ist immer INF.

Ich habe versucht zu passen, auch die Daten nach einer Zeile, ohne Erfolg. Ist es ein problem mit der Art und Weise ich die Daten zu importieren? Wenn ja, gibt es einen besseren Weg, es zu tun?

import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import scipy as sy

with open('data.dat') as f:
    noms = f.readline().split('\t')

    dtipus = [('x', sy.float32)] + [('y', sy.float32)]

    data = sy.loadtxt(f,delimiter='\t',dtype=dtipus)

    x = data['x']
    y = data['y']

    def func(x, a, b, c):
        return a*x**b + c

    p0 = sy.array([1,1,1])

    coeffs, matcov = curve_fit(func, x, y, p0)

    yaj = func(x, coeffs[0], coeffs[1], coeffs[2])

    print(coeffs)
    print(matcov)

    plt.plot(x,y,'x',x,yaj,'r-')
    plt.show()

Dank!

InformationsquelleAutor Ironil | 2012-06-01

Schreibe einen Kommentar