Проблема с оптимизмом scipy, определяющим начальное предположение - PullRequest
0 голосов
/ 13 февраля 2020

Полагаю, я не прав при определении x0 (начальное предположение)

с minimize из scipy.optimize Я ищу минутку своего удовольствия error и хочу, чтобы ?0 быть между [-100, 100] и ?1 в [-5, 5]. Начальная точка– (?0, ?1) = (0, 0).

Функция

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

Задача

bnds = ((-100, 100), (-5, 5))
x0 = (0), (0)
res = minimize(error, (0), (0), method = "L-BFGS-B", bounds = bnds)

ValueError: длина x0! = Длина границ

WTF

print (len(x0))
print (len(bnds))

2 2

1 Ответ

0 голосов
/ 13 февраля 2020

Эй, я воспроизвел вашу ошибку, у меня также были некоторые проблемы здесь. Но я думаю, что нашел основную проблему:

from scipy.optimize import minimize
import numpy as np

def error(w0,w1):
    dataset = np.array([1,2,3,4,5,6,777,7,77,7,7,7])
    total_error = 0
    for i in range(1, 10):
        total_error = total_error + (dataset[i] - (w0+ w1 * dataset[i]))**2
    return total_error


x0 = np.array([[12],[22]])

res =minimize(error, x0[0],x0[1], method = "L-BFGS-B",bounds=[[0,10]])

Вы можете просто выбрать 2 границы, потому что ваша задача оптимизации является двухмерной. Вы определяете свои границы для своей «оси X» над входными точками данных, и вы можете просто обернуть или обрезать выходные данные до ваших «границ». Надеюсь, я смогу помочь

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