Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

SciPy Python을 사용하여 Nelder-Mead 알고리즘을 구현하는 방법을 설명하시겠습니까?

<시간/>

SciPy 라이브러리는 복잡한 과학적 계산을 빠르고 효율적으로 수행하는 데 사용할 수 있습니다. Nelder-Mead 알고리즘은 단순 검색 알고리즘이라고도 합니다.

매개변수 추정 문제 및 통계 문제를 해결하는 데 사용할 수 있는 최고의 알고리즘 중 하나로 간주됩니다. 함수 값이 불확실하거나 관련된 노이즈가 많은 상황에서 이 알고리즘을 사용하는 것과 관련이 있습니다.

이 알고리즘은 통계에서 자주 발생하는 불연속 함수를 사용하는 데에도 사용할 수 있습니다. 간단한 알고리즘이며 이해하기 쉽습니다. 다차원 비제약 최적화의 경우 비선형 함수의 매개변수를 최소화하는 데 사용됩니다.

시간이 오래 걸릴 수 있으므로 이 알고리즘을 사용하여 최적의 기울기 값을 찾는 것은 권장하지 않습니다.

예를 들어 보겠습니다 -

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' 클래스에 있는 'minimize' 함수에 매개변수로 전달됩니다.

  • 이 출력은 콘솔에 표시됩니다.