私はscipyとmatplotlibを初めて使いました。私は関数をデータに適合させようとしています。 Scipy Cookbookの最初の例は非常にうまくいきますが、ファイルから読み込んだ点で試してみると、私が与える最初の係数(以下のp0)は決して実際には変化していないようで、共分散行列は常にINFです。データにフィットするcurve_fitの使用
私は、ラインの後のデータでさえ、無駄にするように試みました。私はデータをインポートする方法に問題がありますか?もしそうなら、もっと良い方法がありますか?
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()
ありがとうございます!
はい、ありがとうございます! loadtxtだけでデータをロードすると、それが作成されました。私はそれを難しい方法でやろうとしていたようだが、何がうまくいかないかを調査し続ける。 – Ironil