Scipy optimize: ошибка при попытке поставить функцию для минимизации - PullRequest
0 голосов
/ 12 февраля 2020

Я хочу найти минимальное значение функции с помощью scipy.optimize.minimize_scalar

Функция:

def error(w0, w1):
    dataset = data
    total_error = 0
    for i in range(1, 25000):
        meta = dataset['Height'][i] - ((w0 + w1 * dataset['Weight'][i]))**2
        total_error = total_error + meta
    return total_error

Я хочу w0 = 50 и w1 = [-5,5] Как я при попытке поставить функцию под метод scipy я вижу разные ошибки:

res = minimize_scalar(error)
TypeError: error() missing 1 required positional argument: 'w1'
w0 = 50
w1 = 0
res = minimize_scalar(error (w0, w1))
'numpy.float64' object is not callable
w0 = 50
w1 = range(-5,5)
res = minimize_scalar(error, w0, w1)
TypeError: object of type 'int' has no len()

1 Ответ

1 голос
/ 12 февраля 2020

Ключом к проблемам оптимизации является разграничение ваших переменных и их использование. Также целесообразно ссылаться на документы и использовать правильные метки переменных при вызове функции. Основываясь на документах , это должно сработать:

from scipy.optimize import minimize_scalar

def error(x, w0):
    dataset = data
    total_error = 0
    for i in range(1, 25000):
        meta = dataset['Height'][i] - ((w0 + x * dataset['Weight'][i]))**2
        total_error = total_error + meta
    return total_error

res = minimize_scalar(fun=error, bounds=(-5, 5), args=(50,))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...