2015-09-22 3 views
1

Я пытаюсь подгонять модель к некоторым данным. Независимые переменные называются A и B, и они являются столбцами в Pandas DataFrame. Я пытаюсь соответствовать двум параметрам в отношении y в фрейме данных.Использование нескольких независимых переменных в Python lmfit

Ранее, с curve_fit из SciPy, я мог бы сделать:

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 не очень полезен - что мне нужно сгладить в первую очередь?

ответ

1

Я создал полный, рабочий пример с двумя независимыми переменными:

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().

 Смежные вопросы

  • Нет связанных вопросов^_^