7

数値 x、y、z の 3 タプルのリストを生成する Python コードがあります。scipy curve_fit を使用して z= f(x,y) に適合させたいと思います。ここにいくつかの非動作コードがあります

A = [(19,20,24), (10,40,28), (10,50,31)]

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

この関数をリスト内のデータに適合させるにはどうすればよいAですか?

4

1 に答える 1

14
  • の最初の引数funcはデータ (x と y の両方) でなければなりません。
  • funcパラメータを表す残りの引数。

funcしたがって、少し変更する必要があります。

def func(data, a, b):
    return data[:,0]*data[:,1]*a + b

  • の最初の引数curve_fitは関数です。
  • 2 番目の引数は、独立data(xおよびy1 つの配列の形式) です。
  • 3 番目の引数は依存データ ( z) です。
  • 4 番目の引数は、パラメーター (この場合はa and ) の値の推測です。b

たとえば、次のようになります。

params, pcov = optimize.curve_fit(func, A[:,:2], A[:,2], guess)

import scipy.optimize as optimize
import numpy as np

A = np.array([(19,20,24), (10,40,28), (10,50,31)])

def func(data, a, b):
    return data[:,0]*data[:,1]*a + b

guess = (1,1)
params, pcov = optimize.curve_fit(func, A[:,:2], A[:,2], guess)
print(params)
# [ 0.04919355  6.67741935]
于 2013-03-14T15:29:20.963 に答える