首页 > 解决方案 > 如何使用 scipy.optimize.minimize 从数组中最小化 SSE?

问题描述

我正在尝试从头开始为债券收益率曲线做三次样条。我有三个功能cubic_func market_valuesse

def cubic_func(t,a,b,c,d):
    return a*(t**3)+b*(t**2)+c*t + d

def market_value(t, y):
    return math.exp(-y*t/12)

def cal_sse(param):
    t, y, a, b, c, d = param[0], param[1], param[2], param[3], param[4], param[5]
    model = cubic_func(t, a, b, c, d)
    market = market_value(t, y)
    return (market - model)**2

我需要cal_sse通过找到合适的值来最小化函数a,b,c,d。我试过了

initial_guess = [1,1,1,1,1,1]
result = minimize(obj, initial_guess)
result.x
# result.x give array([0.03589394, 0.9864572 , 0.81598281, 0.81627056, 0.82279686, 0.96643035])

我的情况是那个变量y并且t是两个数组。我想最小化 y 和 t 中的所有值,并为每个a,b,c,d. 另外,我不需要更改yand的值t。我不明白为什么result.x还要为 y 和 t 赋值。

我应该如何解决这个问题?

标签: pythonscipy-optimize

解决方案


推荐阅读