Ich bin neu zu scipy und matplotlib, und ich habe versucht, Funktionen zu Daten anzupassen. Das erste Beispiel in der Scipy Cookbook funktioniert fantastisch, aber wenn ich es mit Punkten aus einer Datei versuche, scheinen die anfänglichen Koeffizienten I (p0 unten) sich nie wirklich zu ändern, und die Kovarianzmatrix ist immer INF.Verwendung von curve_fit, um Daten anzupassen
Ich habe versucht, sogar Daten nach einer Zeile passen, vergeblich. Ist es ein Problem mit der Art, wie ich die Daten importiere? Wenn ja, gibt es einen besseren Weg dazu?
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()
Vielen Dank!
Ja, danke! Das Laden der Daten mit nur loadxtxt hat es geschafft. Es scheint, dass ich versucht habe, es auf die harte Art zu tun, aber ich werde weiter untersuchen, was falsch lief. – Ironil