解释如何使用SciPy Python实现Nelder-Mead算法?
SciPy库可用于快速、高效地执行复杂的科学计算。Nelder-Mead算法也称为简单搜索算法。
它被认为是可以用于解决参数估计问题和统计问题的最佳算法之一。适用于在函数值不确定或与之相关的噪声很大的情况下使用该算法。
该算法也可以用于处理在统计学中经常出现的不连续函数。它是一种简单的算法,也很容易理解。用于在多维无约束优化的情况下将非线性函数的参数最小化。
建议不要使用该算法来查找最优梯度值,因为这可能需要很长一段时间。
让我们看一个例子−
更多Python相关文章,请阅读:Python 教程
示例
import numpy as np
from scipy.optimize import minimize
def f(x):
return .6*(1 - x[0])**2
scipy.optimize.minimize(f, [2, -1], method="Nelder-Mead")
输出
final_simplex: (array([[ 1. , -1.27109375],
[ 1. , -1.27118835],
[ 1. , -1.27113762]]), array([0., 0., 0.]))
fun: 0.0
message: 'Optimization terminated successfully.'
nfev: 147
nit: 69
status: 0
success: True
x: array([ 1. , -1.27109375])
解释
-
导入所需的库。
-
定义一个函数” f “,该函数以一个值为参数,对其进行数学计算。
-
在函数定义外调用’ f ‘函数以计算结果。
-
将此函数作为参数传递给“scipy”库的“optimize”类中的“最小化”函数。
-
在控制台上显示此输出。