カーブフィッティング用の汎用オブジェクトを作成したいと考えています。パラメータ名、値、境界を定義しています。場合によっては、着信データを使用して関数(最小、最大など)を使用して境界を定義するのに役立ちます。ここで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))
私は私の下限、および1.025として、私の推測として0.975 * np.min(データを)np.min(データ)を使用しようとしています* NP私の上限として.min(データ)。
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
)
は、私は次のエラーを取得する:機能0.975*np.min
はなく0.975*np.min(data)
に数学をやろうとしていますので、理にかなってTypeError: unsupported operand type(s) for *: 'float' and 'function'
。
この動作を実装する最も良い方法は何ですか?もしあれば?
完全に動作します。ありがとう。 – nven