Menu
×
   ❮   
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": 布尔值 - 打印详细描述
     "gtol": 数字 - 误差的容差
  }

示例

使用 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)
自己试试 »


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.