【问题标题】:Multiple Parameter Estimation. Problems with broadcasting多参数估计。广播问题
【发布时间】:2016-01-19 09:55:07
【问题描述】:

我需要使用非线性最小二乘回归来获取参数(kf、beta1、beta2、gamma)。 错误信息是: "ValueError: 操作数不能与形状 (4,7) (0,) 一起广播"

我用收集到的下一个数据做了 4 次实验:

  • flujo_ms(x-axis Data):一个有 7 个位置的数组
  • “fri”:每个“fri”是一个包含 7 个位置的数组。
  • brfv:采用四个常数值,每个实验一个常数。

我想通过四个实验一起最小化参数估计的误差。

import numpy as np
from scipy.optimize import leastsq

flux = [flujo_ms, flujo_ms, flujo_ms, flujo_ms]
brfv = [[0.00694] * 7, [0.00972] * 7, [0.0139] * 7, [0.0208]*7]
fr = [fr1, fr2, fr3, fr4]


def foulingRate(parameters, flux, brfv, mlts=8.22):
    kf, beta1, beta2, gamma = parameters
    FR = kf * np.exp(flux * (beta1 * brfv + beta2 * mlts + gamma))
    return FR


def objective(pars, yData, xData, brfv):
    # it will minimize this function
    err = yData - foulingRate(pars, xData, brfv)
    return err

x0 = [5.6 * 10 ** -4, -2.48 * 10 ** 8, 5.1 * 10 ** 4,
      2.81 * 10 ** 6]  # initial values for the parameters

plsq = leastsq(objective, x0, args=(fr, flux, brfv))
print("Fitted parameters = {0}".format(plsq[0]))

【问题讨论】:

标签: python numpy scipy least-squares array-broadcasting


【解决方案1】:

我找到了解决方案。我使用了模块 lmfit:cars9.uchicago.edu/software/python/lmfit

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2014-08-09
    • 2020-07-21
    相关资源
    最近更新 更多