Я ищу для создания общего объекта для подгонки кривой, где я определяю имена параметров, значения и границы. Иногда я хочу использовать входящие данные для определения границ с помощью функции (мин, макс и т. Д.).Объявление функции в списке параметров в python
Вот объект:
class CurveFitObject(object):
def __init__(self,paramList,growthEquation):
self.paramList = paramList
self.gmod = Model(growthEquation)
def calcCurveFit(data):
for param in self.paramList:
self.gmod.set_param_hint(self.paramList['name'],
value=self.paramList['value'](data),
min=self.paramList['min'](data),
max=self.paramList['max'](data))
Здесь я пытаюсь использовать np.min (данные), как моя догадка, 0,975 * np.min (данные), как моя нижняя граница, и 1,025 * н.п. .min (data) как моя верхняя граница.
def growthEquation(self, t, A): return A
keys = ['name','guess','min','max','vary']
logisticGrowth = CurveFitObject(
[dict(zip(keys,['A',np.min,0.975*np.min,1.025*np.min,True])),
growthEquation
)
Я получаю следующее сообщение об ошибке: TypeError: unsupported operand type(s) for *: 'float' and 'function'
, которая имеет смысл, поскольку он пытается сделать математику на функции 0.975*np.min
, а не 0.975*np.min(data)
.
Каков наилучший способ реализации этого поведения? Если есть?
Работает отлично. Благодарю. – nven