Python: Использование scipy оптимизировать сворачивание не сворачивает функцию - PullRequest
1 голос
/ 11 марта 2020

Я новичок в Python, и я пытаюсь понять, как все работает. У меня есть небольшая проблема с функцией минимизации пакета scipy.optimize. Я пытаюсь свести к минимуму заданную функцию с некоторыми начальными значениями, но python дает мне очень высокие значения параметров. Это мой простой код:

import numpy as np
from scipy.optimize import minimize
global array
y_wert = np.array([1,2,3,4,5,6,7,8])
global x_wert
x_wert = np.array([1,2,3,4,5,6,7,8])
def Test(x):
    Summe = 0
    for i in range(0,len(y_wert)):
        Summe = Summe + (y_wert[i] - (x[0]*x_wert[i]+x[1]))
    return(Summe)
x_0 = [1,0]
xopt = minimize(Test,x_0, method='nelder-mead',options={'xatol': 1e-8, 'disp': True})
print(xopt)

Если я запускаю этот скрипт, наилучшими параметрами являются:

[1.02325529e+44, 9.52347084e+40]

, которые действительно не решают эту проблему. Я также пробую несколько отличающиеся начальные значения, но это не решает мои проблемы. Может ли кто-нибудь дать мне понять, в чем заключается моя ошибка? Большое спасибо за вашу помощь!

1 Ответ

1 голос
/ 11 марта 2020

Ваша тестовая функция - это, по сути, прямая линия с отрицательным градиентом, поэтому минимума нет, это бесконечно убывающая функция, которая объясняет ваши большие результаты, вместо этого попробуйте что-то вроде x в квадрате

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...