【问题标题】:How to pass independent variable as parameter to lmfit minimize如何将自变量作为参数传递给 lmfit 最小化
【发布时间】:2019-11-24 21:33:34
【问题描述】:

我是这个统计方面的新手。

所以对于 x 的某些值,我有一个数据集 y = f(x)。我想将此数据拟合到func,以便对于y 中的每个点,我都可以计算x 的值。

假设我想要拟合的模型类似于

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

现在要使用最小化功能,我必须定义参数:

params = Parameters()
params.add('a' , value = 10)
params.add('b' , value = 1)
params.add('c' , value = 2)
result = minimize(func, param, arg=(x, y))

我的问题是,如果我想将我的x 变量作为参数并将其作为参数传递怎么办。

基本上,当我将x 作为变量传递时,我传递的是一个与我的数据集中特定点相对应的数组。但是我想找到使用x 作为参数,因为我想为某些数据点y 找到x 的值。

【问题讨论】:

    标签: python minimize minimization lmfit


    【解决方案1】:

    参数和拟合变量是标量浮点数。也就是说,它们有一个值,可以取连续范围的值。

    您的意思是您希望x 的每个元素都独立地适应变化吗?

    通常使用最小化方法来拟合数据:找到变量的值集(例如,您的 abc),以使 y - func(x, a, b, c) 尽可能小。

    您不完整的代码 sn-p(要清楚,最好包含一个完整的示例总是更好)不会这样做 - 它不会将 y 传递给 func .

    更重要的是,您似乎正在寻找“为某些数据点 y 查找 x 的值”。这对我来说不太有意义......也许清理并澄清问题?

    【讨论】:

      【解决方案2】:

      这不是单向的步骤。

      我通过在lmfit 中使用Model 类实现了它

      考虑一下。

      我有一个模型函数,我命名为:MF,通过它我计算出原始数据的精确 samples

      我有原始数据:Raw_Data(例如来自传感器)

      那我有一定的parameters。 (x, y, z, 样本)

      现在我认为样本是independent variable

      我的目标是估计其中一个参数。

      首先我必须创建一个模型类

      mod = Model (MF, parameters, independant_vars = ['samples'] 
      

      然后您使用 Parameters() 类设置初始参数。

      并添加初始值

      fit_params = Parameters()
      fit_params.add('x', value = 170)
      fit_params.add('y', value = 120)
      fit_params.add('z', value = 110)
      

      然后你拟合模型

      Result - mod.fit(Raw_data, params = fit_params, samples = your_samples)
      

      输出是dict

      【讨论】:

      • 这是几个月前原始问题的延伸吗?我没有看到任何问题。我还看到一些有问题的陈述和一些可能是错误的事情。最好包含一个完整的、最少的代码并就此提出明确的广告直接问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-24
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多