使用python最大化多参数求和

使用python最大化多参数求和,python,optimization,scipy,minimize,Python,Optimization,Scipy,Minimize,我试图用双组分混合威布尔分布拟合风数据集v=v1,…,vm 我发现一篇论文建议使用最大似然法,尤其是最大化以下等式: ω、a1、a2、b1和b2是我想要改变的参数,以最大化功能,v=v1,…,vm是一系列已知风速 我一直在尝试使用SciPy最小化算法,但没有成功 以下是我到目前为止的情况: def minimizer_function(v,omega,a1,b1,a2,b2): return np.reciprocal(np.sum((omega*(a1/b1)*((v/b1)**(a1-

我试图用双组分混合威布尔分布拟合风数据集v=v1,…,vm

我发现一篇论文建议使用最大似然法,尤其是最大化以下等式:

ω、a1、a2、b1和b2是我想要改变的参数,以最大化功能,v=v1,…,vm是一系列已知风速

我一直在尝试使用SciPy最小化算法,但没有成功

以下是我到目前为止的情况:

def minimizer_function(v,omega,a1,b1,a2,b2):
   return np.reciprocal(np.sum((omega*(a1/b1)*((v/b1)**(a1-1))*(np.exp(-((v/b1)**a1)))+(1-omega)*(a2/b2)*((v/b2)**(a2-1))*(np.exp(-((v/b2)**a2))))))

x0 = np.array([0.5,1.0,1.0,1.0,1.0])
res = optimization.minimize(minimizer_function, x0, method='nelder-mead',options={'xtol': 1e-8, 'disp': True})
但是,我不断得到以下错误:

minimizer_函数缺少5个必需的位置参数:“omega”、“a1”、“b1”、“a2”和“b2”


我很确定我遗漏了什么。

scipy最小化函数期望变量存储在单个一维数组中。在您的例子中,目标函数应该类似于极小值函数x,v,其中x是包含ω、a1、b1、a2和b2的五个元素的数组。就是说,

def minimizer_function(x, v):
   omega, a1, b1, a2, b2 = x
   return np.reciprocal(np.sum((omega*(a1/b1)*((v/b1)**(a1-1))*(np.exp(-((v/b1)**a1)))+(1-omega)*(a2/b2)*((v/b2)**(a2-1))*(np.exp(-((v/b2)**a2))))))
x0 = np.array([0.5,1.0,1.0,1.0,1.0])
res = optimization.minimize(minimizer_function, x0, args=(v,), method='nelder-mead',options={'xtol': 1e-8, 'disp': True})
最小化的调用类似于

def minimizer_function(x, v):
   omega, a1, b1, a2, b2 = x
   return np.reciprocal(np.sum((omega*(a1/b1)*((v/b1)**(a1-1))*(np.exp(-((v/b1)**a1)))+(1-omega)*(a2/b2)*((v/b2)**(a2-1))*(np.exp(-((v/b2)**a2))))))
x0 = np.array([0.5,1.0,1.0,1.0,1.0])
res = optimization.minimize(minimizer_function, x0, args=(v,), method='nelder-mead',options={'xtol': 1e-8, 'disp': True})

你好,沃伦,非常感谢你调查此事。它现在运行,值看起来很奇怪,但我可能仍然缺少一些关于如何最大化函数的建议?目前我正在最小化函数的abs的倒数