菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SciPy 优化器


SciPy 中的优化器

优化器是 SciPy 中定义的一组过程,它们可以找到函数的最小值或方程的根。


优化函数

本质上,机器学习中的所有算法都只是一个需要通过给定数据来最小化的复杂方程。


方程的根

NumPy 能够找到多项式和线性方程的根,但它无法找到线性方程的根,例如这个方程:

x + cos(x)

为此,您可以使用 SciPy 的 optimize.root 函数。

此函数需要两个必需参数

fun - 表示方程的函数。

x0 - 根的初始猜测值。

该函数返回一个包含解决方案信息的对象。

实际解决方案在返回对象的 x 属性下给出

示例

求方程 x + cos(x) 的根

from scipy.optimize import root
from math import cos

def eqn(x)
  return x + cos(x)

myroot = root(eqn, 0)

print(myroot.x)
自己动手试一试 »

注意:返回的对象包含有关解决方案的更多信息。

示例

打印有关解决方案的所有信息(不仅仅是根 x

print(myroot)
自己动手试一试 »


最小化函数

在此上下文中,函数表示一个曲线,曲线有高点低点

高点称为最大值

低点称为最小值

整个曲线的最高点称为全局最大值,而其余点称为局部最大值

整个曲线的最低点称为全局最小值,而其余点称为局部最小值


寻找最小值

我们可以使用 scipy.optimize.minimize() 函数来最小化函数。

minimize() 函数接受以下参数

fun - 表示方程的函数。

x0 - 根的初始猜测值。

method - 要使用的方法的名称。合法值
    'CG'
    'BFGS'
    'Newton-CG'
    'L-BFGS-B'
    'TNC'
    'COBYLA'
    'SLSQP'

callback - 在每次优化迭代后调用的函数。

options - 定义额外参数的字典

{
     "disp": boolean - 打印详细说明
     "gtol": number - 误差容差
  }

示例

使用 BFGS 最小化函数 x^2 + x + 2

from scipy.optimize import minimize

def eqn(x)
  return x**2 + x + 2

mymin = minimize(eqn, 0, method='BFGS')

print(mymin)
自己动手试一试 »


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持