Scipy优化定义初始猜测的问题

时间:2020-02-13 10:28:51

标签: python scipy

我想我对x0的定义不正确(初步猜测)

有了minimize的{​​{1}},我想找点乐子scipy.optimize,并希望error位于[-100,100]和?0之间[-5,5]。 起点–(?0,?1)=(0,0)。

功能

?1

问题

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

ValueError:x0的长度!=边界的长度

WTF

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

2 2

1 个答案:

答案 0 :(得分:0)

嘿,我转载了您的错误,我在这里也遇到了一些问题。但我认为我发现了主要问题:

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个边界,因为您的优化问题是2维的。您可以在输入数据点上为“ x轴”定义边界,也可以将输出包装或裁剪为边界“ bnds”。希望我能帮忙