2

モデルをいくつかのデータに適合させようとしています。独立変数は と と呼ばAB、Pandas DataFrame の列です。yデータフレームに対して2つのパラメーターを合わせようとしています。

以前は、curve_fitScipy から次のことができました。

def fun(X, p1, p2):
  A, B = X
  return np.exp(p1*A) + p2*B

X = (df['A'].tolist(), df['B'].tolist())
popt, pcov = curve_fit(fun, X, df['y'].tolist())

しかし今、私は を使用してlmfitいます。ここでは、 のように独立変数を単純に「パック」することはできませんcurve_fit

def fun(A, B, p1 = 1, p2 = 1):
  return np.exp(p1*A) + p2*B

model = Model(fun, independent_vars=['A', 'B'])

ここはどうやって走るのmodel.fit()FAQはあまり役に立ちません。そもそも何をフラット化する必要があるのでしょうか?

4

2 に答える 2

1

2 つの独立変数を使用して、完全に機能する例を作成しました。

import pandas as pd
import numpy as np
from lmfit import Model

df = pd.DataFrame({
  'A'      : pd.Series([1, 1, 1, 2, 2, 2, 2]),
  'B'      : pd.Series([5, 4, 6, 6, 5, 6, 5]),
  'target' : pd.Series([87.79, 40.89, 215.30, 238.65, 111.15, 238.65, 111.15])
})

def fun(A, B, p1 = 1, p2 = 1):
  return p1 * np.exp(A) + p2 * np.exp(B)

model = Model(fun, independent_vars=['A', 'B'])
fit = model.fit(df['target'], A = df['A'], B = df['B'])

トリックは、すべての変数をキーワード引数として指定することですfit()

于 2015-09-23T08:32:48.927 に答える